Didacticiel : création d’une API REST privée
Dans ce didacticiel, vous créez une API REST privée. Les clients peuvent accéder à l’API uniquement à partir de votre Amazon VPC. L’API est isolée de l’Internet public, ce qui est une exigence de sécurité commune.
Ce didacticiel vous prendra environ 30 minutes. Tout d’abord, vous utilisez un modèle AWS CloudFormation pour créer un Amazon VPC, un point de terminaison d’un VPC, une fonction AWS Lambda et lancer une instance Amazon EC2 que vous utiliserez pour tester votre API. Ensuite, vous utilisez la AWS Management Console pour créer une API privée et attacher une politique de ressources qui autorise l’accès uniquement à partir de votre point de terminaison d’un VPC. Enfin, vous testez votre API.
![Vue d’ensemble de l’API privée que vous créez dans ce didacticiel.](images/private-api-tutorial-diagram.png)
Pour suivre ce didacticiel, vous avez besoin d’un compte AWS et d’un utilisateur AWS Identity and Access Management ayant accès à la console. Pour en savoir plus, consultez Configuration d’API Gateway avant son utilisation.
Dans ce didacticiel, vous utiliserez l’AWS Management Console. Afin d’obtenir un modèle AWS CloudFormation qui crée cette API et toutes les ressources connexes, consultez template.yaml.
Rubriques
- Étape 1 : création de dépendances
- Étape 2 : Créer une API privée
- Étape 3 : création d’une méthode et intégration
- Étape 4 : attacher une politique de ressources
- Étape 5 : déploiement de votre API
- Étape 6 : vérifiez que votre API n’est pas accessible publiquement
- Étape 7 : connectez-vous à une instance dans votre VPC et appelez votre API
- Étape 8 : Nettoyage
- Prochaines étapes : automatiser avec AWS CloudFormation
Étape 1 : création de dépendances
Téléchargez et décompressez ce modèle AWS CloudFormation. Vous utilisez le modèle pour créer toutes les dépendances de votre API privée, y compris un Amazon VPC, un point de terminaison d’un VPC et une fonction Lambda qui sert de backend de votre API. Vous créerez l’API privée ultérieurement.
Pour créer une pile AWS CloudFormation
Ouvrez la console AWS CloudFormation, à l’adresse https://console.aws.amazon.com/cloudformation
. -
Choisissez Créer une pile, puis choisissez Avec de nouvelles ressources (standard).
-
Dans Spécifier le modèle, choisissez Charger un modèle de fichier.
-
Sélectionnez le modèle que vous avez téléchargé.
-
Choisissez Suivant.
-
Pour Nom de la pile, saisissez
private-api-tutorial
, puis choisissez Suivant. -
Pour Configurer les options de pile, choisissez Suivant.
-
Pour Capacités, sachez que AWS CloudFormation peut créer des ressources IAM dans votre compte.
-
Sélectionnez Envoyer.
AWS CloudFormation alloue les dépendances de votre API, ce qui peut prendre quelques minutes. Lorsque le statut de votre pile AWS CloudFormation est CREATE_COMPLETE, choisissez Sorties. Notez votre ID de point de terminaison d’un VPC. Vous en avez besoin pour les étapes ultérieures de ce didacticiel.
Étape 2 : Créer une API privée
Vous créez une API privée pour autoriser uniquement les clients de votre VPC à y accéder.
Pour créer une API privée
Connectez-vous à la console API Gateway à l’adresse https://console.aws.amazon.com/apigateway
. -
Choisissez Créer une API, puis pour API REST, choisissez Créer.
-
Sous API name (Nom de l’API), saisissez
private-api-tutorial
. -
Pour Type de point de terminaison d’API, sélectionnez Privé.
-
Pour les ID de points de terminaison d’un VPC, saisissez l’ID de point de terminaison d’un VPC à partir des Sorties de votre pile AWS CloudFormation.
-
Sélectionnez Create API (Créer une API).
Étape 3 : création d’une méthode et intégration
Vous créez une méthode GET
et l’intégration Lambda pour gérer les demandes GET
à votre API. Lorsqu’un client appelle votre API, API Gateway envoie la demande à la fonction Lambda que vous avez créée à l’étape 1, puis renvoie une réponse au client.
Pour créer une méthode et une intégration
Connectez-vous à la console API Gateway à l’adresse https://console.aws.amazon.com/apigateway
. -
Choisissez votre API.
-
Choisissez Créer une méthode.
-
Pour Type de méthode, sélectionnez
GET
. -
Pour Type d’intégration, sélectionnez Fonction Lambda.
-
Activez Intégration de proxy Lambda. Avec une intégration de proxy Lambda, API Gateway envoie un événement à Lambda avec une structure définie, et transforme la réponse de votre fonction Lambda en réponse HTTP.
-
Pour fonction Lambda, choisissez la fonction que vous avez créée avec le modèle AWS CloudFormation à l’étape 1. Le nom de la fonction commence par
private-api-tutorial
. -
Choisissez Créer une méthode.
Étape 4 : attacher une politique de ressources
Vous attachez une politique de ressources à votre API qui permet aux clients d’appeler votre API uniquement via votre point de terminaison d’un VPC. Pour restreindre davantage l’accès à votre API, vous pouvez également configurer une politique de point de terminaison d’un VPC pour votre point de terminaison d’un VPC, ce n’est cependant pas nécessaire pour ce didacticiel.
Pour attacher une politique de ressources
Connectez-vous à la console API Gateway à l’adresse https://console.aws.amazon.com/apigateway
. -
Choisissez votre API.
-
Choisissez Stratégie de ressources, puis Créer une stratégie.
-
Saisissez la politique suivante. Remplacez
vpceID
par votre ID de point de terminaison d’un VPC à partir des Sorties de votre pile AWS CloudFormation.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "execute-api:/*", "Condition": { "StringNotEquals": { "aws:sourceVpce": "
vpceID
" } } }, { "Effect": "Allow", "Principal": "*", "Action": "execute-api:Invoke", "Resource": "execute-api:/*" } ] } -
Sélectionnez Enregistrer les modifications.
Étape 5 : déploiement de votre API
Ensuite, vous déployez votre API pour la rendre disponible pour les clients de votre Amazon VPC.
Pour déployer une API
Connectez-vous à la console API Gateway à l’adresse https://console.aws.amazon.com/apigateway
. -
Choisissez votre API.
Sélectionnez Deploy API (Déployer une API).
Pour Étape, sélectionnez Nouvelle étape.
Sous Stage name (Nom de l’étape), entrez
test
.(Facultatif) Sous Description, entrez une description.
Choisissez Deploy (Déployer).
Vous êtes désormais prêt à tester votre API.
Étape 6 : vérifiez que votre API n’est pas accessible publiquement
Utilisez curl
pour vérifier que vous ne pouvez pas appeler votre API depuis l’extérieur de votre Amazon VPC.
Pour tester votre API
Connectez-vous à la console API Gateway à l’adresse https://console.aws.amazon.com/apigateway
. -
Choisissez votre API.
-
Dans le volet de navigation principal, choisissez Étapes, puis choisissez l’étape de test.
-
Sous Détails de l’étape, choisissez l’icône de copie pour copier l’URL d’invocation de votre API. L’URL ressemble à
https://
. Le point de terminaison d’un VPC que vous avez créé à l’étape 1 a un DNS privé activé de sorte que vous pouvez utiliser l’URL fournie pour appeler votre API.abcdef123
.execute-api.us-west-2
.amazonaws.com/test -
Utilisez curl pour tenter d’appeler votre API depuis l’extérieur de votre VPC.
curl https://
abcdef123
.execute-api.us-west-2
.amazonaws.com/testCurl indique que le point de terminaison de votre API ne peut pas être résolu. Si vous obtenez une réponse différente, revenez à l’étape 2 et assurez-vous que vous choisissez Privé pour le type de point de terminaison de votre API.
curl: (6) Could not resolve host:
abcdef123
.execute-api.us-west-2
.amazonaws.com/test
Ensuite, vous vous connectez à une instance Amazon EC2 dans votre VPC pour appeler votre API.
Étape 7 : connectez-vous à une instance dans votre VPC et appelez votre API
Ensuite, vous testez votre API depuis votre Amazon VPC. Pour accéder à votre API privée, vous vous connectez à une instance Amazon EC2 dans votre VPC, puis utilisez curl pour appeler votre API. Vous utilisez le Gestionnaire de session Systems Manager pour vous connecter à votre instance dans le navigateur.
Pour tester votre API
Ouvrez la console Amazon EC2 à l’adresse https://console.aws.amazon.com/ec2/
. -
Choisissez Instances.
-
Choisissez l’instance nommée private-api-tutorial que vous avez créée avec le modèle AWS CloudFormation à l’étape 1.
-
Choisissez Connecter, puis Session Manager.
-
Choisissez Connecter pour lancer une session basée sur un navigateur vers votre instance.
-
Dans votre session Session Manager, utilisez curl pour appeler votre API. Vous pouvez appeler votre API car vous utilisez une instance dans votre Amazon VPC.
curl https://
abcdef123
.execute-api.us-west-2
.amazonaws.com/testVérifiez que vous obtenez la réponse
Hello from Lambda!
.
![Vous utilisez Session Manager pour appeler votre API depuis votre Amazon VPC.](images/private-api-tutorial-invoke.png)
Vous avez créé avec succès une API accessible uniquement à partir de votre Amazon VPC, puis vous avez vérifié qu’elle fonctionne.
Étape 8 : Nettoyage
Pour éviter des coûts inutiles, supprimez les ressources que vous avez créées dans le cadre de ce didacticiel. Les étapes suivantes suppriment votre API REST et votre pile AWS CloudFormation.
Pour supprimer une API REST
Connectez-vous à la console API Gateway à l’adresse https://console.aws.amazon.com/apigateway
. -
Sur la page APIs (API), sélectionnez une API. Choisissez Actions d’API, choisissez Supprimer l’API, puis confirmez votre choix.
Pour supprimer une pile AWS CloudFormation
Ouvrez la console AWS CloudFormation, à l’adresse https://console.aws.amazon.com/cloudformation
. -
Sélectionnez votre pile AWS CloudFormation.
-
Choisissez Supprimer, puis confirmez votre choix.
Prochaines étapes : automatiser avec AWS CloudFormation
Vous pouvez automatiser la création et le nettoyage de toutes les ressources AWS impliquées dans ce didacticiel. Pour un exemple complet de modèle AWS CloudFormation, consultez template.yaml.