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
Avant de créer une API privée, vous allez créer un point de terminaison de VPC pour API Gateway. Ensuite, vous allez créer votre API privée et y attacher une politique de ressources. Si vous le souhaitez, vous pouvez associer votre point de terminaison de VPC à votre API privée pour simplifier l’invocation de votre API. Enfin, vous allez déployer votre API.
Les procédures suivantes décrivent la marche à suivre. Vous pouvez créer une API REST privée à l'aide du Console de gestion AWS, AWS CLI ou d'un AWS SDK.
Conditions préalables
Pour effectuer ces étapes, vous devez disposer d’un VPC entièrement configuré. Pour apprendre à créer un VPC, consultez Créer un VPC uniquement dans le Guide de l’utilisateur Amazon VPC. Pour suivre toutes les étapes recommandées lors de la création de votre VPC, activez le DNS privé. Ainsi, vous pouvez invoquer votre API au sein d’un VPC sans avoir à transmettre l’hôte ou l’en-tête x-apigw-api-id.
Pour activer le DNS privé, les attributs enableDnsSupport et enableDnsHostnames de votre VPC doivent être définis sur true. Pour plus d’informations, consultez Prise en charge du DNS dans votre VPC et Mise à jour de la prise en charge de DNS pour votre VPC.
Étape 1 : créer un point de terminaison de VPC pour API Gateway dans votre VPC
La procédure suivante montre comment créer un point de terminaison de VPC pour API Gateway. Pour créer un point de terminaison VPC pour API Gateway, vous devez spécifier le execute-api domaine dans Région AWS lequel vous créez votre API privée. Le domaine execute-api est le service des composants API Gateway pour l’exécution de l’API.
Lorsque vous créez votre point de terminaison de VPC pour API Gateway, vous devez spécifier les paramètres DNS. Si vous désactivez le DNS privé, vous ne pouvez accéder à votre API que via le DNS public. Pour de plus amples informations, veuillez consulter Problème : je ne parviens pas à me connecter à mon API publique à partir d’un point de terminaison de VPC API Gateway.
- Console de gestion AWS
Pour créer un point de terminaison de VPC d’interface pour API Gateway
-
Connectez-vous au Console de gestion AWS et ouvrez la console Amazon VPC à https://console.aws.amazon.com/vpc/ l'adresse.
-
Dans le panneau de navigation, sous Cloud privé virtuel, choisissez Points de terminaison.
-
Choisissez Créer un point de terminaison.
-
(Facultatif) Pour Balise de nom, saisissez un nom permettant d’identifier votre point de terminaison de VPC.
-
Pour Service category (Catégorie de service), choisissez Services AWS
.
-
Sous Services, dans la barre de recherche, saisissez execute-api. Choisissez ensuite le point de terminaison du service API Gateway dans Région AWS lequel vous allez créer votre API. Le nom du service devrait ressembler à com.amazonaws.us-east-1.execute-api et le type doit être Interface.
-
Pour VPC, choisissez le VPC dans lequel vous souhaitez créer le point de terminaison.
-
(Facultatif) Pour désactiver Activer le nom de DNS privé, choisissez Paramètres supplémentaires, puis décochez Activer le nom de DNS privé.
-
Pour Sous-réseaux, choisissez les zones de disponibilité dans lesquelles vous avez créé les interfaces réseau du point de terminaison. Pour améliorer la disponibilité de votre API, choisissez plusieurs sous-réseaux.
-
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.
-
Pour Politique, effectuez l’une des actions suivantes :
Si vous n’avez pas créé votre API privée ou si vous ne souhaitez pas configurer de politique personnalisée de point de terminaison de VPC, choisissez Accès complet.
-
Si vous avez déjà créé une API privée et que vous souhaitez configurer une politique personnalisée de point de terminaison de VPC, vous pouvez saisir une politique personnalisée de point de terminaison de VPC. Pour de plus amples informations, veuillez consulter Utilisation de politiques de point de terminaison de VPC pour des API privées dans API Gateway.
Vous pouvez mettre à jour la politique de point de terminaison de VPC après avoir créé votre point de terminaison de VPC. Pour plus d’informations, consultez Mise à jour d’une politique de point de terminaison de VPC.
-
Choisissez Créer un point de terminaison.
Copiez l’ID du point de terminaison de VPC obtenu. Vous pourriez en avoir besoin lors des étapes suivantes.
- AWS CLI
La commande create-vpc-endpoint suivante crée un point de terminaison de VPC :
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 du point de terminaison de VPC obtenu. Vous pourriez en avoir besoin lors des étapes suivantes.
Étape 2 : créer une API privée
Après avoir créé votre point de terminaison de VPC, vous allez créer une API REST privée. La procédure suivante montre comment créer une API privée.
- Console de gestion AWS
-
Après avoir effectué les étapes précédentes, vous pouvez suivre les instructions de la section Prise en main de la console d’API REST pour configurer des méthodes et des intégrations pour cette API, mais vous ne pouvez pas déployer votre API. Pour déployer votre API, suivez l’étape 3 et attachez une politique de ressources à votre API.
- AWS CLI
La commande create-rest-api suivante crée une API privée :
aws apigateway create-rest-api \
--name 'Simple PetStore (AWS CLI, Private)' \
--description 'Simple private PetStore API' \
--region us-west-2 \
--endpoint-configuration '{ "types": ["PRIVATE"], "ipAddressType": "dualstack" }'
Un appel fructueux renvoie une sortie similaire à ce qui suit :
{
"createdDate": "2017-10-13T18:41:39Z",
"description": "Simple private PetStore API",
"endpointConfiguration": {
"types": [
"PRIVATE"
],
"ipAddressType": "dualstack"
},
"id": "0qzs2sy7bh",
"name": "Simple PetStore (AWS CLI, Private)"
}
Après avoir effectué les étapes précédentes, vous pouvez suivre les instructions de la section Tutoriel : Création d'une API REST à l'aide AWS SDKs du AWS CLI pour configurer des méthodes et des intégrations pour cette API, mais vous ne pouvez pas déployer votre API. Pour déployer votre API, suivez l’étape 3 et attachez une politique de ressources à votre API.
- SDK JavaScript v3
L'exemple suivant montre comment créer une API privée à l'aide du AWS SDK pour la JavaScript version 3 :
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 de la section Tutoriel : Création d'une API REST à l'aide AWS SDKs du AWS CLI pour configurer des méthodes et des intégrations pour cette API, mais vous ne pouvez pas déployer votre API. Pour déployer votre API, suivez l’étape 3 et attachez une politique de ressources à votre API.
- Python SDK
-
L'exemple suivant montre comment créer une API privée à l'aide du AWS SDK pour 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 de la section Tutoriel : Création d'une API REST à l'aide AWS SDKs du AWS CLI pour configurer des méthodes et des intégrations pour cette API, mais vous ne pouvez pas déployer votre API. Pour déployer votre API, suivez l’étape 3 et attachez une politique de ressources à votre API.
Étape 3 : configurer une politique de ressources pour une API privée
Votre API privée actuelle est inaccessible à tous les VPC. Utilisez une politique de ressources pour autoriser vos VPC et vos points de terminaison de VPC à accéder à vos API privées. Vous pouvez accorder l'accès à un point de terminaison VPC depuis n'importe quel AWS compte.
Votre politique de ressources doit contenir la condition aws:SourceVpc ou aws:SourceVpce pour restreindre l’accès. Nous vous recommandons d’identifier des VPC et des points de terminaison de VPC spécifiques et de ne pas créer de politique de ressources autorisant l’accès à tous les VPC et points de terminaison de VPC.
La procédure suivante montre comment attacher une politique de ressources à votre API.
- Console de gestion AWS
-
Connectez-vous à la console API Gateway à l'adresse https://console.aws.amazon.com/apigateway.
Choisissez une API REST.
-
Dans le panneau de navigation principal, choisissez Stratégie de ressources.
-
Choisissez Create Policy (Créer une politique).
-
Choisissez Sélectionnez un modèle, puis VPC source.
-
Remplacez {{vpcID}} (y compris les accolades) par l’ID de votre VPC.
-
Sélectionnez Enregistrer les modifications.
- AWS CLI
La commande update-rest-api suivante attache une stratégie de ressources à une API existante :
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 point de terminaison de VPC. Pour contrôler quelles sont les ressources qui accèdent à votre point de terminaison de VPC, attachez une politique de point de terminaison de VPC à votre point de terminaison de VPC Pour de plus amples informations, veuillez consulter Utilisation de politiques de point de terminaison de VPC pour des API privées dans API Gateway.
(Facultatif) Association d’un point de terminaison de VPC à une API privée ou dissociation d’un point de terminaison de VPC d’une API privée
Lorsque vous associez un point de terminaison de VPC à votre API privée, API Gateway génère un enregistrement DNS d’alias Route 53. Vous pouvez utiliser cet enregistrement pour invoquer vos API privées comme vous le faites avec vos API publiques sans remplacer un en-tête Host ni transmettre 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}
- Associate a VPC endpoint (Console de gestion AWS)
-
Vous pouvez associer un point de terminaison de VPC à votre API privée lorsque vous la créez ou après l’avoir créée. La procédure suivante montre comment associer un point de terminaison de VPC à une API déjà créée.
Pour associer un point de terminaison de VPC à une API privée
Connectez-vous à la console API Gateway à l'adresse https://console.aws.amazon.com/apigateway.
-
Choisissez votre API privée.
-
Dans le panneau de navigation principal, choisissez Stratégie de ressources.
-
Modifiez votre politique de ressources pour autoriser les appels depuis votre point de terminaison d’un VPC supplémentaire.
-
Dans le panneau de navigation principal, choisissez Paramètres de l’API.
-
Dans la section Détails de l’API, choisissez Modifier.
-
Pour ID de points de terminaison de VPC sélectionnez les ID de point de terminaison de VPC supplémentaires.
-
Choisissez Enregistrer.
-
Redéployez l’API pour que les modifications prennent effet.
- Dissociate a VPC endpoint (Console de gestion AWS)
-
Pour dissocier un point de terminaison de VPC d’une API REST privée
Connectez-vous à la console API Gateway à l'adresse https://console.aws.amazon.com/apigateway.
-
Choisissez votre API privée.
-
Dans le panneau de navigation principal, choisissez Stratégie de ressources.
-
Modifiez votre politique de ressources pour supprimer les mentions du point de terminaison d’un VPC que vous souhaitez dissocier de votre API privée.
-
Dans le panneau de navigation principal, choisissez Paramètres de l’API.
-
Dans la section Détails de l’API, choisissez Modifier.
-
Pour les ID de points de terminaison d’un VPC, choisissez le X pour dissocier le point de terminaison d’un VPC.
-
Choisissez Enregistrer.
-
Redéployez l’API pour que les modifications prennent effet.
- Associate a VPC endpoint (AWS CLI)
-
La commande create-rest-api suivante associe des points de terminaison de VPC lors de la création de l’API :
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 commande update-rest-api suivante associe des points de terminaison de VPC à une API que vous avez déjà créée :
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 l’API pour que les modifications prennent effet.
- Disassociate a VPC endpoint (AWS CLI)
-
La commande update-rest-api suivante dissocie un point de terminaison de VPC d’une API privée :
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 l’API pour que les modifications prennent effet.
Étape 4 : déployer une API privée
Pour déployer votre API, vous devez créer un déploiement API et l’associer à une étape. La procédure suivante montre comment déployer votre API privée.
- Console de gestion AWS
Pour déployer une API privée
Choisissez votre API.
Sélectionnez Deploy API (Déployer une API).
Pour Étape, sélectionnez Nouvelle étape.
Pour Nom de l’étape, entrez un nom d’étape.
(Facultatif) Sous Description, entrez une description.
Choisissez Déployer.
- AWS CLI
La commande create-deployment suivante déploie une API privée :
aws apigateway create-deployment --rest-api-id a1b2c3 \
--stage-name test \
--stage-description 'Private API test stage' \
--description 'First deployment'
Résolution des problèmes de votre API privée
La section suivante fournit des conseils pour résoudre les erreurs et les problèmes que vous pouvez rencontrer lorsque vous créez une API privée.
Problème : je ne parviens pas à me connecter à mon API publique à partir d’un point de terminaison de VPC API Gateway
Lorsque vous créez votre VPC, vous pouvez configurer les paramètres DNS. Nous vous recommandons d’activer le DNS privé pour votre VPC. Si vous choisissez de ne pas activer le DNS privé, vous ne pouvez accéder à votre API que via le DNS public.
Si vous activez le DNS privé, vous ne pouvez pas accéder au point de terminaison par défaut d’une API publique d’API Gateway à partir de votre point de terminaison de VPC. Vous pouvez accéder à une 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 la périphérie, votre type d’enregistrement n’est soumis à aucune restriction. Vous pouvez accéder à ces API publiques avec le DNS privé activé. Pour plus d’informations, consultez Problème : pourquoi ne puis-je pas me connecter à mon API publique à partir d’un point de terminaison de VPC API Gateway ?
Problème : Mon API renvoie {"Message » :"Utilisateur : anonymous n'est pas autorisé à exécuter : execute-API:Invoke on resource : arn:aws:execute-api:us-east-1 : ********/****/****/ "}
Dans votre politique de ressources, si vous définissez le AWS principal sur un principal, comme suit :
- JSON
-
-
{
"Version":"2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::111122223333:role/developer",
"arn:aws:iam::111122223333:role/Admin"
]
},
"Action": "execute-api:Invoke",
"Resource": [
"execute-api:/stage/GET/pets"
]
}
]
}
Vous devez utiliser l’autorisation AWS_IAM pour chaque méthode de votre API, sinon votre API renvoie le message d’erreur précédent. Pour plus d’instructions sur l’activation de l’autorisation AWS_IAM pour une méthode, consultez Méthodes pour REST APIs dans API Gateway.
Problème : je ne sais pas si le point de terminaison de mon VPC est associé à mon API
Si vous associez un point de terminaison de VPC à votre API privée ou l’en dissociez, vous devez redéployer votre API. 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, nous vous recommandons de redéployer votre API.