Pourquoi ces deux peuvent être régionaux/edge-optimisés séparément?
Régional et le Bord-Optimisé sont les options de déploiement. Aucune option ne change rien de fondamental sur la façon dont l'API est traité par de l'infrastructure AWS un la demande arrive au cœur de la Passerelle API de service ou de la façon dont les services derrière la Passerelle API en fin de compte sont accessibles -- ce qui change est la façon dont les demandes d'abord arriver à AWS et sont livrés à la Passerelle API de base pour l'exécution. Plus à ce sujet, ci-dessous.
Lorsque vous utilisez un nom de domaine personnalisé, votre API étape est déployé un deuxième temps, sur une seconde extrémité, qui est pourquoi vous avez une deuxième sélection d'un type de déploiement qui doit être fait.
Chaque point de terminaison a les caractéristiques de ce type de déploiement, qu'elles soient régionales ou edge-optimisé. L'original type de déploiement de l'API en elle-même n'a pas d'impact sur le comportement de l'API si elle est déployée avec un nom de domaine personnalisé, et par la suite accessible par le biais du nom de domaine personnalisé -- qu'ils sont indépendants.
En règle générale, si vous déployez votre API avec un nom de domaine personnalisé, vous ne pouvez pas continuer à utiliser le déploiement d'extrémité créé pour le principal de l'API (par exemple, xxxx.execute-api.{region}.amazonaws.com
), de sorte que la sélection initiale ne devrait pas d'importance.
Et quand je veux que chacun d'entre eux régional/bord-de l'optimisation?
Si vous utilisez un nom de domaine personnalisé, puis, comme l'a noté ci-dessus, l'original de votre déploiement de sélection pour l'API dans son ensemble n'a pas d'impact supplémentaire lorsque vous utilisez le domaine personnalisé.
Bord-optimisée points de terminaison ont été à l'origine de la seule option disponible. Si vous n'avez pas quelque chose sur laquelle baser votre choix, ce choix est généralement raisonnable.
Cette option itinéraires des demandes entrantes via AWS "du Réseau de Bord", qui est la CloudFront réseau, avec ses 100+ mondial de l'emplacement de bord. Cela ne change pas lorsque la Passerelle API de base finalement, les poignées de vos demandes, ils sont toujours en fin de compte géré au sein de la même région -, mais les demandes sont acheminées à partir de partout dans le monde dans le plus proche AWS bord, et ils voyagent à partir de là sur les réseaux exploités par AWS pour arriver à la région où vous avez déployé votre API.
Si les clients de votre Passerelle API stade sont réparties dans le monde entier, et vous ne le déploiement de votre API dans une seule région, vous voudrez probablement un bord-déploiement optimisé.
Le bord-configuration optimisée tend à vous donner de meilleurs mondiaux de la réactivité, car elle tend à réduire l'impact du réseau des allers-retours, et la qualité du transport n'est pas soumis à de nombreux aléas de l'Internet public, car la demande couvre le moins de distance possible avant de sauter hors de l'Internet et sur le réseau AWS. La connexion TCP et TLS sont négociés avec le navigateur de connexion/client à travers une courte distance (du client vers le bord) et le réseau edge maintient les connexions persistantes qui peuvent être réutilisés, tout ce qui fonctionne généralement en votre faveur... mais cette optimisation devient un parent de dépréciation lorsque vos clients sont toujours (ou souvent) l'appel de l'API à partir de l'intérieur de l'AWS infrastrucutre, au sein de la même région, puisque les demandes doivent passer sur le réseau edge et puis vers le cœur de réseau régional.
Si les clients de votre Passerelle API scène sont à l'intérieur de AWS et dans la même région où vous avez déployé l'API (comme lorsque l'API est en train d'être appelé par d'autres systèmes dans EC2 dans la région), alors vous aurez probablement envie régional de point de terminaison. Régional les points de terminaison d'acheminer des demandes grâce à une diminution de l'infrastructure AWS, assurer un minimum de latence et la réduction de la gigue, lorsque les demandes sont à venir à partir de EC2 dans la même région.
Comme un effet secondaire de routage à travers le réseau edge, edge optimisée points de terminaison également fournir quelques autres en-têtes de requête que vous pourriez trouver utiles, comme CloudFront-Viewer-Country: XX
qui tente d'identifier les deux chiffres du code de pays de la localisation géographique du client qui effectue la demande d'API. Régionale de points de terminaison n'ont pas ces en-têtes.
En règle générale, aller avec bord-optimisé à moins de trouver une raison de ne pas.
Ce serait une des raisons de ne pas le faire? Comme mentionné ci-dessus, si vous ou d'autres personnes appelant l'API à partir de l'intérieur de la même région AWS, vous voulez probablement régional de point de terminaison. Bord-optimisée points de terminaison peut introduire certains bord de cas d'effets secondaires plus avancés ou à des configurations complexes, en raison de la façon dont ils s'intègrent dans le reste de l'infrastructure. Il y a certaines choses que vous ne pouvez pas faire avec un bord-déploiement optimisé, ou qui ne sont pas optimaux si vous ne:
si vous utilisez CloudFront pour d'autres sites, sans rapport avec l'API Gateway, et CloudFront est configuré pour un générique autre nom de domaine, comme *.example.com
, alors vous ne pouvez pas utiliser un sous-domaine de ce dernier domaine, tel que l' api.example.com
, sur un bord-optimisé point de terminaison avec un nom de domaine personnalisé, en raison de la Passerelle API soumet une demande pour le réseau edge sur votre nom à la revendication toutes les demandes pour ce sous-domaine quand ils arrivent via CloudFront, et CloudFront rejette cette demande puisqu'elle représente une configuration non prise en charge lorsqu'il est utilisé avec de la Passerelle API, même si CloudFront prend en charge dans certaines autres circonstances.
si vous souhaitez fournir des Api qui répondent à la même nom de domaine personnalisé dans plusieurs régions, et utiliser Route 53 temps de Latence en Fonction de Routage pour fournir des demandes de la région la plus proche du demandeur, vous ne pouvez pas faire cela avec un bord optimisé de domaine personnalisé, parce que la seconde Passerelle API région ne sera pas en mesure de réclamer le trafic pour ce sous-domaine sur le réseau edge, depuis le réseau de bord nécessite exactement 1 cible pour tout nom de domaine (sous-domaine). Cette configuration peut être réalisée en utilisant régional des points de terminaison et de la Route 53 LBR, ou, peut être réalisé en tout en tirant parti du réseau de bord à l'aide de votre propre distribution CloudFront, Lambda@Edge pour sélectionner la cible de point de terminaison basé sur l'emplacement de l'appelant, et la Passerelle API régional des déploiements. Notez que cela ne peut pas être atteindre par tous les moyens si vous avez besoin de soutien IAM authentification de l'appelant, parce que l'appelant a besoin de savoir la région cible avant de signer et de soumettre la demande.
si vous souhaitez utiliser votre API en tant que partie d'un site plus grand, qui intègre de multiples ressources, est déployé derrière CloudFront, et utilise le chemin de la route des différents services, par exemple, /images/*
pourrait itinéraire d'un compartiment S3, /api/*
pourrait itinéraire de votre Passerelle API scène, et *
(tout le reste) peut-itinéraire d'un elastic load balancer dans EC2-alors vous ne voulez pas utiliser de bord optimisé API, parce que cela provoque vos demandes pour faire une boucle dans le réseau de bord à deux reprises (augmentation de la latence) et les causes de certaines valeurs d'en-tête sera perdue. Cette configuration n'est pas cassé, mais il n'est pas optimal. Pour cette, régionale point de terminaison est souhaitable.