Come faccio a risolvere l'errore CNAMEAlreadyExists quando configuro un alias CNAME per la mia distribuzione CloudFront?

7 minuti di lettura
0

Quando configuro un alias del nome canonico (CNAME) per la mia distribuzione Amazon CloudFront, ricevo un errore "CNAMEAlreadyExists".

Breve descrizione

Non è possibile usare lo stesso alias CNAME per più di una distribuzione CloudFront. Quando l'alias CNAME che stai cercando di aggiungere è già associato a un'altra distribuzione CloudFront, riceverai un messaggio di errore:

"Uno o più CNAME che hai fornito sono già associati a una risorsa diversa. (Servizio: AmazonCloudFront; codice di stato: 409; Codice di errore: CNAMEAlreadyExists; Request ID: a123456b-c78d-90e1-23f4-gh5i67890jkl*"

Se hai accesso sia alla distribuzione di origine che a quella di destinazione, rimuovi manualmente l'associazione CNAME dalla distribuzione CloudFront esistente. Quindi, associa il CNAME alla nuova distribuzione CloudFront.

Nota: se desideri associare manualmente il CNAME, potresti dover attendere che lo stato della vecchia distribuzione sia Distribuito prima di procedere.

Se non conosci l'ID di distribuzione, utilizza l'API CloudFront ListConflictingAliases. In questo modo potrai trovare informazioni parziali sulla distribuzione e sull'ID dell'account per l'alias CNAME in conflitto. Quindi, utilizza l'API AssociateAlias per spostare il tuo CNAME dalla distribuzione esistente (distribuzione di origine) alla nuova distribuzione (distribuzione di destinazione).

Utilizza una delle seguenti risoluzioni in base al tuo scenario:

  • Per le distribuzioni di origine e di destinazione che si trovano nello stesso account, consulta la sezione Usare l'API AssociateAlias per spostare il tuo CNAME.
  • Per le distribuzioni di origine e di destinazione tra più account, consulta la sezione Disattivare la distribuzione di origine con il CNAME in conflitto.
  • Se non riesci a disattivare la distribuzione del codice sorgente a causa di tempi di inattività del traffico esistente, consulta Utilizzare un carattere jolly per spostare il nome di dominio alternativo.
    Nota: nonè possibile usare un carattere jolly per spostare un dominio apex (example.com). Per spostare un dominio apex quando le distribuzioni di origine e di destinazione si trovano in account AWS diversi, contatta il supporto AWS per spostare un nome di dominio alternativo.

Risoluzione

Usa l'API AssociateAlias per spostare il tuo CNAME

Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), consulta la sezione Troubleshoot AWS CLI errors. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.

Per spostare il tuo CNAME, completa i seguenti passaggi:

  1. Nella policy di AWS Identity and Access Management (IAM) dell'utente o del ruolo che effettua la richiesta API, aggiungi le seguenti autorizzazioni a livello di risorsa:
    Nota: sostituisci SourceAcccount con il numero di account AWS della distribuzione di origine. Sostituisci SourceDistroID con l'ID di distribuzione di origine. Sostituisci TargetAccountID con il numero di account AWS della distribuzione di destinazione. Sostituisci TargetDistroID con l'ID di distribuzione di destinazione.

    {
      "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: l'utente o il ruolo IAM che effettua la richiesta deve disporre di queste autorizzazioni a livello di risorsa sia nella distribuzione di origine che in quella di destinazione.

  2. Identifica la distribuzione con il CNAME in conflitto. Se non sai quale distribuzione contiene il CNAME in conflitto, usa l'API ListConflictingAliases per trovarla:
    Nota: sostituisci YourDistributionID con l'ID della tua distribuzione e YourCNAME con l'alias CNAME in conflitto.

    $ aws cloudfront list-conflicting-aliases --distribution-id YourDistributionID --alias YourCNAME
  3. Per verificare la proprietà del dominio, devi avere accesso di lettura a YourDistributionID. È inoltre necessario disporre di un certificato SSL associato alla distribuzione CloudFront che protegga il CNAME in conflitto.
    Quando sei pronto per verificare la proprietà, crea un record DNS TXT per il CNAME che si risolve nel nome canonico della distribuzione di destinazione. Il record TXT deve includere un trattino basso prima del CNAME, Apex o Wildcard:

_.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"
  1. Verifica che la distribuzione di destinazione disponga di un certificato SSL valido.
    Nota: il nome del soggetto o il nome alternativo del soggetto deve corrispondere o sovrapporsi all'alias CNAME specificato. È consigliabile far emettere un certificato valido da un'autorità di certificazione attendibile elencata nell'elenco dei certificati CA di Mozilla o in AWS Certificate Manager.
  2. Esegui la richiesta API AssociateAlias dall'account proprietario della distribuzione di destinazione:
    $ aws cloudfront associate-alias --target-distribution-id YourTargeDistributiontID --alias your_cname.example.com

Disattiva la distribuzione del codice sorgente con il CNAME in conflitto

Per le distribuzioni di origine e di destinazione che si trovano in account diversi, disattiva la distribuzione di origine associata al dominio in conflitto. Quindi, utilizza l'API AssociateAlias per spostare il CNAME.

Puoi usare il comando associate-alias per spostare domini Apex tra diversi account AWS:

  1. Apri la console CloudFront.
  2. Nel riquadro di navigazione, scegli Distribuzioni.
  3. Seleziona la distribuzione di origine, quindi scegli Disabilita.
    Nota: se non sai quale distribuzione contiene il CNAME in conflitto, usa l'API ListConflictingAliases per trovarla. Sostituisci YourDistributionID con l'ID della tua distribuzione e YourCNAME con il nome del CNAME in conflitto:
    $ aws cloudfront list-conflicting-aliases --distribution-id YourDistributionID --alias YourCNAME
    Nota: L'API ListConflictingAliases richiede le autorizzazioni GetDistribution e ListConflictingAliases.

Dopo aver disattivato la distribuzione di origine, segui i passaggi indicati nella sezione Usare l'API AssociateAlias per spostare il tuo CNAME.

Se non hai accesso all'account AWS con la distribuzione di origine o se non riesci a disattivarla, contatta il supporto AWS.

Usa un carattere jolly per spostare il nome di dominio alternativo

Se la distribuzione di origine e quella di destinazione si trovano in account diversi ma non puoi disattivare la distribuzione di origine, sposta il CNAME. È necessario avere accesso sia alla distribuzione di origine che a quella di destinazione per questo processo.

Questo processo prevede aggiornamenti multipli sia alla distribuzione di origine che a quella di destinazione. Attendi che ogni distribuzione implementi completamente la modifica più recente prima di procedere al passaggio successivo.

Per spostare il nome di dominio alternativo, completa i seguenti passaggi:

  1. Aggiorna la distribuzione di destinazione per aggiungere un CNAME con caratteri jolly che copra il nome di dominio alternativo che desideri spostare. Se il tuo dominio è www.esempio.com, aggiungi il nome di dominio alternativo con carattere jolly *.esempio.com alla distribuzione di destinazione.
    Nota: è necessario disporre di un certificato SSL/TLS sulla distribuzione di destinazione che protegga il nome di dominio con carattere jolly.

  2. Aggiorna le impostazioni DNS per il CNAME in modo che punti al nome canonico della distribuzione di destinazione. Ad esempio, se il tuo dominio è www.esempio.com, aggiorna il record DNS per www.esempio.com per indirizzare il traffico al nome canonico della distribuzione di destinazione:

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

    **Nota:**poiché il nome di dominio alternativo è ancora associato alla distribuzione di origine, la distribuzione di origine richiede comunque l'utilizzo del nome di dominio alternativo.

  3. Aggiorna la distribuzione di origine per rimuovere il nome di dominio alternativo.
    Nota: Durante questa fase, non vi sarà alcuna interruzione del traffico in tempo reale. Poiché il nome di dominio richiesto corrisponde al dominio con carattere jolly aggiunto alla distribuzione di destinazione, il traffico in tempo reale utilizzerà le impostazioni della distribuzione di destinazione.

  4. Per aggiungere il nome di dominio alternativo che desideri spostare, aggiorna la distribuzione di destinazione.

  5. Per convalidare il record DNS per il CNAME, usa dig o uno strumento di query DNS simile:

    dig CNAME www.example.com +short
    nslookup example.com
  6. (Facoltativo) Per rimuovere il nome di dominio alternativo con carattere jolly, aggiorna la distribuzione di destinazione.

AWS UFFICIALE
AWS UFFICIALEAggiornata 8 mesi fa