web-dev-qa-db-fra.com

Comment CNAME vers Amazon API Gateway Endpoint

J'essaie de définir un CNAME sur Cloudflare pour pointer vers un point de terminaison Amazon API Gateway. Le CNAME est à utiliser pour faire référence à l'un de mes sous-domaines. La passerelle pointe à son tour vers l'IP d'un serveur sur DigitalOcean. Je suis très nouveau sur les services Web d'Amazon et j'apprécierais que quelqu'un me donne un aperçu de la configuration correcte pour le DNS, Amazon Gateway et Cloudfront (qui, je pense, est nécessaire pour exposer la passerelle aux serveurs DNS externes à Amazon). Toute aide serait très appréciée.

MISE À JOUR

J'y vais depuis un moment maintenant et je ne fais pas beaucoup de progrès. Quelqu'un a-t-il une idée s'il s'agit d'une approche viable ou comment cela pourrait être fait autrement?

PDATE2

Je pensais que je devais ajouter l'enregistrement CNAME à cloudFlare et je me suis retrouvé dans une boucle de redirection, observé par:

curl -L -i -v https://sub.mydomain.com/
36
Silian Rails

Il y a plusieurs raisons pour lesquelles cela ne fonctionne pas pour simplement diriger Cloudflare vers votre domaine API Gateway et l'appeler un jour:

  • API Gateway utilise l'hébergement mutualisé, il utilise donc le nom de domaine pour déterminer à quelle API envoyer les demandes. Il n'a aucun moyen de savoir que api.yourdomain.com appartient à votre API.
  • API Gateway requiert que vous utilisiez https, mais le certificat qu'il utilise n'est valide que pour le domaine par défaut.

Il existe cependant une solution. Voici les étapes que j'ai suivies lorsque j'ai récemment configuré cela:

  1. Générez un certificat d'origine à partir de l'onglet crypto du tableau de bord Cloudflare.
  2. Importez le certificat dans AWS Certificate Manager dans le us-east-1 région, même si votre API se trouve dans une autre région. Si vous êtes invité à entrer la chaîne de certificats, vous pouvez la copier depuis ici .
  3. Ajoutez votre domaine personnalisé dans la console API Gateway et sélectionnez le certificat que vous venez d'ajouter. Consultez l'AWS article de support pour plus d'informations sur la façon de procéder.
  4. L'initialisation du domaine personnalisé prend généralement environ 45 minutes. Une fois cela fait, il vous donnera une nouvelle URL Cloudfront. Allez-y et assurez-vous que votre API fonctionne toujours via cette nouvelle URL.
  5. Accédez à l'onglet DNS Cloudflare et configurez un enregistrement CNAME pointant vers l'URL Cloudfront que vous venez de créer.
  6. Passez à l'onglet crypto et réglez votre mode SSL sur "Complet (strict)". Si vous sautez cette étape, vous obtiendrez une boucle de redirection.

C'est ça. Profitez de votre nouvelle API hautement disponible servie depuis votre domaine personnalisé!

37
BonsaiOak

Configurer le domaine personnalisé de la passerelle API d'Amazon avec CloudFlare

  1. Dans votre console de gestion AWS, accédez au service API Gateway et sélectionnez Custom Domain Names dans le menu de gauche.

  2. Cliquez sur le bouton Create.

  3. Connectez-vous à CloudFlare, sélectionnez votre domaine et ouvrez l'onglet Crypto

  4. Accédez à SSL et définissez votre mode SSL sur "Complet (strict)" pour éviter une boucle de redirection.

  5. Aller à Origin Certificates et cliquez sur Create Certificate

  6. Laissez CloudFlare générer une clé privée et une CSR et choisissez RSA comme type de clé privée

  7. Assurez-vous que le nom d'hôte de votre domaine d'API personnalisé est couvert. (par exemple. api.mydomain.com. Vous pouvez spécifiquement configurer ce domaine personnalisé ou utiliser un caractère générique tel que * .mydomain.com comme il est configuré par défaut.

  8. Choisissez PEM comme format de clé sélectionné par défaut.

  9. Dans AWS, passez à la région US-EAST-1 et passez au Certificate Manager.

  10. Cliquez sur Import a Certificate.

  11. Copiez le corps du certificat de votre certificat CloudFlare vers le corps du certificat dans la configuration du domaine personnalisé dans AWS Management Console.

  12. Copiez la clé privée dans le champ de clé privée du certificat dans la console

  13. Dans la chaîne de certificats, copiez le Cloudflare Origin CA - RSA Root qui peut être trouvé ici .

  14. Entrez votre nom de domaine personnalisé dans la console AWS et un nom pour votre certificat

  15. Maintenant, le nom de domaine personnalisé sera créé dans AWS CloudFront. Cela peut prendre jusqu'à une heure avant que le domaine devienne actif.

  16. La prochaine chose que vous devez faire est de configurer les mappages du domaine personnalisé dans la console AWS.

  17. La dernière étape consiste à créer un nouveau CNAME Record dans CloudFlare pour lier votre domaine à l'URL CloudFront. Lorsque vous ouvrez la page des paramètres de votre domaine personnalisé dans la console AWS, copiez le nom du domaine de distribution. Il s'agit du domaine que vous devez utiliser lors de la création du nouveau CNAME Record.

Source

21
Tyler Rafferty

Les deux réponses existantes à cette question sont correctes, mais si le problème persiste même après avoir parfaitement suivi ces instructions, essayez d'accéder aux paramètres de la passerelle API, accédez à "Nom de domaine personnalisé" et configurez les mappages de chemin de base.

Ce fut l'étape manquante qui a résolu tous mes problèmes.

0
mmla