Comment utiliser CNAME pour Amazon API Gateway Endpoint
j'essaie de définir un CNAME sur Cloudflare pour pointer vers un terminal de L'API Amazon. L'enregistrement CNAME est pour une utilisation lorsque l'on se réfère à l'un de mes sous-domaines. La passerelle à son tour pointe vers L'IP d'un serveur sur DigitalOcean. Je suis très nouveau dans 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 grandement apprécier.
UPDATE
j'y travaille depuis un moment maintenant et je ne fais pas beaucoup de progrès. Quelqu'un a une idée si c'est une approche viable ou sinon, comment il pourrait être fait?
UPDATE2
je pensais que j'avais besoin d'ajouter l'enregistrement CNAME pour cloudFlare et juste fini dans une boucle de redirection, observé par:
curl -L -i -v https://sub.mydomain.com/
2 réponses
il y a plusieurs raisons pour lesquelles cela ne fonctionne pas de simplement pointer Cloudflare vers votre domaine API Gateway et de l'appeler un jour:
- API Gateway utilise l'hébergement partagé donc il utilise le nom de domaine pour déterminer à quelle API envoyer les requêtes. Il n'a aucun moyen de savoir que
api.yourdomain.com
appartient à votre API. - API Gateway exige que vous utilisiez
https
, mais le certificat qu'il utilise est uniquement valable pour le domaine par défaut.
il y a une solution, cependant. Voici les étapes que j'ai suivi quand j'ai récemment mis ceci:
- générer un certificat d'origine à partir de l'onglet crypto du tableau de bord Cloudflare.
- importer le certificat à AWS Certificate manager dans le
us-east-1
région, même si votre API est située dans une autre région. Si on vous demande la chaîne de certificats, vous pouvez la copier à partir de ici. - ajouter votre domaine personnalisé dans la console de la passerelle API et sélectionner le certificat que vous venez d'ajouter. Vérifiez L'AWS article de soutien pour plus d'informations sur la façon de le faire.
- il faut habituellement environ 45 minutes au domaine personnalisé pour terminer l'initialisation. Une fois que c'est fait, il vous donnera une nouvelle URL Cloudfront. Assurez-vous que votre API fonctionne toujours avec cette nouvelle URL.
- allez à L'onglet Cloudflare DNS et configurez un enregistrement CNAME pointant vers L'URL Cloudfront que vous venez de créer.
- passez à l'onglet crypto et réglez votre mode SSL à " Full (Strict)". Si vous ignorez cette étape, vous obtiendrez une boucle de redirection.
C'est ça. Profitez de votre nouvelle API très disponible servie à partir de votre domaine personnalisé!
configurer le domaine personnalisé de la passerelle API D'Amazon avec CloudFlare
dans votre console de gestion AWS, allez au service API Gateway et sélectionnez
Custom Domain Names
dans le menu de gauche.cliquez sur le
Create
bouton.connectez-vous à CloudFlare, sélectionnez votre domaine et ouvrez le
Crypto
ongletSSL
et paramétrez votre mode SSL à "Full (Strict)" pour éviter une redirection en boucle.Origin Certificates
et cliquez surCreate Certificate
laissez CloudFlare générer une clé privée et un CSR et choisissez RSA comme type de clé privée
assurez-vous que le nom d'hôte de votre domaine API personnalisé est couvert. (par exemple,
api.mydomain.com
. Vous pouvez configurer spécifiquement ce domaine personnalisé ou utiliser un caractère générique *.mydomain.com comme il est configuré par défaut.Choisir
PEM
comme le format de clé qui est sélectionné par défaut.dans les SSFE, passez à la région
US-EAST-1
et gotoCertificate Manager
.Cliquez sur
Import a Certificate
.Copiez le corps de certificat de votre certificat CloudFlare au corps de certificat à la configuration du domaine personnalisé dans la Console de gestion AWS.
copier la clé privée dans le champ "Certificat de clé privée" console
dans la copie de la chaîne de certificats la racine CA - RSA D'origine Cloudflare qui peut être trouvée ici.
Saisissez votre nom de domaine personnalisé dans la console AWS et un nom pour votre certificat
maintenant le nom de domaine personnalisé sera créé dans AWS CloudFront. Il peut prendre jusqu'à une heure avant que le domaine devient actif.
La prochaine chose que vous devez faire est mis en place les correspondances du domaine personnalisé dans la Console AWS.
la dernière étape est de créer un nouveau
CNAME Record
dans CloudFlare pour lier votre domaine à L'url CloudFront. Lorsque vous ouvrez la page Paramètres de votre domaine personnalisé dans la console AWS, Copiez le nom de domaine Distribution. C'est le domaine que vous devez utiliser lors de la création du nouveauCNAME Record
.