Tutoriel : Création d'une API REST privée - 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.

Tutoriel : Création d'une API REST privée

Dans ce tutoriel, 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 AWS CloudFormation modèle pour créer un Amazon VPC, un point de terminaison VPC, une AWS Lambda fonction, puis vous lancez une instance Amazon EC2 que vous utiliserez pour tester votre API. Ensuite, vous l'utilisez AWS Management Console pour créer une API privée et y associer une politique de ressources qui autorise l'accès uniquement depuis votre point de terminaison VPC. Enfin, vous testez votre API.

Vue d'ensemble de l'API privée que vous créez dans ce didacticiel.

Pour suivre ce didacticiel, vous avez besoin d'un AWS compte et d'un AWS Identity and Access Management utilisateur disposant d'un accès à la console. Pour plus d’informations, consultez Prérequis pour démarrer avec API Gateway.

Dans ce tutoriel, vous utiliserez l AWS Management Console. Pour un AWS CloudFormation modèle qui crée cette API et toutes les ressources associées, consultez template.yaml.

Étape 1 : création de dépendances

Téléchargez et décompressez ce AWS CloudFormation modèle. 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 AWS CloudFormation pile
  1. Ouvrez la AWS CloudFormation console à l'adresse https://console.aws.amazon.com/cloudformation.

  2. Choisissez Créer une pile, puis choisissez Avec de nouvelles ressources (standard).

  3. Dans Spécifier le modèle, choisissez Charger un modèle de fichier.

  4. Sélectionnez le modèle que vous avez téléchargé.

  5. Choisissez Suivant.

  6. Pour Nom de la pile, saisissez private-api-tutorial, puis choisissez Suivant.

  7. Pour Configurer les options de pile, choisissez Suivant.

  8. Pour les fonctionnalités, reconnaissez que AWS CloudFormation vous pouvez créer des ressources IAM dans votre compte.

  9. Sélectionnez Envoyer.

AWS CloudFormation fournit les dépendances de votre API, ce qui peut prendre quelques minutes. Lorsque le statut de votre AWS CloudFormation pile est CREATE_COMPLETE, choisissez Outputs. Notez votre ID de point de terminaison d'un VPC. Vous en avez besoin pour les étapes ultérieures de ce tutoriel.

É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
  1. Connectez-vous à la console API Gateway à l'adresse https://console.aws.amazon.com/apigateway.

  2. Choisissez Créer une API, puis pour API REST, choisissez Créer.

  3. Sous API name (Nom de l'API), saisissez private-api-tutorial.

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

  5. Pour les ID de point de terminaison VPC, entrez l'ID de point de terminaison VPC dans les sorties de votre pile. AWS CloudFormation

  6. 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
  1. Connectez-vous à la console API Gateway à l'adresse https://console.aws.amazon.com/apigateway.

  2. Choisissez votre API.

  3. Sélectionnez la ressource /, puis choisissez Créer une méthode.

  4. Pour Type de méthode, sélectionnez GET.

  5. Pour Type d'intégration, sélectionnez Fonction Lambda.

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

  7. Pour la fonction Lambda, choisissez la fonction que vous avez créée avec le AWS CloudFormation modèle à l'étape 1. Le nom de la fonction commence par private-api-tutorial.

  8. Choisissez Créer une méthode.

Étape 4 : attacher une stratégie de ressources

Vous attachez une stratégie 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 stratégie 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 stratégie de ressources
  1. Connectez-vous à la console API Gateway à l'adresse https://console.aws.amazon.com/apigateway.

  2. Choisissez votre API.

  3. Choisissez Stratégie de ressources, puis Créer une stratégie.

  4. Saisissez la stratégie suivante. Remplacez VPCEid par votre identifiant de point de terminaison VPC dans les sorties de votre stack. 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:/*" } ] }
  5. 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
  1. Connectez-vous à la console API Gateway à l'adresse https://console.aws.amazon.com/apigateway.

  2. Choisissez votre API.

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

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

  5. Sous Stage name (Nom de l'étape), entrez test.

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

  7. 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
  1. Connectez-vous à la console API Gateway à l'adresse https://console.aws.amazon.com/apigateway.

  2. Choisissez votre API.

  3. Dans le volet de navigation principal, choisissez Étapes, puis choisissez l’étape de test.

  4. 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://abcdef123.execute-api.us-west-2.amazonaws.com/test. 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.

  5. 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/test

    Curl 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
  1. Ouvrez la console Amazon EC2 à l’adresse https://console.aws.amazon.com/ec2/.

  2. Choisissez Instances.

  3. Choisissez l'instance nommée private-api-tutorialque vous avez créée avec le AWS CloudFormation modèle à l'étape 1.

  4. Choisissez Connecter, puis Session Manager.

  5. Choisissez Connecter pour lancer une session basée sur un navigateur vers votre instance.

  6. 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/test

    Vérifiez que vous obtenez la réponse Hello from Lambda!.

Vous utilisez Session Manager pour appeler votre API depuis votre Amazon VPC.

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 tutoriel. Les étapes suivantes suppriment votre API REST et votre AWS CloudFormation stack.

Pour supprimer une API REST
  1. Connectez-vous à la console API Gateway à l'adresse https://console.aws.amazon.com/apigateway.

  2. Sur la page APIs (API) , sélectionnez une API. Choisissez Actions d’API, choisissez Supprimer l’API, puis confirmez votre choix.

Pour supprimer une AWS CloudFormation pile
  1. Ouvrez la AWS CloudFormation console à l'adresse https://console.aws.amazon.com/cloudformation.

  2. Sélectionnez votre AWS CloudFormation pile.

  3. Choisissez Supprimer, puis confirmez votre choix.

Prochaines étapes : Automatisez avec AWS CloudFormation

Vous pouvez automatiser la création et le nettoyage de toutes les AWS ressources impliquées dans ce didacticiel. Pour un exemple complet de modèle AWS CloudFormation , veuillez consulter template.yaml.