Comment résoudre l'erreur CNAMEAlreadyExists lorssque je configure un alias CNAME pour ma distribution CloudFront ?

Dernière mise à jour : 26 septembre 2022

Lors de la configuration d'un alias d'enregistrement de nom canonique (CNAME) pour ma distribution Amazon CloudFront, je reçois l'erreur « CNAMEAlreadyExists ». Comment puis-je résoudre ce problème ?

Brève description

L'erreur CNAMEAlreadyExists se produit lorsque l'alias CNAME que vous tentez d'ajouter est déjà associé à une autre distribution CloudFront. Vous ne pouvez pas utiliser le même alias CNAME pour plus d'une distribution CloudFront. L'erreur est similaire à ce qui suit :

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*

Si vous avez accès aux distributions source et cible, supprimez d'abord manuellement l'association CNAME de la distribution CloudFront existante. Associez ensuite le CNAME à la nouvelle distribution CloudFront.

Remarque : Si vous associez manuellement le CNAME, vous ne pourrez peut-être plus associer le CNAME à la nouvelle distribution tant que l'ancienne distribution n'a pas le statut Déployé.

Si vous ignorez l'ID de la distribution, utilisez l'API CloudFront ListConflictingAliases pour obtenir des informations partielles sur l'ID de la distribution et du compte pour l'alias CNAME conflictuel. Utilisez ensuite l'API AssociateAlias pour déplacer votre CNAME de la distribution existante (distribution source) vers la nouvelle distribution (distribution cible). En fonction du scénario, choisissez l'une des solutions suivantes :

  • Si vos distributions source et cible figurent dans le même compte, suivez les étapes de la section utiliser l'API AssociateAlias pour déplacer votre CNAME.
  • Si vos distributions source et cible figurent dans des comptes AWS différents, suivez les étapes de la section désactiver la distribution source à l'aide du CNAME conflictuel.
  • Si vos distributions source et cible figurent dans des comptes AWS différents et que la distribution source ne peut pas être désactivée en raison d'une interruption du trafic existant, suivez les étapes de la section utiliser un caractère générique pour déplacer le nom de domaine alternatif .

Solution

Utiliser l'API AssociateAlias pour déplacer votre CNAME

Remarque : si vous recevez des erreurs lors de l'exécution de commandes depuis l'interface de la ligne de commande AWS (AWS CLI), assurez-vous d'utiliser la version la plus récente de l'AWS CLI.

1.    Dans la politique AWS Identity and Access Management (IAM) de l'utilisateur ou du rôle qui envoie la demande d'API, ajoutez les autorisations de niveau de ressources suivantes :

{
  "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"
      ]
    }
  ]
}

Important : L'utilisateur ou le rôle IAM qui émet la demande doit disposer des autorisations de niveau de ressources précédentes dans la politique IAM, à la fois pour les distributions source et cible.

Remarque : Remplacez SourceAcccount par le numéro de compte AWS de la distribution source. Remplacez SourceDistroID par l'ID de la distribution source. Remplacez TargetAccountID par le numéro de compte AWS de la distribution cible. Remplacez TargetDistroID par l'ID de la distribution cible.

2.    Identifiez la distribution avec le CNAME conflictuel. Si vous ignorez la distribution avec le CNAME conflictuel, utilisez l'API ListConflictingAliases pour l'identifier. Remplacez YourDistributionID par l'ID de votre distribution. Remplacez YourCNAME par l'alias CNAME conflictuel.

$ aws cloudfront list-conflicting-aliases --distribution-id YourDistributionID --alias YourCNAME

Remarque : Pour vérifier la propriété, vous devez disposer d'un accès en lecture à YourDistributionID. Vous devez également disposer d'un certificat SSL associé à la distribution CloudFront qui sécurise le CNAME conflictuel.

3.    Vérifiez la propriété du domaine en créant un enregistrement TXT DNS pour le CNAME qui est résolu par le nom canonique de la distribution cible. Votre enregistrement TXT doit inclure un trait de soulignement avant le CNAME, l'apex ou le caractère générique. Par exemple :

_.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.    Vérifiez que la distribution cible possède un certificat SSL valide.
Remarque : le nom du sujet ou le nom alternatif du sujet doit correspondre ou se superposer à l'alias CNAME donné. Il est recommandé de disposer d'un certificat valide émis par une autorité de certification de confiance répertoriée dans la liste CA Certificatede Mozilla ou dans AWS Certificate Manager.

5.    Exécutez la demande d'API AssociateAlias à partir du compte propriétaire de la distribution cible :

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

Désactiver la distribution source avec le CNAME en conflit

Si vos distributions source et cible figurent dans des comptes AWS différents, désactivez d'abord la distribution source associée au domaine en conflit. Ensuite, utilisez l'API AssociateAlias pour déplacer votre CNAME.

Les domaines Apex peuvent également être déplacés entre différents comptes AWS à l'aide de la commande associate-alias.

1.    Ouvrez la console CloudFront.

2.    Dans le volet de navigation, sélectionnez Distributions

3.    Sélectionnez la distribution source, puis choisissez Désactiver.
Si vous ignorez la distribution avec le CNAME en conflit, utilisez l'API ListConflictingAliases pour l'identifier. Assurez-vous de remplacer YourDistributionID par l'ID de votre distribution et YourCNAME par le nom du CNAME conflictuel :

$ aws cloudfront list-conflicting-aliases --distribution-id YourDistributionID --alias YourCNAME

Remarque : L'API ListConflictingAliases nécessite les autorisations GetDistribution et ListConflictingAliases.

Après avoir désactivé la distribution source, suivez les étapes de la section utiliser l'API AssociateAlias pour déplacer votre CNAME.

Si vous n'avez pas accès au compte AWS avec la distribution source, ou si vous ne pouvez pas désactiver la distribution source, contactez AWS Support.

Utilisez un caractère générique pour déplacer le nom de domaine alternatif

Si vos distributions source et cible figurent dans des comptes AWS différents, mais que la distribution source ne peut pas être désactivée, utilisez un caractère générique pour déplacer le CNAME. En procédant ainsi, vous devriez avoir accès aux distributions source et cible.

Remarque : Vous ne pouvez pas utiliser de caractère générique pour déplacer un domaine apex (exemple.com). Pour déplacer un domaine apex lorsque les distributions source et cible figurent dans des comptes AWS différents, contactez AWS Support pour déplacer un nom de domaine alternatif.

Important : Ce processus nécessite plusieurs mises à jour des distributions source et cible. Attendez que chaque distribution déploie complètement la dernière modification avant de passer à l'étape suivante.

1.    Veuillezmettre à jour la distribution cible pour ajouter un CNAME de carte générique qui comprend le nom de domaine alternatif que vous déplacez. Si votre domaine est www.exemple.com, ajoutez le nom de domaine alternatif de carte générique *.exemple.com à la distribution cible.

Remarque : Vous devez disposer d'un certificat SSL/TLS sur la distribution cible qui sécurise le nom de domaine de carte générique

2.    Mettez à jour les paramètres DNS du CNAME afin qu'il pointe vers le nom canonique de la distribution cible. Si votre domaine est www.exemple.com, mettez à jour l'enregistrement DNS pour www.exemple.com pour acheminer le trafic vers le nom canonique de la distribution cible. Par exemple :

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

Remarque : Même après avoir mis à jour les paramètres DNS, les demandes utilisant le nom de domaine alternatif sont émises par la distribution source. Cela est dû au fait que le nom de domaine alternatif est toujours associé à la distribution source.

3.    Veuillez mettre à jour la distribution source pour supprimer le nom de domaine alternatif.
Remarque : Il n'y a aucune interruption de trafic réel pendant cette étape. Le trafic réel utilise les paramètres de la distribution cible, car le nom de domaine demandé correspond au domaine de carte générique ajouté à la distribution cible.

4.    Veuillez mettre à jour la distribution cible pour ajouter le nom de domaine alternatif que vous souhaitez déplacer.

5.    Utilisez dig ou un outil de requête DNS similaire pour valider l'enregistrement DNS du CNAME Par exemple :

dig CNAME www.example.com +short
nslookup test.bioverse.bpglobal.com

6.    Veuillez mettre à jour la distribution cible pour supprimer le nom de domaine alternatif de carte générique (facultatif).


Cet article vous a-t-il été utile ?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?