Passer au contenu

Comment puis-je résoudre l'erreur « CNAMEAlreadyExists » lorsque je configure un alias CNAME pour ma distribution CloudFront ?

Lecture de 6 minute(s)
0

Lorsque je configure un alias CNAME (enregistrement de nom canonique) pour ma distribution Amazon CloudFront, le message d'erreur « CNAMEAlreadyExists » s'affiche.

Brève description

Vous ne pouvez pas utiliser le même alias CNAME pour plusieurs distributions CloudFront. Lorsque l’alias CNAME que vous souhaitez ajouter est déjà associé à une autre distribution CloudFront, le message d’erreur suivant s’affiche :

« 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 à la fois aux distributions source et cible, supprimez manuellement l'association CNAME de la distribution CloudFront existante. Puis, associez le CNAME à la nouvelle distribution CloudFront.

Remarque : Pour associer manuellement le CNAME, vous devrez peut-être attendre que le statut de la distribution existante soit Déployé.

Pour obtenir des informations partielles sur la distribution et l'ID de compte AWS pour l'alias CNAME en conflit, exécutez la commande list-conflicting-aliases de l’interface de la ligne de commande AWS (AWS CLI). Puis, exécutez la commande AssociateAlias pour déplacer votre CNAME de la distribution existante (distribution source) vers la nouvelle distribution (distribution cible).

Utilisez l’une des résolutions suivantes en fonction de votre scénario :

  • Pour les distributions source et cible associées au même compte, consultez la section Déplacer votre CNAME.
  • Pour les distributions source et cible intercompte, consultez la section Désactiver la distribution source avec le CNAME en conflit.
  • Si vous ne parvenez pas à désactiver la distribution source, consultez la section Utiliser un caractère générique pour déplacer le nom de domaine alternatif.
    Remarque : Vous ne pouvez pas utiliser de caractère générique pour déplacer un domaine apex (example.com). Pour déplacer un domaine apex lorsque les distributions source et cible se trouvent dans des comptes différents, consultez la section Contactez AWS Support pour déplacer un nom de domaine alternatif.

Résolution

Déplacez votre CNAME

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre les erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.

Vous devez avoir accès à la fois à la distribution source et à la distribution cible pour déplacer le CNAME.

Pour déplacer votre CNAME, procédez comme suit :

  1. Dans la politique Gestion des identités et des accès AWS (AWS IAM) de l’utilisateur ou du rôle à l’origine de la demande d’API, ajoutez les autorisations suivantes au niveau des ressources :

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

    Remarque : L'utilisateur ou le rôle IAM doit disposer des autorisations précédentes dans la distribution source et la distribution cible. Dans la politique précédente, remplacez SourceAcccount par le numéro de compte de la distribution source et SourceDistroID par l'ID de la distribution source. Remplacez également TargetAccount par le numéro de compte de la distribution cible et TargetDistroID par l'ID de la distribution cible.

  2. Exécutez la commande list-conflicting-aliases pour trouver la distribution dont le CNAME est en conflit :

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

    Remarque : Remplacez YourDistributionID par l’ID de votre distribution et YourCNAME par l’alias CNAME en conflit.

  3. Créez un enregistrement DNS TXT pour le CNAME qui correspond au nom canonique de la distribution cible pour vérifier la propriété. Votre enregistrement TXT doit inclure un trait de soulignement avant le CNAME, apex ou le caractère générique :

    _.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"

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

  4. Vérifiez que la distribution cible possède un certificat SSL/TLS valide.
    Remarque : Le nom du sujet ou le nom alternatif du sujet doit correspondre ou se chevaucher avec l'alias CNAME. Il est recommandé de disposer d’un certificat valide émis par AWS Certificate Manager ou par une autorité de certification (CA) fiable répertoriée dans la liste des certificats CA de Mozilla. Pour plus d'informations, consultez la page Autorités de certification sur le site Web de Mozilla.

  5. Exécutez la commande associate-alias depuis le compte propriétaire de la distribution cible :

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

    Remarque : Remplacez YourTargeDistributiontID par l'ID de votre distribution cible et your_cname.example.com par votre domaine.

Désactivez la distribution source avec le CNAME en conflit

Pour les distributions source et cible qui se trouvent dans des comptes différents, désactivez la distribution source associée au domaine en conflit. Puis, suivez les étapes de la section Déplacer votre CNAME.

Pour désactiver la distribution source associée au domaine en conflit, procédez comme suit :

  1. Ouvrez la console CloudFront.
  2. Dans le volet de navigation, sélectionnez Distributions.
  3. Sélectionnez la distribution source, puis Désactiver.

Si vous n’avez pas accès au compte qui contient 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 se trouvent dans des comptes différents mais que vous ne pouvez pas désactiver la distribution source, utilisez un caractère générique pour déplacer le CNAME.

Dans la procédure suivante, attendez que chaque distribution déploie complètement les mises à jour avant de passer à l'étape suivante.

Pour déplacer le nom de domaine alternatif, procédez comme suit :

  1. Mettez à jour la distribution cible pour ajouter un CNAME générique au nom de domaine alternatif que vous souhaitez déplacer. Si votre domaine est www.example.com, ajoutez le nom de domaine alternatif générique *.example.com à la distribution cible.
    Remarque : Vous devez disposer d'un certificat SSL/TLS sur la distribution cible qui sécurise le nom de domaine générique.

  2. Mettez à jour l'enregistrement DNS du CNAME afin d'acheminer le trafic vers le nom canonique de la distribution cible :

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

    Remarque : Étant donné que le nom de domaine alternatif est toujours associé à la distribution source, celle-ci reçoit les requêtes qui utilisent le nom de domaine alternatif. La distribution cible reçoit les demandes uniquement après avoir supprimé le nom de domaine alternatif de la distribution source.

  3. Mettez à jour la distribution source pour supprimer le nom de domaine alternatif.
    Remarque : Durant la mise à jour, le trafic en direct n'est pas interrompu. Étant donné que le nom de domaine demandé correspond au domaine générique que vous avez ajouté à la distribution cible, le trafic en direct utilise les paramètres de distribution cible.

  4. Pour ajouter le nom de domaine alternatif que vous souhaitez déplacer, mettez à jour la distribution cible.

  5. Pour valider l’enregistrement DNS pour le CNAME, utilisez dig ou un outil de requête DNS similaire :

    dig CNAME www.example.com +shortnslookup example.com
  6. (Facultatif) Pour supprimer le nom de domaine alternatif générique, mettez à jour la distribution cible.