Como resolvo o erro “CNAMEAlreadyExists” ao configurar um alias do CNAME para minha distribuição do CloudFront?

7 minuto de leitura
0

Quando eu configuro um alias de registro de nome canônico (CNAME) para minha distribuição do Amazon CloudFront, recebo um erro “CNAMEAlreadyExists”.

Breve descrição

Você não pode usar o mesmo alias do CNAME para mais de uma distribuição do CloudFront. Quando o alias do CNAME que você quer adicionar já está associado a outra distribuição do CloudFront, você recebe o seguinte erro:

“Um ou mais dos CNAMEs que você forneceu já estão associados a um recurso diferente. (Serviço: AmazonCloudFront; Código de status: 409; Código de erro: CNAMEAlreadyExists; ID da solicitação: a123456b-c78d-90e1-23f4-gh5i67890jkl*”

Se você tiver acesso às distribuições de origem e de destino, remova manualmente a associação CNAME da distribuição existente do CloudFront. Em seguida, associe o CNAME à nova distribuição do CloudFront.

Observação: para associar manualmente o CNAME, talvez seja necessário esperar até que o status da distribuição antiga seja Implantada antes de continuar.

Se você não souber a ID da distribuição, use a API ListConflictingAliases do CloudFront. Isso permite que você encontre informações parciais sobre a distribuição e a ID da conta da AWS do alias do CNAME conflitante. Em seguida, use a API AssociateAlias para mover seu CNAME da distribuição existente (distribuição de origem) para a nova distribuição (distribuição de destino).

Use uma das seguintes resoluções com base no seu cenário:

  • Para distribuições de origem e destino que estão na mesma conta, consulte a seção Usar a API AssociateAlias para mover seu CNAME.
  • Para distribuições de origem e destino entre contas, consulte a seção Desativar distribuição de origem com o CNAME conflitante.
  • Se você não conseguir desativar a distribuição de origem devido ao tempo de inatividade do tráfego existente, consulte Usar um curinga para mover o nome de domínio alternativo.
    Observação: Não é possível usar um curinga para mover um domínio apex (exemplo.com). Para mover um domínio apex quando as distribuições de origem e de destino estiverem em contas diferentes, entre em contato com o AWS Support para mover um nome de domínio alternativo.

Resolução

Usar a API AssociateAlias para mover seu CNAME

Observação: Se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de erros da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.

Para mover seu CNAME, realize as etapas a seguir:

  1. Na política do AWS Identity and Access Management (IAM) do usuário ou do perfil que está fazendo a solicitação de API, adicione as seguintes permissões em nível de recurso:
    Observação: substitua SourceAcccount pelo número da conta da distribuição de origem. Substitua SourceDistroID pela ID de distribuição de origem. Substitua TargetAccountID pelo número da conta da distribuição de destino. Substitua pelo ID de distribuição de destino.

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "CloudFrontCnameSwapSameAcc",
          "Effect": "Allow",
          "Action": [
            "cloudfront:GetDistribution",
            "cloudfront:ListConflictingAliases",
            "cloudfront:AssociateAlias",
            "cloudfront:UpdateDistribution"
          ],
          "Resource": [
            "arn:aws:cloudfront::SourceAcccount:distribution/SourceDistroID",
            "arn:aws:cloudfront::TargetAccount:distribution/TargetDistroID"
          ]
        }
      ]
    }

    Importante: O usuário ou perfil do IAM que faz a solicitação deve ter essas permissões em nível de recurso na distribuição de origem e na distribuição de destino.

  2. Identifique a distribuição com o CNAME conflitante. Se você não sabe qual distribuição tem o CNAME conflitante, use a API ListConflictingAliases para encontrar essa distribuição:
    Observação: substitua YourDistributionID pela ID da sua distribuição e YourCNAME pelo alias do CNAME conflitante.

    $ aws cloudfront list-conflicting-aliases --distribution-id YourDistributionID --alias YourCNAME
  3. Para verificar a propriedade do domínio, você deve ter acesso de leitura a YourDistributionID. Você também deve ter um certificado SSL/TLS que é associado à distribuição do CloudFront que proteja o CNAME conflitante. Quando estiver pronto para verificar a propriedade, crie um registro DNS TXT para o CNAME que corresponda ao nome canônico da distribuição de destino. Seu registro TXT deve incluir um sublinhado antes do CNAME, apex ou curinga:

    _.example.com.         900   IN   TXT     "dexample123456.cloudfront.net"_cname.example.com.    900   IN   TXT     "dexample123456.cloudfront.net"
    _*.example.com.        900   IN   TXT     "dexample123456.cloudfront.net"
  4. Verifique se a distribuição de destino tem um certificado SSL/TLS válido.
    Observação: o nome do assunto ou nome alternativo do assunto deve corresponder ou se sobrepor ao alias do CNAME. É uma prática recomendada ter um certificado válido emitido pelo AWS Certificate Manager ou uma CA confiável que esteja listada na lista de certificados CA da Mozilla. Para obter mais informações, consulte o Programa de Certificação CA da Mozilla (no site da Mozilla).

  5. Execute a solicitação da API AssociateAlias na conta que possui a distribuição de destino:

    $ aws cloudfront associate-alias --target-distribution-id YourTargeDistributiontID --alias your_cname.example.com

Desativar a distribuição de origem com o CNAME conflitante

Para distribuições de origem e destino que estão em contas diferentes, desative a distribuição de origem associada ao domínio conflitante. Em seguida, use a API AssociateAlias para mover o CNAME.

Use o comando associate-alias para mover domínios do apex entre contas diferentes:

  1. Abra o console do CloudFront.
  2. No painel de navegação, escolha Distribuições.
  3. Selecione a distribuição de origem e escolha Desativar.
    Observação: se você não sabe qual distribuição tem o CNAME conflitante, use a API ListConflictingAliases para encontrar essa distribuição. Substitua YourDistributionID pela ID da sua distribuição e YourCNAME pelo nome do CNAME conflitante:
    $ aws cloudfront list-conflicting-aliases --distribution-id YourDistributionID --alias YourCNAME

Observação: A API ListConflictingAliases exige as permissões GetDistribution e ListConflictingAliases.

Depois de desativar a distribuição de origem, siga as etapas na seção Usar a API AssociateAlias para mover sua seção CNAME.

Se você não tiver acesso à conta que contém a distribuição de origem ou se não conseguir desativar a distribuição de origem, entre em contato com o AWS Support.

Usar um curinga para mover o nome de domínio alternativo

Se suas distribuições de origem e de destino estiverem em contas diferentes, mas você não puder desativar a distribuição de origem, use um curinga para mover o CNAME. Você deve ter acesso à distribuição de origem e à distribuição de destino para mover o CNAME.

Esse processo envolve várias atualizações nas distribuições de origem e de destino. Aguarde até que cada distribuição implante totalmente a alteração mais recente antes de prosseguir para a próxima etapa.

Para mover o nome de domínio alternativo, conclua as seguintes etapas:

  1. Atualize a distribuição de destino para adicionar um CNAME curinga que cubra o nome de domínio alternativo que você deseja mover. Se seu domínio for www.exemplo.com, adicione o nome de domínio alternativo curinga *.exemplo.com à distribuição de destino.
    Observação: você deve ter um certificado SSL/TLS na distribuição de destino que proteja o nome de domínio curinga.

  2. Atualize as configurações de DNS do CNAME para apontar para o nome canônico da distribuição de destino. Por exemplo, se seu domínio for www.exemplo.com, atualize o registro DNS de www.exemplo.com para direcionar o tráfego para o nome canônico da distribuição de destino:

    www.example.com.         86400   IN   CNAME     "dexample123456.cloudfront.net"

    Observação: como o nome de domínio alternativo ainda está associado à distribuição de origem, a distribuição de origem ainda solicita que você use o nome de domínio alternativo. A distribuição de destino não receberá as solicitações (transferência) até que você remova o nome de domínio alternativo da distribuição de origem na Etapa 3.

  3. Atualize a distribuição de origem para remover o nome de domínio alternativo.
    Observação: nessa etapa, não há interrupção no tráfego ao vivo. Como o nome de domínio solicitado corresponde ao domínio curinga adicionado à distribuição de destino, o tráfego ao vivo usa as configurações de distribuição de destino.

  4. Para adicionar o nome de domínio alternativo que você deseja mover, atualize a distribuição de destino.

  5. Para validar o registro DNS para o CNAME, use dig ou uma ferramenta de consulta ao DNS semelhante:

    dig CNAME www.example.com +shortnslookup example.com
  6. (Opcional) Para remover o nome de domínio alternativo curinga, atualize a distribuição de destino.

AWS OFICIAL
AWS OFICIALAtualizada há 4 meses