0

J'essaye de passer mon site, qui est actuellement CloudFront et Elastic Beanstalk, à API Gateway. Lorsque j'essaie de créer le domaine personnalisé dans la passerelle API, j'obtiens un message indiquant qu'il existe déjà une distribution CloudFront pour ce domaine, ce qui est vrai. Mais si je supprime cette distribution, mon site sera arrêté jusqu'à ce que la nouvelle distribution (pour la passerelle API) soit disponible.Comment puis-je créer un domaine personnalisé AWS API Gateway pour un domaine déjà utilisé dans une distribution CloudFront en cas d'indisponibilité?

Y at-il de toute façon je peux échanger ces ou quelque chose?

J'ai le contrôle sur les enregistrements DNS.

+0

Je suppose, vous utilisez CloudFront pour les actifs statiques uniquement, dans votre implémentation basée sur Beanstalk? –

+0

Il n'existe aucune solution d'indisponibilité nulle, en raison de l'espace de noms global de CloudFront, également utilisé par API Gateway. @jenswalter a donc la seule solution directe: ajoutez le nom par défaut du noeud final API Gateway comme origine à votre distribution CloudFront existante . Cependant ... il existe une solution de contournement pour minimiser les temps d'arrêt, si vous utilisez un sous-domaine (foo.example.com) plutôt qu'un domaine nu (exemple.com). Es-tu? –

+0

@YeshodhanKulkarni - non - J'utilise CloudFront comme couche de cache pour l'ensemble du site - statique et dynamique. – AvnerSo

Répondre

1

La solution qui a fonctionné à la fin:

  1. Modifier le DNS pour pointer directement à Désactiver Elastic Beanstalk
  2. & Supprimer la distribution CloudFront originale
  3. Créer un « domaine personnalisé » dans APIG (cela crée aussi un dist CloudFront.)
  4. Modifiez le DNS pour pointer à la nouveau CloudFront dist. (vous obtenez l'URL dans la console APIG sous Custom Domains)

Chacune de ces étapes prend un peu de temps ... mais il n'y a pas de temps d'arrêt.

1

Vous pouvez enregistrer votre API-Gateway en tant qu'origine cloudfront, puis affecter un comportement distinct à vos appels d'API.

Si vous avez besoin d'un guide étape par étape, vous pouvez utiliser le lien suivant:

Processing A Contact Form Using AWS Cloudfront, API Gateway, Lambda and SES

Pour une configuration CloudFormation vous pouvez utiliser cette description:

hosting a Cloudfront site with S3 and API Gateway

+0

J'ai essayé mais cela n'a pas fonctionné car API Gateway renverra un 'Forbidden' si vous essayez d'y accéder à partir d'un domaine qui n'est pas enregistré en tant que Domaine personnalisé Vous pouvez voir cela comme un exemple - d2dce1w778hsrx.cloudfront.net. Merci – AvnerSo

+0

L'erreur interdite n'est pas générée par le domaine personnalisé manquant (puisque ceux-ci ne sont pas nécessaires). Je suppose que votre origine ou votre comportement n'est pas correctement configuré. Avez-vous explicitement mis en liste blanche les champs d'en-tête? La correspondance de chemin est souvent aussi une cause d'erreur. L'origine a l'étape dans le cadre du chemin, mais le comportement contient déjà le premier élément de ressource de votre API. Malheureusement, il n'y a pas d'outil sur le côté AWS pour déboguer une telle configuration, c'est juste une erreur. –

+1

Dans ce cas, la mise en liste blanche de l'en-tête 'Host: 'devrait provoquer cette erreur. –