Création d'une API privée dans Amazon API Gateway - Amazon API Gateway

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Création d'une API privée dans Amazon API Gateway

En utilisant Amazon API Gateway, vous pouvez créer des API REST privées auxquelles vous pouvez accéder uniquement à partir de votre cloud privé virtuel dans AMazon VPC en utilisant un point de terminaison VPC d'interface. Il s'agit d'une interface réseau de point de terminaison que vous créez dans votre VPC.

À l'aide des politiques de ressources, vous pouvez autoriser ou refuser l'accès à votre API à partir de VPC et de points de terminaison VPC sélectionnés, y compris entre comptes. AWS Chaque point de terminaison peut être utilisé pour accéder à plusieurs API privées. Vous pouvez également l'utiliser AWS Direct Connect pour établir une connexion entre un réseau local et Amazon VPC et accéder à votre API privée via cette connexion.

Important

Pour restreindre l'accès à votre API privée à des VPC ou des points de terminaison d'un VPC spécifiques, ajoutez des conditions aws:SourceVpc et aws:SourceVpce à la politique de ressources de votre API. Pour obtenir des exemples de politiques, consultez Exemple : Autoriser le trafic de l'API privée en fonction du point de terminaison d'un VPC ou d'un VPC source.

Dans tous les cas, le trafic vers votre API privée utilise des connexions sécurisées et ne quitte pas le réseau Amazon : il est isolé de l'Internet public.

Vous pouvez accéder à vos API privées par le biais des points de terminaison de VPC d'interface pour API Gateway, comme illustré dans le schéma suivant. Si vous avez activé le DNS privé, vous pouvez utiliser des noms DNS privés ou publics pour accéder à vos API. Si vous avez désactivé le DNS privé, vous pouvez uniquement utiliser des noms DNS publics.

Note

Les API privées API Gateway prennent uniquement en charge TLS 1.2. Les versions antérieures de TLS ne sont pas prises en charge.


            Accès à l'API privée avec le DNS privé activé

Au niveau général, les étapes de création d'une API privée sont les suivantes :

  1. Tout d'abord, créez un point de terminaison d'un VPC d'interface pour le service des composants API Gateway pour l'exécution de l'API, connu sous le nom execute-api dans votre VPC.

  2. Créez et testez votre API privée.

    1. Utilisez l'une des procédures suivantes pour créer votre API :

    2. Pour accorder l'accès à votre point de terminaison d'un VPC, créez une politique de ressources et attachez-la à votre API.

    3. Testez votre API.

Note

Les procédures ci-dessous présument que vous disposez déjà d'un VPC entièrement configuré. Pour de plus amples informations et pour commencer à créer un VPC, veuillez consulter Mise en route avec Amazon VPC dans le Guide de l'utilisateur Amazon VPC.

Considérations de développement d'une API privée

Note

Les points de terminaison d'un VPC pour les API privées sont soumis aux mêmes limitations que les autres points de terminaison d'un VPC d'interface. Pour en savoir plus, consultez Propriétés et limitations des points de terminaison d'interface dans le Guide AWS PrivateLink . Pour en savoir plus sur l'utilisation d'API Gateway avec des VPC et des sous-réseaux partagés, consultez Sous-réseaux partagés dans le Guide AWS PrivateLink .

Création d'un point de terminaison d'un VPC d'interface pour API Gateway execute-api

Le service des composants API Gateway pour l'exécution de l'API est appelé execute-api. Pour accéder à votre API privée une fois déployée, vous devez créer un point de terminaison d'un VPC d'interface pour votre VPC.

Une fois que vous avez créé votre point de terminaison d'un VPC, vous pouvez l'utiliser pour accéder à plusieurs API privées.

Pour créer un point de terminaison d'un VPC d'interface pour API Gateway execute-api
  1. Connectez-vous à la console Amazon VPC AWS Management Console et ouvrez-la à l'adresse https://console.aws.amazon.com/vpc/.

  2. Dans le volet de navigation, sélectionnez Points de terminaison, Créer un point de terminaison.

  3. Pour Catégorie de service, assurez-vous que l’option services AWS est sélectionnée.

  4. Dans Nom du service, choisissez le point de terminaison du service API Gateway, y compris la AWS région à laquelle vous souhaitez vous connecter. C'est au format com.amazonaws.region.execute-api, par exemple, com.amazonaws.us-east-1.execute-api.

    Pour Type, assurez-vous qu'Interface soit indiqué.

  5. Complétez les informations suivantes :

    • Pour VPC, choisissez le VPC dans lequel vous souhaitez créer le point de terminaison.

    • Pour Subnets (Sous-réseaux), choisissez les sous-réseaux (zones de disponibilité) dans lesquels créer les interfaces réseau du point de terminaison. Pour améliorer la disponibilité de votre API, choisissez plusieurs sous-réseaux.

      Note

      Certaines zones de disponibilité peuvent ne pas être prises en charge pour tous les services AWS .

    • Pour Enable Private DNS Name (Activer le nom de DNS privé), laissez la case cochée. Le DNS privé est activé par défaut.

      Lorsque le DNS privé est activé, vous pouvez accéder à votre API via le DNS privé ou public. (Ce paramètre n'affecte pas les utilisateurs autorisés à accéder à votre API, mais uniquement les adresses DNS qu'ils peuvent utiliser.) Toutefois, vous ne pouvez pas accéder aux API publiques à partir d'un VPC en utilisant un point de terminaison d'un VPC API Gateway avec le DNS privé activé. Notez que ces paramètres DNS n'affectent pas la capacité à appeler ces API publiques depuis le VPC si vous utilisez un nom de domaine personnalisé optimisé pour les périphériques pour accéder à l'API publique. L'utilisation d'un nom de domaine personnalisé optimisé pour les périphériques pour accéder à votre API publique (tout en utilisant le DNS privé pour accéder à votre API privée) est une façon d'accéder aux API publiques et privées à partir d'un VPC dans lequel le point de terminaison a été créé avec le DNS privé activé.

      Note

      Il est recommandé de laisser le DNS privé activé. Si vous choisissez de ne pas activer le DNS privé, vous ne pouvez accéder à votre API que via le DNS public. Pour en savoir plus, veuillez consulter la section Procédure d'appel d'une API privée.

      Pour utiliser l'option DNS privé, les attributs enableDnsSupport et enableDnsHostnames de votre VPC doivent être définis sur true. Pour de plus amples informations, veuillez consulter Prise en charge du DNS dans votre VPC et Mise à jour de la prise en charge de DNS pour votre VPC dans le Guide de l'utilisateur Amazon VPC.

    • Pour Security group (Groupe de sécurité), sélectionnez le groupe de sécurité à associer aux interfaces réseau du point de terminaison d'un VPC.

      Le groupe de sécurité que vous choisissez doit être configuré pour autoriser le trafic HTTPS entrant du port TCP 443 à partir d'une plage IP de votre VPC ou d'un autre groupe de sécurité de votre VPC.

  6. Choisissez Créer un point de terminaison.

Création d'une API privée à l'aide de la console API Gateway

Pour créer une API privée à l'aide de la console API Gateway
  1. Connectez-vous à la console API Gateway à l'adresse : https://console.aws.amazon.com/apigateway.

  2. Sélectionnez Create API (Créer une API).

  3. Sous REST API (API REST), choisissez Build (Création).

  4. Pour Nom, entrez un nom.

  5. (Facultatif) Sous Description, entrez une description.

  6. Pour Type de point de terminaison d'API, sélectionnez Privé.

  7. Sélectionnez Create API (Créer une API).

Vous pouvez ensuite configurer les méthodes d'API et leurs intégrations associées comme décrit dans les étapes 1 à 6 de Création d'une API avec l'intégration HTTP personnalisée.

Note

Tant que votre API possède une politique de ressources qui accorde l'accès à votre VPC ou au point de terminaison d'un VPC, tous les appels d'API échouent. Avant de tester et de déployer votre API, vous devez créer une politique de ressources et l'attacher à l'API comme décrit dans Configurez une politique de ressources pour une API privée..

Créez une API privée à l'aide du AWS CLI

Pour créer une API privée à l'aide de AWS CLI, appelez la create-rest-api commande :

aws apigateway create-rest-api \ --name 'Simple PetStore (AWS CLI, Private)' \ --description 'Simple private PetStore API' \ --region us-west-2 \ --endpoint-configuration '{ "types": ["PRIVATE"] }'

Un appel fructueux renvoie une sortie similaire à ce qui suit :

{ "createdDate": "2017-10-13T18:41:39Z", "description": "Simple private PetStore API", "endpointConfiguration": { "types": "PRIVATE" }, "id": "0qzs2sy7bh", "name": "Simple PetStore (AWS CLI, Private)" }

À partir de là, vous pouvez suivre les instructions figurant dans Configuration d'une API optimisée pour les périphériques à l'aide des commandes de l' AWS CLI pour configurer des méthodes et des intégrations pour cette API.

Lorsque vous êtes prêt à tester votre API, veillez à créer une politique de ressources et à l'attacher à l'API, comme indiqué dans Configurez une politique de ressources pour une API privée..

Créez une API privée à l'aide du AWS SDK pour JavaScript

Pour créer une API privée à l'aide du AWS SDK pour JavaScript :

apig.createRestApi({ name: "Simple PetStore (node.js SDK, private)", endpointConfiguration: { types: ['PRIVATE'] }, description: "Demo private API created using the AWS SDK for node.js", version: "0.00.001" }, function(err, data){ if (!err) { console.log('Create API succeeded:\n', data); restApiId = data.id; } else { console.log('Create API failed:\n', err); } });

Un appel fructueux renvoie une sortie similaire à ce qui suit :

{ "createdDate": "2017-10-13T18:41:39Z", "description": "Demo private API created using the AWS SDK for node.js", "endpointConfiguration": { "types": "PRIVATE" }, "id": "0qzs2sy7bh", "name": "Simple PetStore (node.js SDK, private)" }

Après avoir appliqué les étapes précédentes, vous pouvez suivre les instructions figurant dans Configuration d'une API optimisée pour les périphériques à l'aide du kit SDK AWS pour Node.js pour configurer des méthodes et des intégrations pour cette API.

Lorsque vous êtes prêt à tester votre API, veillez à créer une politique de ressources et à l'attacher à l'API, comme indiqué dans Configurez une politique de ressources pour une API privée..

Configurez une politique de ressources pour une API privée.

Avant de pouvoir accéder à votre API privée, vous devez créer une politique de ressources et l'attacher à l'API. Cela permet d'accéder à l'API depuis vos VPC et points de terminaison VPC ou depuis des VPC et points de terminaison VPC d'autres comptes auxquels vous accordez explicitement l'accès. AWS

Pour ce faire, suivez les instructions de Création et attachement d'une stratégie de ressources API Gateway à une API. À l'étape 5, choisissez l'exemple de VPC source. Remplacez {{vpceID}} (y compris les accolades) par l'ID de votre point de terminaison de VPC, puis choisissez Save (Enregistrer) pour enregistrer votre politique de ressources.

Vous devez également envisager d'attacher une politique de point de terminaison au point de terminaison de VPC pour spécifier l'accès accordé. Pour de plus amples informations, veuillez consulter Utilisation de stratégies de point de terminaison de VPC pour des API privées dans API Gateway.

Déploiement d'une API privée à l'aide de la console API Gateway

Pour déployer votre API privée, procédez comme suit dans la console API Gateway :

  1. Choisissez votre API.

  2. Sélectionnez Deploy API (Déployer une API).

  3. Pour Étape, sélectionnez Nouvelle étape.

  4. Pour Nom de l'étape, entrez un nom d'étape.

  5. (Facultatif) Sous Description, entrez une description.

  6. Choisissez Deploy (Déployer).

Association d'un point de terminaison d'un VPC à une API REST privée ou dissociation d'un point de terminaison d'un VPC d'une API REST privée

Lorsque vous associez un point de terminaison VPC à votre API privée, API Gateway génère un nouvel enregistrement DNS ALIAS Route 53. Vous pouvez utiliser cet enregistrement pour appeler vos API privées comme vous le faites avec vos API régionales ou optimisées pour la périphérie sans remplacer un en-tête Host ni passer un en-tête x-apigw-api-id.

Format de l'URL de base générée :

https://{rest-api-id}-{vpce-id}.execute-api.{region}.amazonaws.com/{stage}

L'association d'un point de terminaison d'un VPC à une API REST privée ou sa dissociation nécessite que vous mettiez à jour la configuration de l'API. Vous pouvez effectuer cette modification à l'aide de la console API Gateway, de la AWS CLI ou d'un AWS SDK pour API Gateway. L'opération de mise à jour peut prendre quelques minutes du fait de la propagation DNS. Pendant ce temps, votre API est disponible, mais la propagation DNS pour les URL DNS nouvellement générées peut encore être en cours. Si après plusieurs minutes vos nouvelles URL ne sont pas résolues dans DNS, vous pourrez essayer de créer un nouveau déploiement pour votre API.

Utilisation de la console API Gateway pour associer un point de terminaison d’un VPC à une API REST privée

Pour associer un point de terminaison d’un VPC supplémentaire à une API privée
  1. Connectez-vous à la console API Gateway à l'adresse : https://console.aws.amazon.com/apigateway.

  2. Choisissez votre API privée.

  3. Dans le panneau de navigation principal, choisissez Stratégie de ressources.

  4. Modifiez votre politique de ressources pour autoriser les appels depuis votre point de terminaison d’un VPC supplémentaire.

  5. Dans le panneau de navigation principal, choisissez Paramètres de l'API.

  6. Dans la section Détails de l'API, choisissez Modifier.

  7. Pour ID de points de terminaison d’un VPC sélectionnez les ID de point de terminaison d’un VPC supplémentaires.

  8. Choisissez Enregistrer.

  9. Redéployez l’API pour que les modifications prennent effet.

Utiliser la AWS CLI pour associer un point de terminaison VPC à une API REST privée

Pour associer des points de terminaison d'un VPC au moment de la création de l'API, utilisez la commande suivante :

aws apigateway create-rest-api \ --name Petstore \ --endpoint-configuration '{ "types": ["PRIVATE"], "vpcEndpointIds" : ["vpce-0212a4ababd5b8c3e", "vpce-0393a628149c867ee"] }' \ --region us-west-2

Le résultat se présente comme suit :

{ "apiKeySource": "HEADER", "endpointConfiguration": { "types": [ "PRIVATE" ], "vpcEndpointIds": [ "vpce-0212a4ababd5b8c3e", "vpce-0393a628149c867ee" ] }, "id": "u67n3ov968", "createdDate": 1565718256, "name": "Petstore" }

Pour associer des points de terminaison d'un VPC à une API privée déjà créée, utilisez la commande CLI suivante :

aws apigateway update-rest-api \ --rest-api-id u67n3ov968 \ --patch-operations "op='add',path='/endpointConfiguration/vpcEndpointIds',value='vpce-01d622316a7df47f9'" \ --region us-west-2

Le résultat se présente comme suit :

{ "name": "Petstore", "apiKeySource": "1565718256", "tags": {}, "createdDate": 1565718256, "endpointConfiguration": { "vpcEndpointIds": [ "vpce-0212a4ababd5b8c3e", "vpce-0393a628149c867ee", "vpce-01d622316a7df47f9" ], "types": [ "PRIVATE" ] }, "id": "u67n3ov968" }

Utilisation de la console API Gateway pour associer un point de terminaison d’un VPC à une API REST privée

Pour dissocier un point de terminaison VPC d'une API REST privée
  1. Connectez-vous à la console API Gateway à l'adresse : https://console.aws.amazon.com/apigateway.

  2. Choisissez votre API privée.

  3. Dans le panneau de navigation principal, choisissez Stratégie de ressources.

  4. Modifiez votre stratégie de ressources pour supprimer les mentions du point de terminaison d’un VPC que vous souhaitez dissocier de votre API privée.

  5. Dans le panneau de navigation principal, choisissez Paramètres de l'API.

  6. Dans la section Détails de l'API, choisissez Modifier.

  7. Pour les ID de points de terminaison d’un VPC, choisissez le X pour dissocier le point de terminaison d’un VPC.

  8. Choisissez Enregistrer.

  9. Redéployez l’API pour que les modifications prennent effet.

Utilisation de la CLI AWS pour dissocier le point de terminaison d’un VPC d’une API REST privée

Pour dissocier un point de terminaison d'un VPC d'une API privée, utilisez la commande CLI suivante :

aws apigateway update-rest-api \ --rest-api-id u67n3ov968 \ --patch-operations "op='remove',path='/endpointConfiguration/vpcEndpointIds',value='vpce-0393a628149c867ee'" \ --region us-west-2

Le résultat se présente comme suit :

{ "name": "Petstore", "apiKeySource": "1565718256", "tags": {}, "createdDate": 1565718256, "endpointConfiguration": { "vpcEndpointIds": [ "vpce-0212a4ababd5b8c3e", "vpce-01d622316a7df47f9" ], "types": [ "PRIVATE" ] }, "id": "u67n3ov968" }