

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.

# Publication d'un message Amazon SNS à partir d'Amazon VPC
<a name="sns-vpc-tutorial"></a>

Cette section vous explique comment publier dans une rubrique Amazon SNS tout en gardant les messages sécurisés dans un réseau privé. Vous publiez un message à partir d'une instance Amazon EC2 qui est hébergée dans Amazon Virtual Private Cloud (Amazon VPC). Le message reste sur le AWS réseau sans passer par l'Internet public. En publiant des messages de façon privée à partir d'un VPC, vous pouvez améliorer la sécurité du trafic entre vos applications et Amazon SNS. Cette sécurité est importante lorsque vous publiez des informations personnelles identifiables (PII) à propos de vos clients, ou lorsque votre application est soumise à des réglementations du marché. Par exemple, la publication en mode privé est utile si vous disposez d'un système de santé qui doit se conformer à la loi HIPAA (Health Insurance Portability and Accountability Act), ou d'un système financier qui doit se conformer à la norme PCI DSS (Payment Card Industry Data Security Standard).

Les étapes générales à suivre sont les suivantes :
+ Utilisez un AWS CloudFormation modèle pour créer automatiquement un réseau privé temporaire dans votre Compte AWS.
+ Créez un point de terminaison de VPC qui connecte le VPC avec Amazon SNS.
+ Connectez-vous à une instance Amazon EC2 et publiez un message en mode privé dans une rubrique Amazon SNS.
+ Vérifier que le message a été remis avec succès.
+ Supprimez les ressources que vous avez créées au cours de ce processus afin qu'elles ne restent pas dans votre Compte AWS.

Le schéma suivant décrit le réseau privé que vous créez dans votre AWS compte au fur et à mesure que vous effectuez ces étapes :

![Architecture du réseau privé que vous créez avec ces étapes.](http://docs.aws.amazon.com/fr_fr/sns/latest/dg/images/vpce-tutorial-architecture.png)


Ce réseau est composé d'un VPC qui contient une instance Amazon EC2. L'instance se connecte à Amazon SNS via un *point de terminaison VPC d'interface*. Ce type de point de terminaison se connecte à des services alimentés par AWS PrivateLink. Une fois la connexion établie, vous pouvez vous connecter à l'instance Amazon EC2 et publier des messages dans la rubrique Amazon SNS, même si le réseau est déconnecté de l'Internet public. Le sujet répartit les messages qu'il reçoit vers deux AWS Lambda fonctions d'abonnement. Ces fonctions enregistrent les messages qu'elles reçoivent dans Amazon CloudWatch Logs.

Il vous faudra environ 20 minutes pour réaliser ces étapes.

**Topics**
+ [Avant de commencer](#sns-vpc-prereqs)
+ [Étape 1 : Créer une paire de clés](#sns-vpc-keypair)
+ [Étape 2 : Créer des ressources](#sns-vpc-resources)
+ [Étape 3 : Vérifier la connexion Internet pour votre instance](#sns-vpc-connection)
+ [Étape 4 : Créer un point de terminaison](#sns-vpc-endpoint)
+ [Étape 5 : Publier un message](#sns-vpc-publish)
+ [Étape 6 : Vérification](#sns-vpc-verify)
+ [Étape 7 : nettoyer](#sns-vpc-delete)
+ [Ressources connexes](#sns-vpc-resources-related)

## Avant de commencer
<a name="sns-vpc-prereqs"></a>

Avant de commencer, vous avez besoin d'un compte Amazon Web Services (AWS). Lorsque vous vous inscrivez, votre compte est automatiquement connecté à tous les services AWS, y compris Amazon SNS et Amazon VPC. Si vous n'avez pas encore créé de compte, accédez à [https://aws.amazon.com/](https://aws.amazon.com/), puis choisissez **Créer un compte gratuit**.

## Étape 1 : Créer une paire de clés Amazon EC2
<a name="sns-vpc-keypair"></a>

Une *paire de clés* est utilisée pour vous connecter à une instance Amazon EC2. Elle se compose d'une clé publique utilisée pour chiffrer vos informations de connexion et d'une clé privée utilisée pour les déchiffrer. Lorsque vous créez une paire de clés, vous téléchargez une copie de la clé privée. Par la suite, vous utiliserez la paire de clés pour vous connecter à une instance Amazon EC2. Pour vous connecter, vous spécifiez le nom de la paire de clés et vous fournissez la clé privée.

**Pour créer la paire de clés**

1. Connectez-vous à la console Amazon EC2 AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. Dans le menu de navigation de gauche, recherchez la section **Network & Security (Réseau et sécurité)**. Choisissez ensuite **Paires de clés**.

1. Choisissez **Create Key Pair** (Créer une paire de clés).

1. Dans la fenêtre **Créer une paire de clés**, pour le champ **Nom de la paire de clés**, tapez **VPCE-Tutorial-KeyPair**. Ensuite, choisissez **Créer**.  
![La fenêtre Créer une paire de clés avec le texte « VPCE-Tutoriel- KeyPair » dans le champ du nom de la paire de clés.](http://docs.aws.amazon.com/fr_fr/sns/latest/dg/images/vpce-tutorial-key-pair.png)

1. Le fichier de clé privée est automatiquement téléchargé dans votre navigateur. Enregistrez-la dans un emplacement sûr. Amazon EC2 attribut au fichier une extension `.pem`. 

1. (Facultatif) Si vous utilisez un client SSH sur un ordinateur Mac ou Linux pour vous connecter à votre instance Linux, utilisez la commande `chmod` pour définir les autorisations de votre fichier de clé privée afin d'être la seule personne autorisée à le lire :

   1. Ouvrez un terminal et accédez au répertoire contenant la clé privée : 

      ```
      $ cd /{{filepath_to_private_key}}/
      ```

   1. Définissez les autorisations à l'aide de la commande suivante :

      ```
      $ chmod 400 VPCE-Tutorial-KeyPair.pem
      ```

## Étape 2 : Création des AWS ressources
<a name="sns-vpc-resources"></a>

Pour configurer l'infrastructure, vous utilisez un CloudFormation *modèle*. Un modèle est un fichier qui tient lieu de plan pour créer des ressources AWS , comme des instances Amazon EC2 et des rubriques Amazon SNS. Le modèle de ce processus est fourni ci-dessous GitHub pour que vous puissiez le télécharger. 

Vous fournissez le modèle et CloudFormation vous CloudFormation provisionnez les ressources dont vous avez besoin sous forme de *pile* dans votre Compte AWS. Une pile est un ensemble de ressources que vous gérez comme une seule unité. Lorsque vous avez terminé ces étapes, vous pouvez l'utiliser CloudFormation pour supprimer toutes les ressources de la pile en une seule fois. Ces ressources ne restent pas dans votre mémoire Compte AWS, sauf si vous le souhaitez.

La pile pour ce processus inclut les ressources suivantes :
+ Un VPC et les ressources de mise en réseau associées, notamment un sous-réseau, un groupe de sécurité, une passerelle Internet et une table de routage.
+ Une instance Amazon EC2 qui est lancée dans le sous-réseau au sein du VPC.
+ Une rubrique Amazon SNS
+ Deux AWS Lambda fonctions. Ces fonctions reçoivent des messages publiés sur la rubrique Amazon SNS et enregistrent les événements dans CloudWatch des journaux.
+ Statistiques CloudWatch et journaux Amazon.
+ Un rôle IAM qui permet à l'instance Amazon EC2 d'utiliser Amazon SNS, et un rôle IAM qui permet aux fonctions Lambda d'écrire dans des journaux. CloudWatch 

**Pour créer les AWS ressources**

1. Téléchargez le [fichier modèle](https://github.com/aws-samples/aws-sns-samples/blob/master/templates/SNS-VPCE-Tutorial-CloudFormation.template) depuis le GitHub site Web.

1. Connectez-vous à la [console CloudFormation](https://console.aws.amazon.com/cloudformation).

1. Sélectionnez **Créer une pile**.

1. Sur la page **Select Template (Sélectionner un modèle)**, choisissez **Upload a template to Amazon S3 (Charger un modèle dans Amazon S3)**, sélectionnez le fichier, puis **Next (Suivant)**.

1. Sur la page **Specify Details (Spécifier les détails)**, spécifiez les noms de pile et de clé :

   1. Pour le **Nom de la pile**, tapez **VPCE-Tutorial-Stack**.

   1. Pour **KeyName**, choisissez **VPCE-Tutorial-**. KeyPair

   1. Pour **SSHLocation**, conservez la valeur par défaut de**0.0.0.0/0**.  
![La page Spécifier les détails affiche les champs de valeur remplis pour le nom de la pile KeyName, et SSHLocation.](http://docs.aws.amazon.com/fr_fr/sns/latest/dg/images/vpce-tutorial-stack-name.png)

   1. Choisissez **Suivant**.

1. Dans la page **Options**, conservez toutes les valeurs par défaut, puis choisissez **Suivant**.

1. Sur la page **Review (Vérification)**, vérifiez les détails de la pile.

1. Sous **Fonctionnalités**, reconnaissez que cela CloudFormation peut créer des ressources IAM avec des noms personnalisés.

1. Choisissez **Créer**.

   La CloudFormation console ouvre la page **Stacks**. Le statut VPCE-Tutorial-Stack est **CREATE\_IN\_PROGRESS**. Après quelques minutes, une fois le processus de création terminé, l'état devient **CREATE\_COMPLETE**.  
![La CloudFormation pile dont le statut est CREATE_COMPLETE.](http://docs.aws.amazon.com/fr_fr/sns/latest/dg/images/vpce-tutorial-stack-create-complete.png)
**Astuce**  
Choisissez le bouton **Actualiser** pour afficher l'état le plus récent de la pile.

## Étape 3 : Confirmation que votre instance Amazon EC2 n'a pas accès à Internet
<a name="sns-vpc-connection"></a>

L'instance Amazon EC2 qui a été lancée dans votre VPC à l'étape précédente n'a pas accès à Internet. Elle interdit le trafic sortant, et elle ne peut pas publier des messages dans Amazon SNS. Vous pouvez vérifier cela en vous connectant à l'instance. Essayez ensuite de vous connecter à un point de terminaison public et tentez d'envoyer un message à Amazon SNS.

À ce stade, la tentative de publication échoue. Dans une étape ultérieure, une fois que vous aurez créé un point de terminaison de VPC pour Amazon SNS, votre tentative de publication réussira.

**Pour vous connecter à votre instance Amazon EC2**

1. Ouvrez la console Amazon EC2 à l’adresse [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Dans le menu de navigation de gauche, recherchez la section **Instances**. Choisissez ensuite **Instances**.

1. Dans la liste des instances, sélectionnez **VPCE- Tutorial-EC2Instance**.

1. Copiez le nom d'hôte fourni dans la colonne **DNS public**.  
![Informations sur l'instance Amazon EC2 lancée par. CloudFormation](http://docs.aws.amazon.com/fr_fr/sns/latest/dg/images/vpce-tutorial-instance-details.png)

1. Ouvrez un terminal . À partir du répertoire contenant la paire de clés, connectez-vous à l'instance à l'aide de la commande suivante, où se {{instance-hostname}} trouve le nom d'hôte que vous avez copié depuis la console Amazon EC2 :

   ```
   $ ssh -i VPCE-Tutorial-KeyPair.pem ec2-user@{{instance-hostname}}
   ```

**Pour vérifier que l'instance n'a pas de connectivité Internet**
+ Dans votre terminal, essayez de vous connecter à n'importe quel point de terminaison public, comme amazon.com :

  ```
  $ ping amazon.com
  ```

  Comme la tentative de connexion échoue, vous pouvez annuler à tout moment (Ctrl\+C sur Windows ou Commande \+ C sur macOS).

**Pour vérifier que l'instance n'a pas de connectivité vers Amazon SNS**

1. Connectez-vous à la [console Amazon SNS](https://console.aws.amazon.com/sns/home).

1. Dans le menu de navigation de gauche, choisissez **Rubriques**.

1. Sur la page **Rubrique**, copiez l'Amazon Resource Name (ARN) de la rubrique **VPCE-Tutorial-Topic**.

1. Dans votre terminal, essayez de publier un message dans la rubrique :

   ```
   $ aws sns publish --region {{aws-region}} --topic-arn {{sns-topic-arn}} --message "Hello"
   ```

   Comme la tentative de publication échoue, vous pouvez annuler à tout moment.

## Étape 4 : Création d'un point de terminaison Amazon VPC pour Amazon SNS
<a name="sns-vpc-endpoint"></a>

Pour connecter le VPC à Amazon SNS, vous définissez un point de terminaison de VPC d'interface. Une fois que vous avez ajouté le point de terminaison, vous pouvez vous connecter à l'instance Amazon EC2 dans votre VPC et à partir de là, vous pouvez utiliser l'API Amazon SNS. Vous pouvez publier des messages dans la rubrique, et les messages sont publiés en mode privé. Ils restent dans le AWS réseau et ne naviguent pas sur l'Internet public.

**Note**  
L'instance n'a toujours pas accès aux autres AWS services et points de terminaison sur Internet.

**Pour créer le point de terminaison**

1. Ouvrez la console Amazon VPC à l’adresse [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. Dans le menu de navigation de gauche, choisissez **Endpoints (Points de terminaison)**.

1. Choisissez **Créer un point de terminaison**.

1. Sur la page **Créer un point de terminaison**, pour **Catégorie de services**, conservez la valeur par défaut **services AWS **.

1. Pour **Nom du service**, choisissez le nom de service pour Amazon SNS.

   Les noms de service varient en fonction de la région choisie. Par exemple, si vous avez choisi USA East (Virginie du Nord), le nom du service est **com.amazonaws. {{us-east-1}}.sns**.

1. Pour **VPC**, choisissez le VPC qui a le nom **VPCE-Tutorial-VPC**.  
![Menu VPC sur la page de création de point de terminaison.](http://docs.aws.amazon.com/fr_fr/sns/latest/dg/images/vpce-tutorial-create-endpoint-vpc.png)

1. Pour **Subnets (Sous-réseaux)**, choisissez le sous-réseau qui a *VPCE-Tutorial-Subnet* dans l'ID de sous-réseau.  
![Les sous-réseaux sur la page de création des points de terminaison.](http://docs.aws.amazon.com/fr_fr/sns/latest/dg/images/vpce-tutorial-create-endpoint-subnet.png)

1. Pour **Enable Private DNS Name (Activer le nom DNS privé)**, sélectionnez **Enable for this endpoint (Activer pour ce point de terminaison)**.

1. Pour **Groupe de sécurité**, choisissez **Sélectionner un groupe de sécurité**, puis choisissez **VPCE-Tutorial-**. SecurityGroup  
![Les groupes de sécurité sur la page de création des points de terminaison.](http://docs.aws.amazon.com/fr_fr/sns/latest/dg/images/vpce-tutorial-create-endpoint-security-group.png)

1. Choisissez **Créer un point de terminaison**. La console Amazon VPC confirme qu'un point de terminaison de VPC a été créé.  
![Le message de confirmation s'affiche après que vous avez créé un point de terminaison.](http://docs.aws.amazon.com/fr_fr/sns/latest/dg/images/vpce-tutorial-create-endpoint-confirmation.png)

1. Choisissez **Fermer**. 

   La console Amazon VPC ouvre la page **Points de terminaison**. Le nouveau point de terminaison a l'état **pending (en attente)**. Après quelques minutes, une fois le processus de création terminé, l'état devient **available (disponible)**.  
![Le point de terminaison de VPC avec un état disponible.](http://docs.aws.amazon.com/fr_fr/sns/latest/dg/images/vpce-tutorial-create-endpoint-status-available.png)

## Étape 5 : Publication d'un message dans votre rubrique Amazon SNS
<a name="sns-vpc-publish"></a>

Maintenant que votre VPC inclut un point de terminaison pour Amazon SNS, vous pouvez vous connecter à l'instance Amazon EC2 et publier des messages dans la rubrique.

**Pour publier un message**

1. Si votre terminal n'est plus connecté à votre instance Amazon EC2, reconnectez-vous :

   ```
   $ ssh -i VPCE-Tutorial-KeyPair.pem ec2-user@{{instance-hostname}}
   ```

1. Exécutez la même commande que celle que vous avez utilisée précédemment pour publier un message dans votre rubrique Amazon SNS. Cette fois, la tentative de publication aboutit et Amazon SNS renvoie un ID de message :

   ```
   $ aws sns publish --region {{aws-region}} --topic-arn {{sns-topic-arn}} --message "Hello"
   
   
   {
       "MessageId": "5b111270-d169-5be6-9042-410dfc9e86de"
   }
   ```

## Étape 6 : Vérifier la livraison de vos messages
<a name="sns-vpc-verify"></a>

Lorsque la rubrique Amazon SNS reçoit un message, elle diffuse le message en l'envoyant aux deux fonctions Lambda abonnées. Lorsque ces fonctions reçoivent le message, elles enregistrent l'événement dans les CloudWatch journaux. Pour vérifier que la livraison de votre message a réussi, vérifiez que les fonctions ont été invoquées et que les CloudWatch journaux ont été mis à jour.

**Pour vérifier que les fonctions Lambda ont été appelées**

1. Ouvrez la AWS Lambda console à l'adresse [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/).

1. Sur la page **Fonctions**, choisissez **VPCE-Tutorial-Lambda-1**.

1. Choisissez **Surveillance**.

1. Vérifiez le graphique **Nombre d'appels**. Ce graphique montre le nombre de fois que la fonction Lambda a été exécutée.

   Le nombre d'appels correspond au nombre de fois où vous avez publié un message dans la rubrique.  
![Graphique du nombre d'appels dans la console Lambda.](http://docs.aws.amazon.com/fr_fr/sns/latest/dg/images/vpce-tutorial-lambda-invocation-count.png)

**Pour vérifier que les CloudWatch journaux ont été mis à jour**

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

1. Dans le menu de navigation de gauche, choisissez **Journaux**.

1. Vérifiez les journaux qui ont été écrits par les fonctions Lambda :

   1. Choisissez le groupe de journaux**/aws/lambda/VPCE-Tutorial-Lambda-1/**.

   1. Choisissez le flux de journaux.

   1. Vérifiez que le journal inclut l'entrée `From SNS: Hello`.  
![Le CloudWatch journal inclut l'entrée « From SNS : Hello ».](http://docs.aws.amazon.com/fr_fr/sns/latest/dg/images/vpce-tutorial-cloudwatch-log.png)

   1. Choisissez **Log Groups (Groupes de journaux)** en haut de la console pour renvoyer la page **Log Groups (Groupes de journaux)**. Répétez ensuite les étapes précédentes pour le groupe de logs/aws/lambda/VPCE-Tutorial-Lambda-2/.

Félicitations \! En ajoutant un point de terminaison pour Amazon SNS à un VPC, vous avez pu publier un message dans une rubrique depuis le réseau qui est géré par le VPC. Le message a été publié en mode privé sans être exposé sur l'Internet public.

## Étape 7 : nettoyer
<a name="sns-vpc-delete"></a>

À moins que vous souhaitiez conserver les ressources que vous avez créées, vous pouvez les supprimer maintenant. En supprimant AWS les ressources que vous n'utilisez plus, vous évitez des frais inutiles pour votre Compte AWS. 

Tout d'abord, supprimez votre point de terminaison de VPC à l'aide de la console Amazon VPC. Supprimez ensuite les autres ressources que vous avez créées en supprimant la pile dans la CloudFormation console. Lorsque vous supprimez une pile, CloudFormation les ressources de la pile sont supprimées de votre Compte AWS.

**Pour supprimer votre point de terminaison de VPC**

1. Ouvrez la console Amazon VPC à l’adresse [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/).

1. Dans le menu de navigation de gauche, choisissez **Endpoints (Points de terminaison)**.

1. Sélectionnez le point de terminaison que vous avez créé.

1. Choisissez **Actions**, puis **Delete Endpoint (Supprimer le point de terminaison)**.

1. Dans la fenêtre **Delete Endpoint (Supprimer le point de terminaison)**, sélectionnez **Yes, Delete (Oui, supprimer)**.

   L'état du point de terminaison passe à **deleting (en cours de suppression)**. Une fois la suppression terminée, le point de terminaison est supprimé de la page.

**Pour supprimer votre CloudFormation pile**

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

1. Sélectionnez la pile **VPCE-Tutorial-Stack**.

1. Choisissez **Actions**, puis **Supprimer pile**.

1. Dans la fenêtre **Delete Stack (Supprimer la pile)**, sélectionnez **Yes, Delete (Oui, supprimer)**.

   L'état de la pile passe à **DELETE\_IN\_PROGRESS**. Une fois la suppression terminée, la pile est supprimée de la page.

## Ressources connexes
<a name="sns-vpc-resources-related"></a>

Pour plus d'informations, veuillez consulter les ressources suivantes.
+ [AWS Blog sur la sécurité : Sécurisation des messages publiés sur Amazon SNS avec AWS PrivateLink ](https://aws.amazon.com/blogs/security/securing-messages-published-to-amazon-sns-with-aws-privatelink/)
+ [Qu’est-ce qu’Amazon VPC ?](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Introduction.html)
+ [Points de terminaison d’un VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints.html)
+ [Qu'est-ce qu'Amazon EC2 ?](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html)
+ [Concepts CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-whatis-concepts.html)