Como posso resolver o erro “CNameAlreadyExists” ao criar um nome de domínio personalizado otimizado para borda para minha API do API Gateway?

4 minuto de leitura
0

Recebo um erro “CNameAlreadyExists” quando tento criar um nome de domínio personalizado otimizado para borda para minha API do Amazon API Gateway. Como posso resolver isso?

Breve descrição

O erro “CNameAlreadyExists” ocorre se:

  • O tipo de registro CNAME para seu nome de domínio personalizado já existe e aponta para uma distribuição do Amazon CloudFront.
  • Há uma distribuição do CloudFront configurada com um nome de domínio alternativo ou CNAME que corresponde ao seu nome de domínio personalizado.

Observação: não é incomum receber erros de “Excesso de solicitações” quando você faz várias atualizações personalizadas de nomes de domínio em um curto espaço de tempo. Esses erros ocorrem devido à baixa cota da API CreateDomainName (uma solicitação a cada 30 segundos por conta). Para obter mais informações, consulte Cotas do API Gateway para criar, implantar e gerenciar uma API.

Importante: você não pode usar o mesmo registro CNAME para mais de uma distribuição do CloudFront. Usar o mesmo registro CNAME retorna o seguinte erro:

One or more of the CNAMEs you provided are already associated with a different resource. (Service: AmazonCloudFront; Status Code: 409; Error Code: CNAMEAlreadyExists; Request ID: a123456b-c78d-90e1-23f4-gh5i67890jkl*

Para resolver esses erros e criar um nome de domínio personalizado otimizado para borda, você deve primeiro excluir o registro CNAME existente apontando para uma distribuição do CloudFront.

Resolução

Confirme se o nome de domínio personalizado existia anteriormente

  1. Para confirmar se o nome de domínio personalizado existia anteriormente, execute um comando de pesquisa de DNS sobre o nome de domínio.

Em sistemas Linux, Unix ou macOS:

dig abc.example.com +all

No Windows:

nslookup abc.example.com

Observação: substitua abc.example.com pelo seu nome de domínio.

  1. Se o nome de domínio personalizado já existia e seu registro DNS ainda estava lá, use dig para obter o registro CNAME na saída:
abc.example.comcom. 0        IN    CNAME    d27am47dhauq2.cloudfront.net.

Importante:

Você deve excluir esse registro antes de criar o nome de domínio personalizado.

  • É uma prática recomendada modificar primeiro as configurações de DNS em um ambiente de desenvolvimento ou teste. A modificação manual das configurações de DNS de produção pode causar tempo de inatividade.
  • Se a saída mostrar um registro A (endereço IPv4) em vez de um registro CNAME, você deverá atualizar o registro. O registro atualizado deve apontar o nome de domínio personalizado (alias A) para a distribuição do CloudFront.

Se um dig ou nslookup for feito no nome de domínio e o registro for um alias A, verifique a distribuição do CloudFront. Verifique se a distribuição do CloudFront não está configurada com um nome de domínio alternativo. Para obter mais informações, consulte Comparação de registros de alias e CNAME.

Exclua o registro CNAME ou atualize sua distribuição do CloudFront

Execute uma ou ambas as ações a seguir, dependendo da sua configuração:

Se você tiver um provedor de serviços DNS terceirizado, siga o processo do provedor para excluir o registro CNAME que aponta para sua distribuição do CloudFront.

Se você usa o Amazon Route 53, exclua o registro no Route 53 que aponta para o CloudFront.

Depois de fazer as alterações na configuração, aguarde alguns minutos para que as alterações de DNS se propaguem. Em seguida, tente criar novamente o nome de domínio personalizado.

Observação: se você receber erros “CNameAlreadyExists”, consulte Como resolvo o erro CNameAlreadyExists ao configurar um alias CNAME para minha distribuição do Amazon CloudFront?


Informações relacionadas

Como posso configurar um nome de domínio personalizado para minha API do API Gateway?

Como criar um aplicativo sem servidor multirregional com o Amazon API Gateway e o AWS Lambda