

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.

# Création d'une machine d'état Step Functions utilisant Lambda
<a name="tutorial-creating-lambda-state-machine"></a>

Dans ce didacticiel, vous allez créer un flux de travail en une seule étape en utilisant AWS Step Functions pour appeler une AWS Lambda fonction.

**Note**  
Step Functions est basé sur des *machines à états* et *des tâches*. Dans Step Functions, les machines à états sont appelées *flux de travail*, qui sont une série d'étapes pilotées par des événements. Chaque étape d'un flux de travail est appelée un *état*. Par exemple, un [état de tâche](state-task.md) représente une unité de travail exécutée par un autre AWS service, comme l'appel d'un autre service Service AWS ou d'une API. Les instances de flux de travail exécutant des tâches sont appelées *exécutions* dans Step Functions.  
Pour en savoir plus, consultez :  
[Qu'est-ce que Step Functions ?](welcome.md)
[Intégrer les services avec Step Functions](integrate-services.md)

Lambda convient parfaitement aux `Task` états, car les fonctions Lambda sont *sans serveur* et faciles à écrire. Vous pouvez écrire du code dans l'éditeur AWS Management Console ou dans votre éditeur préféré. AWS gère les détails relatifs à la mise à disposition d'un environnement informatique pour votre fonction et à son exécution.

## Étape 1 : créer une fonction Lambda
<a name="create-lambda-function"></a>

Votre fonction Lambda reçoit les données des événements et renvoie un message d'accueil.

**Important**  
Assurez-vous que votre fonction Lambda est enregistrée sous le même AWS compte et Région AWS que votre machine à états.

1. Ouvrez la [console Lambda](https://console.aws.amazon.com/lambda/home) et choisissez **Create** function.

1. Sur la page **Create function**, sélectionnez **Author from scratch**.

1. Sous **Nom de la fonction**, saisissez `HelloFunction`.

1. Conservez les sélections par défaut pour toutes les autres options, puis choisissez **Créer une fonction**. 

1. Une fois votre fonction Lambda créée, copiez le nom de ressource Amazon (ARN) de la fonction affiché dans le coin supérieur droit de la page. Voici un exemple d'ARN :

   ```
   arn:aws:lambda:region:123456789012:function:HelloFunction
   ```

1. Copiez le code suivant pour la fonction Lambda dans la section **Code source** de la ***HelloFunction***page.

   ```
   export const handler = async(event, context, callback) => {
       callback(null, "Hello from " + event.who + "!");
   };
   ```

   Ce code crée une salutation à l'aide du champ `who`des données d'entrée, qui sont fournies par l'objet `event` transmis à votre fonction. Vous ajouterez les données d'entrée de cette fonction ultérieurement, lorsque vous [commencerez une nouvelle exécution](#start-lambda-function). La méthode `callback` renvoie la salutation créée à partir de votre fonction.

1. Choisissez **Déployer**.

## Étape 2 : tester la fonction Lambda
<a name="test-lambda-function"></a>

Testez votre fonction Lambda pour voir si elle fonctionne.

1. Sélectionnez **Tester)**.

1. Dans **Event name** (Nom de l’événement), saisissez `HelloEvent`.

1. Remplacez les données **JSON de l'événement** par les données suivantes.

   ```
   {
       "who": "AWS Step Functions"
   }
   ```

   L'`"who"`entrée correspond au `event.who` champ de votre fonction Lambda, qui complète le message d'accueil. Vous saisirez les mêmes données d'entrée lorsque vous exécuterez votre machine à états.

1. Choisissez **Enregistrer**, puis sélectionnez **Test**.

1. Pour examiner les résultats du test, sous **Execution result** (Résultat de l’exécution), développez **Details** (Détails). 

## Étape 3 : Création d'une machine à états
<a name="create-state-machine-step"></a>

Utilisez la console Step Functions pour créer une machine à états qui invoque la fonction Lambda que vous avez créée [à](#create-lambda-function) l'étape 1.

1. Ouvrez la [console Step Functions](https://console.aws.amazon.com/states/home), choisissez **State machines** dans le menu, puis **Create state machine**.
**Important**  
Assurez-vous que votre machine d'état est associée au même AWS compte et à la même région que la fonction Lambda que vous avez créée précédemment.

1. Choisissez **Créer à partir de rien**.

1. Donnez un nom à votre machine d'état, puis choisissez **Continuer** pour modifier votre machine d'état dans Workflow Studio.

1. Dans le [navigateur States](workflow-studio.md#workflow-studio-components-states) sur la gauche, assurez-vous d'avoir choisi l'onglet **Actions**. Ensuite, faites glisser et déposez l'API **AWS Lambda Invoke** dans l'état vide intitulé **Drag first state here**.

1. Dans le panneau [Inspector](workflow-studio.md#workflow-studio-components-formdefinition) sur la droite, configurez la fonction Lambda :

   1. Dans la section **Paramètres de l'API**, choisissez [la fonction Lambda que vous avez créée précédemment](#create-lambda-function) dans la liste déroulante **Nom de la fonction**.

   1. Conservez la sélection par défaut dans la liste déroulante **Charge utile**.

1. (Facultatif) Choisissez **Definition pour afficher la définition** de la machine à états [Amazon States Language](concepts-amazon-states-language.md) (ASL), qui est automatiquement générée en fonction de vos sélections dans l'onglet **Actions** et dans le panneau **Inspector**.

1. Spécifiez un nom pour votre machine à états. Pour ce faire, cliquez sur l'icône d'édition à côté du nom de la machine à états par défaut de **MyStateMachine**. Ensuite, dans **Configuration de la machine d'état**, spécifiez un nom dans le champ **Nom de la machine d'état**.

   Par exemple, saisissez le nom **LambdaStateMachine**.
**Note**  
Les noms des machines d'état, des exécutions et des tâches d'activité ne doivent pas dépasser 80 caractères. Ces noms doivent être uniques pour votre compte et votre AWS région, et ne doivent contenir aucun des éléments suivants :  
Espace blanc
Caractères génériques () `? *`
Caractères entre crochets (`< > { } [ ]`)
Caractères spéciaux (`" # % \ ^ | ~ ` $ & , ; : /`)
Caractères de contrôle (`\\u0000`- `\\u001f` ou `\\u007f` -`\\u009f`).
Step Functions accepte les noms des machines à états, des exécutions, des activités et des étiquettes contenant des caractères non ASCII. Dans la mesure où ces caractères empêcheront Amazon CloudWatch d'enregistrer les données, nous vous recommandons de n'utiliser que des caractères ASCII afin de pouvoir suivre les métriques de Step Functions.

1. (Facultatif) Dans **Configuration de la machine à états**, spécifiez d'autres paramètres de flux de travail, tels que le type de machine à états et son rôle d'exécution.

   Pour ce didacticiel, conservez toutes les sélections par défaut dans **les paramètres State Machine**.

1. Choisissez **Créer**.

1. Dans la boîte de dialogue **Confirmer la création du rôle**, choisissez **Confirmer** pour continuer.

   Vous pouvez également choisir **Afficher les paramètres des rôles** pour revenir à la **configuration de la machine State**.
**Note**  
Si vous supprimez le rôle IAM créé par Step Functions, Step Functions ne pourra pas le recréer ultérieurement. De même, si vous modifiez le rôle (par exemple, en supprimant Step Functions des principes de la politique IAM), Step Functions ne pourra pas restaurer ses paramètres d'origine ultérieurement. 

## Étape 4 : Exécutez la machine d'état
<a name="start-lambda-function"></a>

Après avoir créé votre machine d'état, vous pouvez l'exécuter.

1. Sur la page **State machines**, choisissez **LambdaStateMachine**.

1. Choisissez **Start execution (Démarrer l'exécution)**.

   La boîte de dialogue **Démarrer l'exécution** s'affiche.

1. (Facultatif) Entrez un nom d'exécution personnalisé pour remplacer le nom par défaut généré.
**Noms non ASCII et journalisation**  
Step Functions accepte les noms des machines à états, des exécutions, des activités et des étiquettes contenant des caractères non ASCII. Dans la mesure où ces caractères empêcheront Amazon CloudWatch d'enregistrer les données, nous vous recommandons de n'utiliser que des caractères ASCII afin de pouvoir suivre les métriques de Step Functions.

1. Dans la zone de **saisie**, remplacez les exemples de données d'exécution par les données suivantes.

   ```
   {
       "who" : "AWS Step Functions"
   }
   ```

    `"who"`est le nom clé que votre fonction Lambda utilise pour obtenir le nom de la personne à saluer.

1. Choisissez **Démarrer une exécution**.

   L'exécution de votre machine d'état démarre et une nouvelle page indiquant votre exécution en cours s'affiche.

1. La console Step Functions vous dirige vers une page intitulée avec votre ID d'exécution. Cette page est connue sous le nom de page *Détails de l'exécution*. Sur cette page, vous pouvez consulter les résultats de l'exécution au fur et à mesure que l'exécution progresse ou une fois celle-ci terminée.

   Pour consulter les résultats de l'exécution, choisissez des états individuels dans la **vue graphique**, puis choisissez les onglets individuels du [Détails de l'étape](concepts-view-execution-details.md#exec-details-intf-step-details) volet pour afficher les détails de chaque état, y compris les entrées, les sorties et la définition respectivement. Pour plus de détails sur les informations d'exécution que vous pouvez consulter sur la page *Détails de l'exécution*, voir[Vue d'ensemble des détails d'exécution](concepts-view-execution-details.md#exec-details-interface-overview).

**Note**  
Vous pouvez également transmettre des charges utiles lorsque vous appelez Lambda depuis une machine à états. Pour plus d'informations et des exemples sur l'invocation de Lambda en transmettant une charge utile dans `Parameters` le champ, consultez. [Invoquer une AWS Lambda fonction avec Step Functions](connect-lambda.md)