Création d'un compte privé API - APIPasserelle Amazon

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'un compte privé API

Avant de créer un compte privéAPI, vous devez d'abord créer un VPC point de terminaison pour API Gateway. Ensuite, vous créez votre compte privé API et vous y associez une politique de ressources. Vous pouvez éventuellement associer votre VPC point de terminaison à votre espace privé API pour simplifier la façon dont vous invoquez votreAPI. Enfin, vous déployez votreAPI.

Les procédures suivantes décrivent la procédure à suivre pour y parvenir. Vous pouvez créer un compte privé REST API en utilisant le AWS Management Console, AWS CLI ou un AWS SDK.

Prérequis

Pour suivre ces étapes, vous devez disposer d'VPCun Pour savoir comment créer unVPC, consultez la section Créer un VPC uniquement dans le guide de VPC l'utilisateur Amazon. Pour suivre toutes les étapes recommandées lors de la création de votreVPC, activez le mode privéDNS. De cette façon, vous pouvez invoquer votre API within a VPC sans avoir à transmettre l'hôte ou l'x-apigw-api-iden-tête.

Pour activer le mode privéDNS, les enableDnsHostnames attributs enableDnsSupport et de votre VPC propriété doivent être définis surtrue. Pour plus d'informations, consultez DNSSupport in Your VPC et Updating DNS Support for Your VPC.

Étape 1 : créer un VPC point de terminaison pour API Gateway dans votre VPC

La procédure suivante montre comment créer un VPC point de terminaison pour API Gateway. Pour créer un VPC point de terminaison pour API Gateway, vous devez spécifier le execute-api domaine dans Région AWS lequel vous créez votre compte privéAPI. Le execute-api domaine est le service du composant API Gateway à API exécuter.

Lorsque vous créez votre VPC point de terminaison pour API Gateway, vous spécifiez les DNS paramètres. Si vous désactivez le mode privéDNS, vous ne pouvez accéder qu'à votre API utilisation en mode publicDNS. Pour de plus amples informations, veuillez consulter Problème : je ne parviens pas à me connecter à mon public API depuis un point de VPC terminaison API Gateway.

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

  2. Dans le panneau de navigation, sous Cloud privé virtuel, choisissez Points de terminaison.

  3. Choisissez Créer un point de terminaison.

  4. (Facultatif) Dans le champ Name tag, entrez un nom pour aider à identifier votre VPC point de terminaison.

  5. Pour Service category (Catégorie de service), choisissez Services AWS .

  6. Sous Services, dans la barre de recherche, entrezexecute-api. Choisissez ensuite le point de terminaison du service API Gateway dans Région AWS lequel vous allez créer votreAPI. Le nom du service doit ressembler à Interface com.amazonaws.us-east-1.execute-api et le type doit être Interface.

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

  8. (Facultatif) Pour désactiver l'option Activer DNS le nom privé, sélectionnez Paramètres supplémentaires, puis désactivez Activer le DNS nom privé.

  9. Pour les sous-réseaux, choisissez les zones de disponibilité dans lesquelles vous avez créé les interfaces réseau des terminaux. Pour améliorer la disponibilité de votreAPI, choisissez plusieurs sous-réseaux.

  10. Pour Groupe de sécurité, sélectionnez le groupe de sécurité à associer aux interfaces réseau des VPC terminaux.

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

  11. Pour Policy, effectuez l'une des opérations suivantes :

    • Si vous n'avez pas créé votre compte privé API ou si vous ne souhaitez pas configurer de politique de point de VPC terminaison personnalisée, choisissez Accès complet.

    • Si vous avez déjà créé une politique de point de terminaison privée API et que vous souhaitez configurer une politique de point de VPC terminaison personnalisée, vous pouvez saisir une politique de point de VPC terminaison personnalisée. Pour de plus amples informations, veuillez consulter Utiliser des politiques de VPC point de terminaison pour APIs la confidentialité dans API Gateway.

    Vous pouvez mettre à jour la politique de VPC point de terminaison après avoir créé votre VPC point de terminaison. Pour plus d'informations, consultez Mettre à jour une politique de VPC point de terminaison.

  12. Choisissez Créer un point de terminaison.

  13. Copiez l'ID de point de VPC terminaison obtenu, tel que vous pourriez l'utiliser dans les étapes futures.

AWS CLI

La create-vpc-endpointcommande suivante peut être utilisée pour créer un VPC point de terminaison :

aws ec2 create-vpc-endpoint \ --vpc-id vpc-1a2b3c4d \ --vpc-endpoint-type Interface \ --service-name com.amazonaws.us-east-1.execute-api \ --subnet-ids subnet-7b16de0c \ --security-group-id sg-1a2b3c4d

Copiez l'ID de point de VPC terminaison obtenu, tel que vous pourriez l'utiliser dans les étapes futures.

Étape 2 : créer un compte privé API

Après avoir créé votre VPC point de terminaison, vous créez un point de terminaison privé RESTAPI. La procédure suivante montre comment créer un compte privéAPI.

AWS Management Console
Pour créer un compte privé API
  1. Connectez-vous à la console API Gateway à l'adresse https://console.aws.amazon.com/apigateway.

  2. Choisissez Create API.

  3. Sous RESTAPI, choisissez Build.

  4. Pour Nom, entrez un nom.

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

  6. Pour le type de API point de terminaison, sélectionnez Privé.

  7. (Facultatif) Pour le VPCpoint de terminaison IDs, entrez un ID de point de VPC terminaison.

    Si vous associez un identifiant de point de VPC terminaison à votre compte privéAPI, vous pouvez invoquer votre formulaire API depuis votre VPC nom sans remplacer un Host en-tête ou transmettre un. x-apigw-api-id header Pour plus d'informations, consultez(Facultatif) Associer ou dissocier un VPC point de terminaison à un terminal privé API.

  8. Choisissez Create API.

Après avoir effectué les étapes précédentes, vous pouvez suivre les instructions Commencez à utiliser la REST API console pour configurer les méthodes et les intégrations correspondantesAPI, mais vous ne pouvez pas déployer votreAPI. Pour déployer votreAPI, suivez l'étape 3 et associez une politique de ressources à votreAPI.

AWS CLI

La create-rest-apicommande suivante montre comment créer un compte privé API :

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)" }

Après avoir effectué les étapes précédentes, vous pouvez suivre les instructions Tutoriel : Création d'une API REST à l'aide de AWS SDK ou AWS CLI pour configurer les méthodes et les intégrations correspondantesAPI, mais vous ne pouvez pas déployer votreAPI. Pour déployer votreAPI, suivez l'étape 3 et associez une politique de ressources à votreAPI.

SDK JavaScript v3

L'exemple suivant montre comment créer un compte privé API en utilisant le AWS SDK for JavaScript v3 :

import {APIGatewayClient, CreateRestApiCommand} from "@aws-sdk/client-api-gateway"; const apig = new APIGatewayClient({region:"us-east-1"}); const input = { // CreateRestApiRequest name: "Simple PetStore (JavaScript v3 SDK, private)", // required description: "Demo private API created using the AWS SDK for JavaScript v3", version: "0.00.001", endpointConfiguration: { // EndpointConfiguration types: [ "PRIVATE"], }, }; export const handler = async (event) => { const command = new CreateRestApiCommand(input); try { const result = await apig.send(command); console.log(result); } catch (err){ console.error(err) } };

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

{ apiKeySource: 'HEADER', createdDate: 2024-04-03T17:56:36.000Z, description: 'Demo private API created using the AWS SDK for JavaScript v3', disableExecuteApiEndpoint: false, endpointConfiguration: { types: [ 'PRIVATE' ] }, id: 'abcd1234', name: 'Simple PetStore (JavaScript v3 SDK, private)', rootResourceId: 'efg567', version: '0.00.001' }

Après avoir effectué les étapes précédentes, vous pouvez suivre les instructions Tutoriel : Création d'une API REST à l'aide de AWS SDK ou AWS CLI pour configurer les méthodes et les intégrations correspondantesAPI, mais vous ne pouvez pas déployer votreAPI. Pour déployer votreAPI, suivez l'étape 3 et associez une politique de ressources à votreAPI.

Python SDK

L'exemple suivant montre comment créer un fichier privé à API l'aide de AWS SDK for Python :

import json import boto3 import logging logger = logging.getLogger() apig = boto3.client('apigateway') def lambda_handler(event, context): try: result = apig.create_rest_api( name='Simple PetStore (Python SDK, private)', description='Demo private API created using the AWS SDK for Python', version='0.00.001', endpointConfiguration={ 'types': [ 'PRIVATE', ], }, ) except botocore.exceptions.ClientError as error: logger.exception("Couldn't create private API %s.", error) raise attribute=["id", "name", "description", "createdDate", "version", "apiKeySource", "endpointConfiguration"] filtered_data ={key:result[key] for key in attribute} result = json.dumps(filtered_data, default=str, sort_keys='true') return result

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

"{\"apiKeySource\": \"HEADER\", \"createdDate\": \"2024-04-03 17:27:05+00:00\", \"description\": \"Demo private API created using the AWS SDK for \", \"endpointConfiguration\": {\"types\": [\"PRIVATE\"]}, \"id\": \"abcd1234\", \"name\": \"Simple PetStore (Python SDK, private)\", \"version\": \"0.00.001\"}"

Après avoir effectué les étapes précédentes, vous pouvez suivre les instructions Tutoriel : Création d'une API REST à l'aide de AWS SDK ou AWS CLI pour configurer les méthodes et les intégrations correspondantesAPI, mais vous ne pouvez pas déployer votreAPI. Pour déployer votreAPI, suivez l'étape 3 et associez une politique de ressources à votreAPI.

Étape 3 : configurer une politique de ressources pour un compte privé API

Votre vie privée actuelle API est inaccessible à tousVPCs. Utilisez une politique de ressources pour accorder à votre compte VPCs et à vos VPC terminaux l'accès à votre espace privéAPIs. Vous pouvez accorder l'accès à un VPC point de terminaison depuis n'importe quel AWS compte.

Votre politique en matière de ressources doit contenir aws:SourceVpc des aws:SourceVpce conditions visant à restreindre l'accès. Nous vous recommandons d'identifier des VPC points de terminaison spécifiques VPCs et de ne pas créer de politique de ressources autorisant l'accès pour tous les VPCs points de VPC terminaison.

La procédure suivante montre comment associer une politique de ressources à votreAPI.

AWS Management Console
  1. Connectez-vous à la console API Gateway à l'adresse https://console.aws.amazon.com/apigateway.

  2. Choisissez un RESTAPI.

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

  4. Choisissez Create Policy (Créer une politique).

  5. Choisissez Sélectionnez un modèle, puis choisissez Source VPC.

  6. {{vpceID}}Remplacez-le (y compris les bretelles) par votre identifiant de VPC terminal.

  7. Sélectionnez Enregistrer les modifications.

AWS CLI

La update-rest-apicommande suivante montre comment associer une politique de ressources à une politique existante API :

aws apigateway update-rest-api \ --rest-api-id a1b2c3 \ --patch-operations op=replace,path=/policy,value='"{\"jsonEscapedPolicyDocument\"}"'

Vous souhaiterez peut-être également contrôler les ressources qui ont accès à votre VPC point de terminaison. Pour contrôler quelles ressources ont accès à votre VPC point de terminaison, associez une politique de point de terminaison à votre VPC point de terminaison. Pour de plus amples informations, veuillez consulter Utiliser des politiques de VPC point de terminaison pour APIs la confidentialité dans API Gateway.

(Facultatif) Associer ou dissocier un VPC point de terminaison à un terminal privé API

Lorsque vous associez un VPC point de terminaison à votre compte privéAPI, API Gateway génère un nouvel DNS enregistrement d'alias Route 53. Vous pouvez utiliser cet enregistrement pour invoquer votre privé APIs comme vous le faites pour votre public APIs sans remplacer un Host en-tête ou en transmettre unx-apigw-api-id.

La base générée URL est au format suivant :

https://{rest-api-id}-{vpce-id}.execute-api.{region}.amazonaws.com/{stage}
Associate a VPC endpoint (AWS Management Console)

Vous pouvez associer un VPC point de terminaison à votre espace privé API lorsque vous le créez ou après sa création. La procédure suivante montre comment associer un VPC point de terminaison à un objet créé précédemmentAPI.

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

  2. Choisissez votre privéAPI.

  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 VPC terminaison supplémentaire.

  5. Dans le volet de navigation principal, choisissez APIles paramètres.

  6. Dans la section des APIdétails, choisissez Modifier.

  7. Pour VPCpoint de terminaison IDs, sélectionnez un point de VPC terminaison supplémentaireIDs.

  8. Choisissez Save (Enregistrer).

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

Dissociate a VPC endpoint (AWS Management Console)
Pour dissocier un VPC point de terminaison d'un terminal privé REST API
  1. Connectez-vous à la console API Gateway à l'adresse https://console.aws.amazon.com/apigateway.

  2. Choisissez votre privéAPI.

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

  4. Modifiez votre politique de ressources pour supprimer les mentions du VPC point de terminaison que vous souhaitez dissocier de votre terminal privéAPI.

  5. Dans le volet de navigation principal, choisissez APIles paramètres.

  6. Dans la section des APIdétails, choisissez Modifier.

  7. Pour le VPCpoint de terminaison IDs, choisissez le X pour dissocier le VPC point de terminaison.

  8. Choisissez Save (Enregistrer).

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

Associate a VPC endpoint (AWS CLI)

La create-rest-apicommande suivante montre comment associer des VPC points de terminaison au moment de la API création :

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" }

La update-rest-apicommande suivante montre comment associer des VPC points de terminaison à un objet API que vous avez déjà créé :

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" }

Redéployez votre API pour que les modifications prennent effet.

Disassociate a VPC endpoint (AWS CLI)

La update-rest-apicommande suivante montre comment dissocier un VPC point de terminaison d'un point de terminaison privé API :

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" }

Redéployez votre API pour que les modifications prennent effet.

Étape 4 : Déployer un compte privé API

Pour déployer votreAPI, vous devez créer un API déploiement et l'associer à une étape. La procédure suivante indique comment déployer votre compte privéAPI.

AWS Management Console
Pour déployer un compte privé API
  1. Choisissez votreAPI.

  2. Choisissez DeployAPI (Déployer).

  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).

AWS CLI

La commande create-deployment suivante montre comment déployer un compte privé : API

aws apigateway create-deployment --rest-api-id a1b2c3 \ --stage-name test \ --stage-description 'Private API test stage' \ --description 'First deployment'

Résoudre les problèmes liés à votre vie privée API

Vous trouverez ci-dessous des conseils de résolution des erreurs et des problèmes que vous pourriez rencontrer lors de la création d'un compte privéAPI.

Problème : je ne parviens pas à me connecter à mon public API depuis un point de VPC terminaison API Gateway

Lorsque vous créez votreVPC, vous pouvez configurer les DNS paramètres. Nous vous recommandons d'activer le mode privé DNS pour votreVPC. Si vous choisissez de désactiver le mode privéDNS, vous ne pouvez accéder à votre compte que API via le mode publicDNS.

Si vous activez le mode privéDNS, vous ne pouvez pas accéder au point de terminaison par défaut d'une API passerelle publique API depuis votre VPC point de terminaison. Vous pouvez accéder à un API avec un nom de domaine personnalisé.

Si vous créez un nom de domaine personnalisé régional, utilisez un enregistrement d'alias de type A, si vous créez un nom de domaine personnalisé optimisé pour les périphériques, votre type d'enregistrement n'est soumis à aucune restriction. Vous pouvez accéder à ces sites publics APIs avec le mode privé DNS activé. Pour plus d'informations, voir Problème : je me connecte à mon public API depuis un point de VPC terminaison API Gateway.

Problème : Mes API retours {"Message":"User: anonymous is not authorized to perform: execute-api:Invoke on resource: arn:aws:execute-api:us-east-1:********/****/****/"}

Dans votre politique de ressources, si vous attribuez au AWS principal un principal, par exemple :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", ""Principal": { "AWS": [ "arn:aws:iam::account-id:role/developer", "arn:aws:iam::account-id:role/Admin" ] }, "Action": "execute-api:Invoke", "Resource": [ "execute-api:/*" ] }, ... }

Vous devez utiliser AWS_IAM l'autorisation pour chaque méthode de votre API choix, sinon vous API renverrez le message d'erreur précédent. Pour plus d'instructions sur la façon d'activer AWS_IAM l'autorisation pour une méthode, consultezMéthodes pour REST APIs in API Gateway.

Problème : Je ne peux pas dire si mon VPC point de terminaison est associé à mon API

Si vous associez ou dissociez un VPC point de terminaison à votre espace privéAPI, vous devez redéployer votre. API L'opération de mise à jour peut prendre quelques minutes en raison de DNS la propagation. Pendant ce temps, le vôtre API est disponible, mais la DNS propagation de la nouvelle génération est DNS URLs peut-être encore en cours. Si, au bout de quelques minutes, vos nouveaux problèmes ne URLs sont pas DNS résolus, nous vous recommandons de redéployer votreAPI.