Le message d'erreur « CNAMEAlreadyExists » s'affiche lorsque j'essaie de créer un nom de domaine personnalisé optimisé pour les périphériques pour mon API Amazon API Gateway.
Brève description
L'erreur « CNAMEAlreadyExists » se produit si :
- Le type d'enregistrement CNAME pour votre nom de domaine personnalisé existe déjà et pointe vers une distribution Amazon CloudFront.
- Il existe une distribution CloudFront configurée avec un autre nom de domaine ou CNAME qui correspond à votre nom de domaine personnalisé.
Remarque : Il n'est pas rare de recevoir des erreurs « Too Many Requests » lorsque vous effectuez plusieurs mises à jour personnalisées de noms de domaine en peu de temps. Ces erreurs se produisent en raison du faible quota pour l'API CreateDomainName (une requête toutes les 30 secondes par compte). Pour plus d'informations, consultez la section Quotas d'API Gateway pour la création, le déploiement et la gestion d'une API.
Important : Vous ne pouvez pas utiliser le même enregistrement CNAME pour plusieurs distributions CloudFront. L'utilisation du même enregistrement CNAME renvoie l'erreur suivante : « One or more of the CNAMEs you provided are already associated with a different resource. (Service : AmazonCloudFront ; Code d'état : 409 ; code d’erreur : CNAMEAlreadyExists; Request ID: a123456b-c78d-90e1-23f4-gh5i67890jkl. »
Pour résoudre ces erreurs et créer un nom de domaine personnalisé optimisé pour les périphériques, vous devez d'abord supprimer l'enregistrement CNAME existant pointant vers une distribution CloudFront.
Résolution
Vérifiez si le nom de domaine personnalisé existait déjà
1. Pour vérifier si le nom de domaine personnalisé existait déjà, exécutez une commande de recherche DNS sur le nom de domaine.
Sur les systèmes Linux, Unix ou macOS :
dig abc.example.com +all
Sur Windows :
nslookup abc.example.com
Remarque : Remplacez abc.example.com par votre nom de domaine.
2. Si le nom de domaine personnalisé existait déjà et que son enregistrement DNS existe toujours, utilisez dig pour obtenir l'enregistrement CNAME dans la sortie :
abc.example.comcom. 0 IN CNAME d27am47dhauq2.cloudfront.net.
Important :
Vous devez supprimer cet enregistrement avant de pouvoir créer le nom de domaine personnalisé.
- Il est recommandé de modifier d'abord les paramètres DNS dans un environnement de développement ou de test. La modification manuelle des paramètres DNS de production peut entraîner une durée d’indisponibilité.
- Si la sortie affiche un enregistrement A (adresse IPv4) au lieu d'un enregistrement CNAME, vous devez mettre à jour l'enregistrement. L'enregistrement mis à jour doit pointer le nom de domaine personnalisé (alias A) vers la distribution CloudFront.
Si dig ou nslookup est utilisé sur le nom de domaine et que l'enregistrement est un alias A, vérifiez la distribution CloudFront. Assurez-vous que la distribution CloudFront n'est pas configurée avec un autre nom de domaine. Pour plus d'informations, consultez la section Comparaison des enregistrements d’alias et CNAME.
Supprimez l'enregistrement CNAME ou mettez à jour votre distribution CloudFront
Selon votre configuration, effectuez l'une des opérations suivantes ou les deux :
Si vous utilisez un fournisseur de services DNS tiers, suivez la procédure de votre fournisseur pour supprimer l'enregistrement CNAME qui pointe vers votre distribution CloudFront.
Si vous utilisez Amazon Route 53, supprimez l'enregistrement dans Route 53 qui pointe vers CloudFront.
Après avoir effectué les modifications de configuration, patientez pendant quelques minutes jusqu’à ce que les modifications DNS se propagent. Puis, essayez à nouveau de créer le nom de domaine personnalisé.
Remarque : Si vous recevez des erreurs « CNAMEAlreadyExists », consultez la section Comment puis-je résoudre l'erreur CNAMEAlreadyExists lors de la configuration d'un alias CNAME pour ma distribution Amazon CloudFront ?
Informations connexes
Comment puis-je configurer un nom de domaine personnalisé pour mon API Gateway ?
Création d'une application sans serveur multirégionale avec Amazon API Gateway et AWS Lambda