

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.

# Démarrage d'un flux de travail Step Functions en réponse à des événements
<a name="tutorial-cloudwatch-events-s3"></a>

Vous pouvez exécuter une machine à AWS Step Functions états en réponse à un événement acheminé par une EventBridge règle Amazon vers Step Functions en tant que cible. 

Le didacticiel suivant explique comment configurer une machine à états en tant que cible d'une EventBridge règle Amazon. Chaque fois que des fichiers sont ajoutés à un bucket Amazon Simple Storage Service (Amazon S3), EventBridge la règle démarre la machine d'état.

Un exemple pratique de cette approche pourrait être une machine à états qui exécute une analyse Amazon Rekognition sur les fichiers image ajoutés au bucket afin de classer et d'attribuer des mots clés.

Dans ce didacticiel, vous lancez l'exécution d'une machine à `Helloworld` états en téléchargeant un fichier dans un compartiment Amazon S3. Vous examinez ensuite l'exemple d'entrée de cette exécution pour identifier les informations incluses dans l'entrée de la notification d'événement Amazon S3 envoyée à EventBridge.

## Prérequis : Création d'une machine d'état
<a name="tutorial-cloudwatch-events-s3-prereqs"></a>

Avant de pouvoir configurer une machine à états en tant que EventBridge cible Amazon, vous devez créer la machine à états.
+ Pour créer une machine à états de base, utilisez le [didacticiel Création d'une machine à états utilisant une fonction Lambda](tutorial-creating-lambda-state-machine.md).
+ Si vous disposez déjà d'une machine d'état `Helloworld`, passez à l'étape suivante.

## Étape 1 : créer un compartiment dans Amazon S3
<a name="tutorial-cloudwatch-events-s3-bucket"></a>

Maintenant que vous disposez d'une machine à `Helloworld` états, vous devez créer un compartiment Amazon S3 qui stocke vos fichiers. À l'étape 3 de ce didacticiel, vous avez défini une règle de telle sorte que lorsqu'un fichier est téléchargé dans ce compartiment, cela EventBridge déclenche l'exécution de votre machine à états.

1. Accédez à la [console Amazon S3](https://console.aws.amazon.com/s3/), puis choisissez **Create bucket** pour créer le compartiment dans lequel vous souhaitez stocker vos fichiers et déclencher une règle d'événement Amazon S3.

1. Entrez un **Nom de compartiment**, tel que `{{username}}-sfn-tutorial`.
**Note**  
Les noms de compartiment doivent être uniques parmi tous les noms de compartiment existants dans toutes les AWS régions d'Amazon S3. Utilisez le vôtre {{username}} pour rendre ce nom unique. Vous devez créer toutes les ressources dans la même AWS région.

1. Conservez toutes les sélections par défaut sur la page, puis choisissez **Create bucket**.

## Étape 2 : activer la notification d'événements Amazon S3 avec EventBridge
<a name="tutorial-cloudwatch-events-s3-eb-notification"></a>

Après avoir créé le compartiment Amazon S3, configurez-le pour envoyer des événements EventBridge chaque fois que certains événements se produisent dans votre compartiment S3, tels que les téléchargements de fichiers.

1. Accédez à la [console Amazon S3](https://console.aws.amazon.com/s3/).

1. Dans la liste **Compartiments**, choisissez le nom du compartiment pour lequel vous souhaitez activer les événements.

1. Choisissez **Propriétés**.

1. Faites défiler la page vers le bas pour afficher la section **Notifications d'événements**, puis choisissez **Modifier** dans la EventBridge sous-section **Amazon**.

1. Sous **Envoyer des notifications à Amazon EventBridge pour tous les événements de ce compartiment**, choisissez **Activé**.

1. Sélectionnez **Enregistrer les modifications**.
**Note**  
Après l'activation EventBridge, il faut environ cinq minutes pour que les modifications prennent effet.

## Étape 3 : créer une EventBridge règle Amazon
<a name="tutorial-cloudwatch-events-s3-cwe"></a>

Une fois que vous disposez d'une machine à états, que vous avez créé le compartiment Amazon S3 et que vous l'avez configuré pour envoyer des notifications d'événements EventBridge, créez une EventBridge règle.

**Note**  
Vous devez configurer la EventBridge règle dans la même AWS région que le compartiment Amazon S3.

### Pour créer la règle
<a name="tutorial-cloudwatch-events-s3-create-rule"></a>

1. Accédez à la [ EventBridge console Amazon](https://console.aws.amazon.com/events/), puis choisissez **Create rule**.
**Astuce**  
Dans le volet de navigation de la EventBridge console, vous pouvez également choisir **Règles** sous **Bus**, puis **Créer une règle**.

1. Entrez un **nom** pour votre règle (par exemple,`{{S3Step Functions}}`) et entrez éventuellement une **description** pour la règle.

1. Pour le **bus d'événements** et le **type de règle**, conservez les sélections par défaut.

1. Choisissez **Suivant**. Cela ouvre la page **Créer un modèle d'événement**.

1. Faites défiler la page jusqu'à la section **Modèle d'événement**, puis procédez comme suit :

   1. Pour **Source d'événements**, conservez la sélection par défaut d'**AWS événements ou d'événements EventBridge partenaires**.

   1. Pour le **AWS service**, choisissez **Simple Storage Service (S3)**.

   1. Pour **Type d'événement**, choisissez **Amazon S3 Event Notification**.

   1. Choisissez **Événement (s) spécifique (s)**, puis **Object Created**.

   1. Choisissez un **ou plusieurs compartiments spécifiques par nom** et entrez le nom du compartiment que vous avez créé à [l'étape 1](#tutorial-cloudwatch-events-s3-bucket) (`{{username}}-sfn-tutorial`) pour stocker vos fichiers.

   1. Choisissez **Suivant**. Cela ouvre la page **Sélectionner une ou plusieurs cibles**.

### Pour créer la cible
<a name="tutorial-cloudwatch-events-s3-create-rule2"></a>

1. Dans **Target 1**, conservez la sélection de **AWS service** par défaut.

1. Dans la liste déroulante **Sélectionnez une cible**, sélectionnez **Step Functions state machine**.

1. Dans la liste des **machines à états**, sélectionnez la machine à états que vous avez [créée précédemment](#tutorial-cloudwatch-events-s3-prereqs) (par exemple,`Helloworld`).

1. Conservez toutes les sélections par défaut sur la page, puis choisissez **Next**. Cela ouvre la page **Configurer les balises**.

1. Choisissez **Suivant** à nouveau. Cela ouvre la page **Réviser et créer**.

1. Consultez les détails de la règle et choisissez **Create rule** (Créer une règle).

   La règle est créée et la page **Règles** s'affiche, répertoriant toutes vos EventBridge règles Amazon.

## Étape 4 : Test de la règle
<a name="tutorial-cloudwatch-events-test-rule"></a>

Maintenant que tout est en place, testez l'ajout d'un fichier au compartiment Amazon S3, puis examinez l'entrée de l'exécution de la machine à états qui en résulte.

1. Ajoutez un fichier à votre compartiment Amazon S3.

   Accédez à la [console Amazon S3](https://console.aws.amazon.com/s3/), choisissez le compartiment que vous avez créé pour stocker les fichiers (`{{username}}-sfn-tutorial`), puis choisissez **Upload**.

1. Ajoutez un fichier, par exemple`{{test.png}}`, puis choisissez **Upload**.

   Cela lance une exécution de votre machine d'état, en transmettant les informations depuis AWS CloudTrail comme entrée.

1. Vérifiez l'exécution de votre machine d'état.

   Accédez à la [console Step Functions et sélectionnez la machine à états utilisée dans votre EventBridge règle Amazon (`Helloworld`)](https://console.aws.amazon.com/states/).

1. Sélectionnez l'exécution la plus récente de cette machine à états et développez la section **Execution Input**.

   Cette section inclut des informations telles que le nom du compartiment et le nom d'objet. Dans un cas d'utilisation du monde réel, une machine d'état peut utiliser ces informations pour effectuer des actions sur cet objet.

## Exemple d'entrée d'exécution
<a name="tutorial-cloudwatch-events-example"></a>

L'exemple suivant montre une entrée typique lors de l'exécution de la machine à états.

```
{
    "version": "0",
    "id": "6c540ad4-0671-9974-6511-756fbd7771c3",
    "detail-type": "Object Created",
    "source": "aws.s3",
    "account": "123456789012",
    "time": "2023-06-23T23:45:48Z",
    "region": "us-east-2",
    "resources": [
      "arn:aws:s3:::{{username}}-sfn-tutorial"
    ],
    "detail": {
      "version": "0",
      "bucket": {
        "name": "{{username}}-sfn-tutorial"
      },
      "object": {
        "key": "test.png",
        "size": 800704,
        "etag": "f31d8546bb67845b4d3048cde533b937",
        "sequencer": "00621049BA9A8C712B"
      },
      "request-id": "79104EXAMPLEB723",
      "requester": "123456789012",
      "source-ip-address": "200.0.100.11",
      "reason": "PutObject"
    }
  }
```