

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.

# Pour commencer : créer un EventBridge canal Amazon
<a name="pipes-get-started"></a>

Pour nous familiariser avec les tuyaux et leurs fonctionnalités, nous allons utiliser un CloudFormation modèle pour configurer un EventBridge canal et les composants associés. Ensuite, nous pouvons explorer les différentes caractéristiques des tuyaux.

**Astuce**  
Pour une expérience d'apprentissage pratique plus complète, essayez le [EventBridge Pipes Workshop](https://catalog.workshops.aws/eb-pipes). Cet atelier interactif vous explique comment créer et résoudre les problèmes d'un canal qui connecte DynamoDB à API Gateway grâce à un enrichissement Lambda.

Le modèle crée un EventBridge canal qui connecte un flux provenant d'une table DynamoDB à une file d'attente Amazon SQS. Chaque fois qu'un enregistrement est créé ou modifié dans la table de base de données, le canal envoie l'événement résultant à la file d'attente. 

Le tuyau déployé est composé de :
+ Une table DynamoDB (et un flux) servant de source de canal, et une file d'attente Amazon SQS en tant que cible.
+ Rôle d'exécution qui accorde EventBridge les autorisations nécessaires pour accéder à la table DynamoDB et à la file d'attente Amazon SQS.
+ Le canal lui-même, qui contient un filtre d'événements qui sélectionne uniquement les événements générés lorsqu'un élément de table est créé (inséré) ou modifié.

Pour obtenir des informations techniques spécifiques sur le modèle, consultez[Détails du modèle](#pipes-get-started-template-details).

![Les événements de base de données sont mis en correspondance avec un filtre et envoyés vers une file d'attente s'ils correspondent.](http://docs.aws.amazon.com/fr_fr/eventbridge/latest/userguide/images/pipes-get-started_eventbridge_architectural.svg)


## Création du tuyau à l'aide de CloudFormation
<a name="pipes-get-started-create"></a>

Pour créer le canal et ses ressources associées, nous allons créer un CloudFormation modèle et l'utiliser pour créer une pile contenant un échantillon de tube, avec la source et la cible.

**Important**  
Les ressources Amazon utilisées vous seront facturées si vous créez une pile à partir de ce modèle.

### Création du modèle
<a name="pipes-get-started-file"></a>

Créez d'abord le CloudFormation modèle.

1. Dans la section [Modèle](#pipes-get-started-template), cliquez sur l’icône de copie dans l’onglet **JSON** ou **YAML** pour copier le contenu du modèle.

1. Copiez le contenu du modèle dans un nouveau fichier.

1. Enregistrez le fichier au niveau local.

### Création de la pile
<a name="pipes-get-started-stack"></a>

Ensuite, utilisez le modèle que vous avez enregistré pour provisionner une CloudFormation pile.

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

1. Sur la page **Piles**, dans le menu **Créer une pile**, choisissez **Avec de nouvelles ressources (standard)**.

1. Spécifiez un modèle :

   1. Sous **Prérequis**, choisissez **Choisir un modèle existant**.

   1. Sous **Spécifier le modèle**, sélectionnez **Charger un modèle de fichier**.

   1. Choisissez **Choisir un fichier**, accédez au fichier du modèle, puis sélectionnez-le.

   1. Choisissez **Suivant**.

1. Spécifiez les détails de pile :

   1. Saisissez le nom de la pile.

   1. Pour les paramètres, acceptez les valeurs par défaut ou entrez les vôtres.

   1. Choisissez **Suivant**.

1. Configurez les options de pile :

   1. Sous **Options d’échec de pile**, choisissez **Supprimer toutes les ressources nouvellement créées**.
**Note**  
Le choix de cette option vous évite d’être facturé pour des ressources dont la stratégie de suppression indique qu’elles doivent être conservées même en cas d’échec de la création de la pile. Pour plus d’informations, consultez [Attribut `DeletionPolicy`](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-attribute-deletionpolicy.html) dans le *Guide de l’utilisateur CloudFormation *.

   1. Acceptez toutes les autres valeurs par défaut.

   1. Sous **Fonctionnalités**, cochez la case pour confirmer que des ressources IAM CloudFormation peuvent être créées dans votre compte.

   1. Choisissez **Suivant**.

1. Vérifiez les détails de la pile et choisissez **Envoyer**.

**Créez la pile en utilisant CloudFormation (AWS CLI)**

Vous pouvez également utiliser le AWS CLI pour créer la pile.
+ Utilisez la commande [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html).
  + Acceptez les valeurs des paramètres du modèle par défaut, en spécifiant le nom de la pile. Utilisez le `template-body` paramètre pour transmettre le contenu du modèle ou `template-url` pour spécifier l'emplacement de l'URL.

    ```
    aws cloudformation create-stack \
      --stack-name {{eventbridge-rule-tutorial}} \
      --template-body {{template-contents}} \
      --capabilities CAPABILITY_IAM
    ```
  + Remplacez la ou les valeurs par défaut d'un ou de plusieurs paramètres du modèle. Par exemple :

    ```
    aws cloudformation create-stack \
      --stack-name {{eventbridge-rule-tutorial}} \
      --template-body {{template-contents}} \
      --parameters \
        ParameterKey=SourceTableName,ParameterValue={{pipe-example-source}} \
        ParameterKey=TargetQueueName,ParameterValue={{pipe-example-target}} \
        ParameterKey=PipeName,ParameterValue={{pipe-with-filtering-example}} \
      --capabilities CAPABILITY_IAM
    ```

CloudFormation crée la pile. Une fois la création de la pile terminée, les ressources de la pile sont prêtes à être utilisées. Vous pouvez utiliser l'onglet **Ressources** de la page détaillée de la pile pour afficher les ressources mises en service dans votre compte.

## Exploration des capacités des canalisations
<a name="pipes-get-started-using"></a>

Une fois le canal créé, vous pouvez utiliser la EventBridge console pour observer le fonctionnement du canal et tester le déroulement des événements.

1. Vous voulez ouvrir la EventBridge console à la [https://console.aws.amazon.com/events/maison ? \#/tuyaux](https://console.aws.amazon.com/events/home?#/pipes).

1. Choisissez le tube que vous avez créé.

   Sur la page détaillée du **canal, la section Composants** du canal affiche les ressources qui le composent et contient des onglets fournissant plus de détails sur chaque composant.  
![La page détaillée du tuyau affiche graphiquement les composants source, filtre et cible du canal.](http://docs.aws.amazon.com/fr_fr/eventbridge/latest/userguide/images/pipes-get-started_eventbridge_pipe-detail.png)

   Vous trouverez le rôle d'exécution que nous avons créé pour le canal dans l'onglet **Paramètres**, dans la section **Autorisations**.

### Examen du filtre à tuyau
<a name="pipes-get-started-using-filter"></a>

Avant de tester le fonctionnement du tube, examinons le filtre que nous avons spécifié pour contrôler les événements envoyés à la cible. Le canal envoie uniquement les événements correspondant aux critères du filtre à la cible ; tous les autres sont ignorés. Dans ce cas, nous voulons uniquement que les événements générés lorsque des entrées de table sont créées ou modifiées soient envoyés à la file d'attente Amazon SQS.
+ Sur la page détaillée du tuyau, sous **Composants du tuyau**, choisissez l'onglet **Filtrage**.

  Nous avons inclus un filtre qui sélectionne uniquement les événements pour lesquels le `eventName` paramètre est défini sur `INSERT` ou`MODIFY`. 

  ```
  {
    "eventName": ["INSERT", "MODIFY"]
  }
  ```

### Envoyer des événements par le biais du canal
<a name="pipes-get-started-using-source"></a>

Ensuite, nous allons générer des événements dans la source du canal pour vérifier que le filtrage et la distribution du canal fonctionnent correctement. Pour ce faire, nous allons créer et modifier un élément dans la table DynamoDB que nous avons spécifiée comme source du canal.

1. Sur la page détaillée du tuyau, sous **Composants du tuyau**, choisissez l'onglet **Source**.

1. Sous **Source**, choisissez le nom du flux DynamoDB.

   Cela ouvre la console DynamoDB dans une fenêtre séparée, avec les détails de la table source affichés.

1. Choisissez **Explorer les objets**.

1. Générez un `INSERT` événement en créant un élément dans le tableau :

   1. Choisissez **Créer un élément**.

   1. Ajoutez des valeurs pour les attributs **Album** et **Artist**.

   1. Choisissez **Créer un élément**.

1. Générez un `DELETE` et un `INSERT` événement en modifiant l'élément :

   1. Choisissez l'élément dans la liste, puis dans le menu **Actions**, choisissez **Modifier l'élément**.

   1. Entrez une nouvelle valeur pour l'attribut **Album** ou **Artiste**.

   1. Cochez la case qui confirme que vous modifiez la valeur des clés d'article, puis choisissez **Recréer l'article.**

      Cela entraîne la suppression puis la recréation de l'élément, générant un `DELETE` événement, puis un nouvel `INSERT` événement.

1. Générez un `MODIFY` événement en ajoutant un attribut à l'élément :

   1. Choisissez l'élément dans la liste, puis dans le menu **Actions**, choisissez **Modifier l'élément**.

   1. Dans le menu **Ajouter un nouvel attribut**, choisissez **Numéro**.

   1. Pour le nom de l'attribut, entrez **Année**, puis entrez une valeur pour l'attribut. Choisissez **Enregistrer et fermer**.

### Confirmation de la diffusion de l'événement par le biais du canal
<a name="pipes-get-started-using-target"></a>

Enfin, nous confirmerons que le canal a correctement filtré et diffusé les événements que nous avons générés en créant et en modifiant l'élément de table dans DynamoDB.

1. Sur la page détaillée du tuyau, sous **Composants du tuyau**, choisissez l'onglet **Target**.

1. Sous **Target**, choisissez le nom de la file d'attente Amazon SQS.

   Cela ouvre la console Amazon SQS dans une fenêtre séparée, avec les détails de la file d'attente cible affichés.

1. Choisissez **Envoyer et recevoir des messages**.

1. Sous **Recevoir des messages**, choisissez **Sondage pour les messages**.

   Amazon SQS charge les messages reçus dans la file d'attente. Cliquez sur un message individuel pour en voir les détails.

   La file d'attente doit contenir trois messages d'événement : 
   + Deux types`INSERT`, l'un généré lorsque vous avez créé l'élément de table pour la première fois, et l'autre généré lorsque vous avez recréé l'élément en modifiant une valeur clé.
   + Un de type`MODIFY`, généré lorsque vous avez ajouté un attribut à l'élément de table.

   Notez qu'il n'y a aucun message d'événement de ce type `DELETE` dans la file d'attente, même s'il a été généré lorsque vous avez supprimé et recréé l'élément du tableau en modifiant une valeur clé. Le filtre de canal que nous avons spécifié sélectionne uniquement sur `INSERT` et`MODIFY`, par conséquent, le canal a filtré l'`DELETE`événement au lieu de le transmettre à la file d'attente.

## Nettoyage : suppression de ressources
<a name="pipes-get-started-delete"></a>

Enfin, nous supprimerons la pile et les ressources qu'elle contient.

**Important**  
Les ressources Amazon contenues dans la pile vous seront facturées tant qu'elle existera.

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

1. Sur la page **Piles**, choisissez la pile créée à partir du modèle, choisissez **Supprimer**, puis confirmez **Supprimer**.

   CloudFormation initie la suppression de la pile et de toutes les ressources qu'elle contient.

## CloudFormation détails du modèle
<a name="pipes-get-started-template-details"></a>

Ce modèle crée des ressources et accorde des autorisations sur votre compte.

### Ressources
<a name="pipes-get-started-template-resources"></a>

Le CloudFormation modèle de ce didacticiel créera les ressources suivantes dans votre compte :

**Important**  
Les ressources Amazon utilisées vous seront facturées si vous créez une pile à partir de ce modèle.
+ [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-dynamodb-table.html): table DynamoDB qui sert de source d'événements pour le canal. 
+ [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queue.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-sqs-queue.html): une file d'attente Amazon SQS qui sert de cible aux événements circulant dans le canal.
+ [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-iam-role.html): rôle d'exécution IAM octroyant des autorisations au service EventBridge Pipes dans votre compte.
+ [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pipes-pipe.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-pipes-pipe.html): canal reliant la table DynamoDB à la file d'attente Amazon SQS.

### Permissions
<a name="pipes-get-started-template-perms"></a>

Le modèle inclut une `AWS::IAM::Role` ressource qui représente un rôle d'exécution. Ce rôle accorde au service EventBridge Pipes (`pipes.amazonaws.com`) les autorisations suivantes sur votre compte.

Les autorisations suivantes sont étendues à la table DynamoDB et au flux créés par le modèle en tant que source d'événements pour le canal :
+ `dynamodb:DescribeStream`
+ `dynamodb:GetRecords`
+ `dynamodb:GetShardIterator`
+ `dynamodb:ListStreams`

L'autorisation suivante s'applique à la file d'attente Amazon SQS créée par la pile en tant que cible du canal :
+ `sqs:SendMessage`

## CloudFormation modèle
<a name="pipes-get-started-template"></a>

Enregistrez le code JSON ou YAML suivant dans un fichier distinct à utiliser comme CloudFormation modèle pour ce didacticiel.

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

```
{
  "AWSTemplateFormatVersion": "2010-09-09",

 "Description" : "[AWSDocs] EventBridge: pipes-get-started",

  "Parameters" : {
    "SourceTableName" : {
      "Type" : "String",
      "Default" : "pipe-example-source",
      "Description" : "Specify the name of the table to provision as the pipe source, or accept the default."
    },
  "TargetQueueName" : {
    "Type" : "String",
    "Default" : "pipe-example-target",
    "Description" : "Specify the name of the queue to provision as the pipe target, or accept the default."
  },
    "PipeName" : {
      "Type" : "String",
      "Default" : "pipe-with-filtering-example",
      "Description" : "Specify the name of the table to provision as the pipe source, or accept the default."
    }
},
  "Resources": {
    "PipeSourceDynamoDBTable": {
      "Type": "AWS::DynamoDB::Table",
      "Properties": {
        "AttributeDefinitions": [{
            "AttributeName": "Album",
            "AttributeType": "S"
          },
          {
            "AttributeName": "Artist",
            "AttributeType": "S"
          }

        ],
        "KeySchema": [{
            "AttributeName": "Album",
            "KeyType": "HASH"

          },
          {
            "AttributeName": "Artist",
            "KeyType": "RANGE"
          }
        ],
        "ProvisionedThroughput": {
          "ReadCapacityUnits": 10,
          "WriteCapacityUnits": 10
        },
        "StreamSpecification": {
          "StreamViewType": "NEW_AND_OLD_IMAGES"
        },
        "TableName": { "Ref" : "SourceTableName" }
      }
    },
    "PipeTargetQueue": {
      "Type": "AWS::SQS::Queue",
      "Properties": {
        "QueueName": { "Ref" : "TargetQueueName" }
      }
    },
    "PipeTutorialPipeRole": {
      "Type": "AWS::IAM::Role",
      "Properties": {
        "AssumeRolePolicyDocument": {
          "Version": "2012-10-17",		 	 	 
          "Statement": [{
            "Effect": "Allow",
            "Principal": {
              "Service": "pipes.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
              "StringLike": {
                "aws:SourceArn": {
                  "Fn::Join": [
                    "",
                    [
                      "arn:",
                      { "Ref": "AWS::Partition" },
                      ":pipes:",
                      { "Ref": "AWS::Region" },
                      ":",
                      { "Ref": "AWS::AccountId" },
                      ":pipe/",
                      { "Ref": "PipeName" }
                    ]
                  ]
                },
                "aws:SourceAccount": { "Ref" : "AWS::AccountId" }
              }
            }
          }]
        },
        "Description" : "EventBridge Pipe template example. Execution role that grants the pipe the permissions necessary to send events to the specified pipe.",
        "Path": "/",
        "Policies": [{
            "PolicyName": "SourcePermissions",
            "PolicyDocument": {
              "Version": "2012-10-17",		 	 	 
              "Statement": [{
                "Effect": "Allow",
                "Action": [
                  "dynamodb:DescribeStream",
                  "dynamodb:GetRecords",
                  "dynamodb:GetShardIterator",
                  "dynamodb:ListStreams"
                ],
                "Resource": [
                  { "Fn::GetAtt" : [ "PipeSourceDynamoDBTable", "StreamArn" ] }
                ]
              }]
            }
          },
          {
            "PolicyName": "TargetPermissions",
            "PolicyDocument": {
              "Version": "2012-10-17",		 	 	 
              "Statement": [{
                "Effect": "Allow",
                "Action": [
                  "sqs:SendMessage"
                ],
                "Resource": [
                  { "Fn::GetAtt" : [ "PipeTargetQueue", "Arn" ] }
                ]
              }]
            }
          }
        ]
      }
  },
    "PipeWithFiltering": {
      "Type": "AWS::Pipes::Pipe",
      "Properties": {
        "Description" : "EventBridge Pipe template example. Pipe that receives events from a DynamoDB stream, applies a filter, and sends matching events on to an SQS Queue.",
        "Name": { "Ref" : "PipeName" },
        "RoleArn": {"Fn::GetAtt" : ["PipeTutorialPipeRole", "Arn"] },
        "Source": { "Fn::GetAtt" : [ "PipeSourceDynamoDBTable", "StreamArn" ] },
        "SourceParameters": {
          "DynamoDBStreamParameters" : {
            "StartingPosition" : "LATEST"
         },
        "FilterCriteria" : {
          "Filters" : [ {
            "Pattern" : "{ \"eventName\": [\"INSERT\", \"MODIFY\"] }"
         }]
        }
        },
        "Target": { "Fn::GetAtt" : [ "PipeTargetQueue", "Arn" ] }
      }
    }
  }
}
```

------
#### [ YAML ]

```
AWSTemplateFormatVersion: '2010-09-09'
Description: '[AWSDocs] EventBridge: pipes-get-started'
Parameters:
  SourceTableName:
    Type: String
    Default: pipe-example-source
    Description: Specify the name of the table to provision as the pipe source, or accept the default.
  TargetQueueName:
    Type: String
    Default: pipe-example-target
    Description: Specify the name of the queue to provision as the pipe target, or accept the default.
  PipeName:
    Type: String
    Default: pipe-with-filtering-example
    Description: Specify the name of the table to provision as the pipe source, or accept the default.
Resources:
  PipeSourceDynamoDBTable:
    Type: AWS::DynamoDB::Table
    Properties:
      AttributeDefinitions:
        - AttributeName: Album
          AttributeType: S
        - AttributeName: Artist
          AttributeType: S
      KeySchema:
        - AttributeName: Album
          KeyType: HASH
        - AttributeName: Artist
          KeyType: RANGE
      ProvisionedThroughput:
        ReadCapacityUnits: 10
        WriteCapacityUnits: 10
      StreamSpecification:
        StreamViewType: NEW_AND_OLD_IMAGES
      TableName: !Ref SourceTableName
  PipeTargetQueue:
    Type: AWS::SQS::Queue
    Properties:
      QueueName: !Ref TargetQueueName
  PipeTutorialPipeRole:
    Type: AWS::IAM::Role
    Properties:
      AssumeRolePolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Effect: Allow
            Principal:
              Service: pipes.amazonaws.com
            Action: sts:AssumeRole
            Condition:
              StringLike:
                aws:SourceArn: !Join
                  - ''
                  - - 'arn:'
                    - !Ref AWS::Partition
                    - ':pipes:'
                    - !Ref AWS::Region
                    - ':'
                    - !Ref AWS::AccountId
                    - ':pipe/'
                    - !Ref PipeName
                aws:SourceAccount: !Ref AWS::AccountId
      Description: EventBridge Pipe template example. Execution role that grants the pipe the permissions necessary to send events to the specified pipe.
      Path: /
      Policies:
        - PolicyName: SourcePermissions
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action:
                  - dynamodb:DescribeStream
                  - dynamodb:GetRecords
                  - dynamodb:GetShardIterator
                  - dynamodb:ListStreams
                Resource:
                  - !GetAtt PipeSourceDynamoDBTable.StreamArn
        - PolicyName: TargetPermissions
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action:
                  - sqs:SendMessage
                Resource:
                  - !GetAtt PipeTargetQueue.Arn
  PipeWithFiltering:
    Type: AWS::Pipes::Pipe
    Properties:
      Description: EventBridge Pipe template example. Pipe that receives events from a DynamoDB stream, applies a filter, and sends matching events on to an SQS Queue.
      Name: !Ref PipeName
      RoleArn: !GetAtt PipeTutorialPipeRole.Arn
      Source: !GetAtt PipeSourceDynamoDBTable.StreamArn
      SourceParameters:
        DynamoDBStreamParameters:
          StartingPosition: LATEST
        FilterCriteria:
          Filters:
            - Pattern: '{ "eventName": ["INSERT", "MODIFY"] }'
      Target: !GetAtt PipeTargetQueue.Arn
```

------