Comment puis-je résoudre les erreurs « CNAMEAlreadyExists » et « Too Many Requests » lorsque je crée un nom de domaine personnalisé optimisé pour la périphérie pour mon API API Gateway ?

Date de la dernière mise à jour : 11/05/2021

J'obtiens des erreurs « CNAMEAlreadyExists » et « Too Many Requests » lorsque j'essaie de créer un nom de domaine personnalisé optimisé pour la périphérie pour mon API Amazon API Gateway.

Brève description

Vous obtenez des erreurs dans API Gateway lorsqu'un enregistrement CNAME pour le nom de domaine personnalisé existe déjà et pointe vers une distribution Amazon CloudFront. Cela peut se produire lorsque vous essayez de recréer un nom de domaine personnalisé optimisé pour la périphérie que vous avez précédemment supprimé.

Il n'est pas rare de recevoir des erreurs « Too Many Requests » lorsque vous effectuez plusieurs mises à jour d'un nom de domaine personnalisé dans un court laps de temps. Ces erreurs se produisent en raison du faible quota pour UpdateDomainName (une requête toutes les 30 secondes par compte). Pour plus d'informations, consultez la rubrique Quotas 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 plus d'une distribution CloudFront.

Pour résoudre ces erreurs et créer un nom de domaine personnalisé optimisé pour la périphérie, vous devez d'abord supprimer l'enregistrement CNAME existant qui pointe vers une distribution CloudFront.

Résolution

Confirmez que le nom de domaine personnalisé existait auparavant

1.    Pour confirmer que le nom de domaine personnalisé existait auparavant, 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 auparavant et que son enregistrement DNS est toujours là, 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é.

Si la sortie affiche un enregistrement A (adresse IPv4) au lieu d'un enregistrement CNAME, vous devez mettre l'enregistrement à jour. L'enregistrement mis à jour doit pointer le nom de domaine personnalisé (alias A) vers la distribution CloudFront.

Utilisez un enregistrement CNAME ou un enregistrement A. L'enregistrement CNAME se résout par un autre nom de domaine. Un enregistrement A se résout par des adresses IP. Choisissez l'option qui correspond le mieux à votre cas d'utilisation, à vos exigences et à vos contraintes. Pour plus d'informations, consultez la rubriqueComparaison des enregistrements alias et CNAME. La confirmation du nom de domaine personnalisé pour les deux options est la même. Pour connaître les directives à suivre, consultez les étapes 9 et 10 de la rubrique Configurer un nom de domaine personnalisé optimisé pour la périphérie pour une API API Gateway.

Supprimez l'enregistrement CNAME existant

Choisissez l'une des options suivantes en fonction du fournisseur de services DNS de votre domaine.

Si vous disposez d'un fournisseur de services DNS tiers, procédez comme suit :

1.    Suivez le processus de votre fournisseur pour supprimer le jeu d'enregistrements CNAME qui pointe vers votre distribution CloudFront.

2.    Si vous utilisez CloudFront, mettez votre distribution à jour et supprimez les noms de domaine alternatifs (c'est-à-dire CNAMEs).

Remarque : si vous recevez des erreurs « CNAMEAlreadyExists », consultez la rubrique Comment résoudre l'erreur CNAMEAlreadyExists lors de la configuration d'un alias CNAME pour ma distribution Amazon CloudFront ?

-ou-

Si vous disposez d'Amazon Route 53, supprimez l'enregistrement dans Route 53 qui pointe vers CloudFront.

Remarque : attendez plusieurs minutes pour que la modification DNS se propage avant de réessayer de créer le nom de domaine personnalisé dans API Gateway.