A operação CreateCnameToken gera o token de CNAME necessário para verificar a propriedade de um nome de domínio. Use o parâmetro wildcard para definir se o token será criado para um CNAME exato ou para um CNAME curinga.
Observações de uso
Por padrão, um token de CNAME expira 72 horas após a criação. Se você chamar esta operação novamente enquanto um token de CNAME existente ainda estiver válido, o sistema retornará esse token.
Para um Agentic Bucket, o parâmetro
wildcardé obrigatório:wildcard=truecria um token para um CNAME curinga, enquantowildcard=falsecria um token para um CNAME exato. Não omita este parâmetro nem o deixe em branco.Para buckets padrão, chame esta operação da mesma forma que as operações OpenAPI de CNAME do OSS existentes para criar um token destinado a um CNAME exato. Nenhum parâmetro adicional é necessário.
Sintaxe da solicitação
POST /?cname&comp=token&wildcard=true HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Content-Type: application/xml
Content-Length: 186
Date: GMT Date
Authorization: SignatureValue
<BucketCnameConfiguration>
<Cname>
<Domain>example.com</Domain>
</Cname>
</BucketCnameConfiguration>
Cabeçalhos da solicitação
Esta operação usa apenas Common HTTP headers.
Parâmetros da solicitação
Parâmetro | Tipo | Obrigatório | Exemplo | Descrição |
wildcard | String | Bucket padrão: Não Agentic Bucket: Sim | true | Define se deve ser criado um token para um CNAME curinga. Valores válidos:
Para um Agentic Bucket, este parâmetro é obrigatório e deve ser definido explicitamente como true ou false. Não o omita nem o deixe em branco. Para um bucket padrão, este parâmetro é opcional e tem false como valor padrão. |
A tabela a seguir descreve os valores válidos do parâmetro wildcard para cada tipo de bucket.
|
Tipo de bucket |
Parâmetro omitido |
wildcard=false |
wildcard=true |
|
Bucket padrão |
Permitido. Um token é criado para um CNAME exato. |
Permitido. Um token é criado para um CNAME exato. |
Não permitido |
|
Agentic Bucket |
Não permitido |
Permitido. Um token é criado para um CNAME exato. |
Permitido. Um token é criado para um CNAME curinga. |
O token para o mesmo par (bucket, CNAME) abrange tanto o escopo exato quanto o escopo curinga.
Elementos da solicitação
Elemento | Tipo | Obrigatório | Exemplo | Descrição |
BucketCnameConfiguration | Container | Sim | N/A | O container onde a configuração de CNAME é armazenada. Nós pai: nenhum Nós filho: Cname |
Cname | Container | Sim | N/A | O container onde as informações de CNAME são armazenadas. Nó pai: BucketCnameConfiguration Nós filho: Domain |
Domain | String | Sim | example.com | O nome de domínio personalizado. Para criar um token para um CNAME exato, defina este elemento com o nome de domínio completo, como console.example.com. Para criar um token para um CNAME curinga, defina este elemento com o nome de domínio base do domínio curinga sem o prefixo Nó pai: Cname Nós filho: nenhum |
Idempotência
A idempotência da operação CreateCnameToken varia conforme o tipo de bucket e depende se o CNAME já está mapeado para o bucket atual:
Bucket padrão: Se o CNAME já estiver mapeado para o bucket atual em qualquer estado diferente de excluído, o sistema retorna
NoNeedCreateCnameTokene não é necessário criar um token.Agentic Bucket: O sistema retorna
NoNeedCreateCnameTokenapenas se o nome de domínio base já estiver mapeado para o Agentic Bucket atual por meio de um CNAME do mesmo tipo.
Elementos da resposta
Elemento | Tipo | Exemplo | Descrição |
CnameToken | Container | N/A | O container onde o token de CNAME é armazenado. Nós pai: nenhum Nós filho: Bucket, Cname, Token e ExpireTime |
Bucket | String | examplebucket | O nome do bucket ao qual o CNAME está mapeado. Nó pai: CnameToken Nós filho: nenhum |
Cname | String | example.com | O nome do CNAME mapeado. Nó pai: CnameToken Nós filho: nenhum |
Token | String | be1d49d863dea9ffeff3df7d6455**** | O token de CNAME retornado pelo OSS. Nó pai: CnameToken Nós filho: nenhum |
ExpireTime | String | Wed, 23 Feb 2022 21:16:37 GMT | O horário de expiração do token de CNAME. Nó pai: CnameToken Nós filho: nenhum |
Exemplos
-
Exemplos de solicitações
-
Criar um token de CNAME para um bucket padrão
POST /?cname&comp=token HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Content-Type: application/xml Content-Length: 186 Date: Thu, 17 Apr 2025 15:39:12 GMT Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e <BucketCnameConfiguration> <Cname> <Domain>example.com</Domain> </Cname> </BucketCnameConfiguration> -
Criar um token de CNAME para um CNAME curinga de um Agentic Bucket
POST /?cname&comp=token&wildcard=true HTTP/1.1 Host: myab-$uid-$region-ab-apsr.oss-cn-hangzhou.aliyuncs.com Content-Type: application/xml Content-Length: 186 Date: Thu, 17 Apr 2025 15:39:12 GMT Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e <BucketCnameConfiguration> <Cname> <Domain>example.com</Domain> </Cname> </BucketCnameConfiguration> -
Criar um token de CNAME para um CNAME exato de um Agentic Bucket
POST /?cname&comp=token&wildcard=false HTTP/1.1 Host: myab-$uid-$region-ab-apsr.oss-cn-hangzhou.aliyuncs.com Content-Type: application/xml Content-Length: 186 Date: Thu, 17 Apr 2025 15:39:12 GMT Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e <BucketCnameConfiguration> <Cname> <Domain>console.example.com</Domain> </Cname> </BucketCnameConfiguration>
-
-
Exemplos de respostas
-
O token de CNAME foi criado com sucesso.
HTTP/1.1 200 OK x-oss-request-id: 5C1B138A109F4E405B2D Date: Mon, 26 Jul 2021 13:08:38 GMT Content-Length: 118 Content-Type: application/xml Connection: keep-alive Server: AliyunOSS <?xml version="1.0" encoding="UTF-8"?> <CnameToken> <Bucket>myab-$uid-$region-ab-apsr</Bucket> <Cname>example.com</Cname> <Token>be1d49d863dea9ffeff3df7d6455****</Token> <ExpireTime>Fri, 01 Aug 2026 03:00:00 GMT</ExpireTime> </CnameToken> -
A quantidade de tokens de CNAME excedeu o limite permitido.
HTTP/1.1 400 Bad Request x-oss-request-id: 5C1B138A109F4E405B2D Date: Mon, 26 Jul 2021 13:08:38 GMT Content-Length: 118 Content-Type: application/xml Connection: keep-alive Server: AliyunOSS <?xml version="1.0" encoding="UTF-8"?> <Error> <Code>TooManyCnameToken</Code> <Message>You have attempted to create more cname token than allowed.</Message> <RequestId>6215FD21DA0E27393F004E9E</RequestId> <HostId>127.0.0.1</HostId> <Bucket>examplebucket</Bucket> </Error>
-
SDKs do OSS
Os seguintes SDKs do OSS oferecem suporte à operação CreateCnameToken:
-
ossutil
Para obter informações sobre o comando do ossutil correspondente à operação CreateCnameToken, consulte create-cname-token.
Códigos de erro
Código de erro
Código de status HTTP
Descrição
InvalidArgument
400
Este erro pode ser retornado pelo seguinte motivo:
O elemento Domain contém caracteres inválidos, como o literal de nome de domínio curinga
*.example.com.
TooManyCnameToken
400
O número de tokens criados para o mesmo bucket excede o limite máximo permitido.
NoNeedCreateCnameToken
200
O CNAME já está mapeado para o bucket atual, portanto não é necessário criar um token. Para um bucket padrão, essa resposta ocorre quando o CNAME já está mapeado para o bucket atual em qualquer estado diferente de excluído. Para um Agentic Bucket, essa resposta é retornada apenas se o nome de domínio base já estiver mapeado para o Agentic Bucket atual por um CNAME do mesmo tipo.
MethodNotAllowed
405
O recurso de CNAME não está ativado para o tipo de bucket de destino.