

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.

# Didacticiel : création d’une API REST privée
<a name="private-api-tutorial"></a>

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 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.\]](http://docs.aws.amazon.com/fr_fr/apigateway/latest/developerguide/images/private-api-tutorial-diagram.png)


Pour suivre ce didacticiel, vous avez besoin d'un AWS compte et d'un Gestion des identités et des accès AWS utilisateur disposant d'un accès à la console. Pour de plus amples informations, veuillez consulter [Configuration d’API Gateway avant son utilisation](setting-up.md).

Dans ce didacticiel, vous utiliserez l’ AWS Management Console. Pour un CloudFormation modèle qui crée cette API et toutes les ressources associées, consultez [template.yaml](samples/private-api-full-template.zip).

**Topics**
+ [Étape 1 : création de dépendances](#private-api-tutorial-create-dependencies)
+ [Étape 2 : Créer une API privée](#private-api-tutorial-create-api)
+ [Étape 3 : création d’une méthode et intégration](#private-api-tutorial-create-method)
+ [Étape 4 : attacher une politique de ressources](#private-api-tutorial-attach-resource-policy)
+ [Étape 5 : déploiement de votre API](#private-api-tutorial-deploy-api)
+ [Étape 6 : vérifiez que votre API n’est pas accessible publiquement](#private-api-tutorial-test-private-api)
+ [Étape 7 : connectez-vous à une instance dans votre VPC et appelez votre API](#private-api-tutorial-connect-to-instance)
+ [Étape 8 : Nettoyage](#private-api-tutorial-cleanup)
+ [Prochaines étapes : Automatisez avec CloudFormation](#private-api-tutorial-next-steps)

## Étape 1 : création de dépendances
<a name="private-api-tutorial-create-dependencies"></a>

Téléchargez et décompressez [ce CloudFormation modèle](samples/private-api-starter-template.zip). 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 CloudFormation pile**

1. Ouvrez la CloudFormation console à l'adresse [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

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

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

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

1. Choisissez **Suivant**. 

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

1. Pour **Configurer les options de pile**, choisissez **Suivant**.

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

1. Choisissez **Suivant**, puis **Soumettre**.

CloudFormation fournit les dépendances de votre API, ce qui peut prendre quelques minutes. **Lorsque le statut de votre CloudFormation pile est **CREATE\$1COMPLETE**, choisissez Outputs.** 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
<a name="private-api-tutorial-create-api"></a>

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.](https://console.aws.amazon.com/apigateway)

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

1. Sous **API name (Nom de l’API)**, saisissez **private-api-tutorial**.

1. Pour **Type de point de terminaison d’API**, sélectionnez **Privé**.

1. Pour le point de **terminaison VPC IDs**, entrez l'ID du point de terminaison VPC dans les **sorties** de votre pile. CloudFormation 

1. Pour **Type d’adresse IP**, choisissez **Double pile**.

1. Sélectionnez **Create API** (Créer une API).

## Étape 3 : création d’une méthode et intégration
<a name="private-api-tutorial-create-method"></a>

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.](https://console.aws.amazon.com/apigateway)

1. Choisissez votre API.

1. Choisissez **Créer une méthode**.

1. Pour **Type de méthode**, sélectionnez `GET`.

1. Pour **Type d’intégration**, sélectionnez **Fonction Lambda**.

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

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

1. Choisissez **Créer une méthode**.

## Étape 4 : attacher une politique de ressources
<a name="private-api-tutorial-attach-resource-policy"></a>

Vous attachez une [politique de ressources](apigateway-resource-policies.md) à 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](apigateway-vpc-endpoint-policies.md) pour votre point de terminaison d’un VPC, ce n’est cependant pas nécessaire pour ce didacticiel.

**Pour attacher une politique de ressources**

1. Connectez-vous à la console API Gateway à l'adresse [https://console.aws.amazon.com/apigateway.](https://console.aws.amazon.com/apigateway)

1. Choisissez votre API.

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

1. Saisissez la politique suivante. *vpceID*Remplacez-le par l'ID de point de terminaison de votre VPC figurant dans les **sorties** de votre CloudFormation stack.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Effect": "Deny",
               "Principal": "*",
               "Action": "execute-api:Invoke",
               "Resource": "execute-api:/*",
               "Condition": {
                   "StringNotEquals": {
                       "aws:sourceVpce": "vpce-abcd1234"
                   }
               }
           },
           {
               "Effect": "Allow",
               "Principal": "*",
               "Action": "execute-api:Invoke",
               "Resource": "execute-api:/*"
           }
       ]
   }
   ```

------

1. Sélectionnez **Enregistrer les modifications**.

## Étape 5 : déploiement de votre API
<a name="private-api-tutorial-deploy-api"></a>

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.](https://console.aws.amazon.com/apigateway)

1. Choisissez votre API.

1. Sélectionnez **Deploy API (Déployer une API)**.

1. Pour **Étape**, sélectionnez **Nouvelle étape**.

1. Sous **Stage name (Nom de l’étape)**, entrez **test**.

1. (Facultatif) Sous **Description**, entrez une description.

1. 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
<a name="private-api-tutorial-test-private-api"></a>

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.](https://console.aws.amazon.com/apigateway)

1. Choisissez votre API.

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

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

1. 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
<a name="private-api-tutorial-connect-to-instance"></a>

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/](https://console.aws.amazon.com/ec2/).

1. Choisissez **Instances**.

1. Choisissez l'instance nommée **private-api-tutorial**que vous avez créée avec le CloudFormation modèle à l'étape 1.

1. Choisissez **Connecter**, puis **Session Manager**.

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

1. 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.\]](http://docs.aws.amazon.com/fr_fr/apigateway/latest/developerguide/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
<a name="private-api-tutorial-cleanup"></a>

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 CloudFormation stack.

**Pour supprimer une API REST**

1. Connectez-vous à la console API Gateway à l'adresse [https://console.aws.amazon.com/apigateway.](https://console.aws.amazon.com/apigateway)

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

**Pour supprimer une CloudFormation pile**

1. Ouvrez la CloudFormation console à l'adresse [https://console.aws.amazon.com/cloudformation.](https://console.aws.amazon.com/cloudformation/)

1. Sélectionnez votre CloudFormation pile.

1. Choisissez **Supprimer**, puis confirmez votre choix.

## Prochaines étapes : Automatisez avec CloudFormation
<a name="private-api-tutorial-next-steps"></a>

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 CloudFormation , veuillez consulter [template.yaml](samples/private-api-full-template.zip).