Invoquer des flux de travail express synchrones via Gateway API - AWS Step Functions

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.

Invoquer des flux de travail express synchrones via Gateway API

Cet exemple de projet montre comment invoquer des flux de travail synchrones Express via Amazon API Gateway pour gérer une base de données d'employés.

Dans ce projet, Step Functions utilise les points de terminaison API Gateway pour démarrer les flux de travail Step Functions Synchronous Express. Ils utilisent ensuite DynamoDB pour rechercher, ajouter et supprimer des employés dans une base de données d'employés.

Pour plus d'informations sur les flux de travail synchrones Express de Step Functions, consultezWorkflows express synchrones et asynchrones dans Step Functions.

Note

Cet exemple de projet peut entraîner des frais.

Pour les nouveaux AWS utilisateurs, un niveau d'utilisation gratuit est disponible. Dans cette offre, les services sont gratuits en-dessous d'un certain niveau d'utilisation. Pour plus d'informations sur AWS les coûts et le niveau gratuit, voir les tarifs de Step Functions.

Étape 1 : Création de la machine à états

  1. Ouvrez la console Step Functions et choisissez Create state machine.

  2. Tapez Invoke Synchronous Express Workflows through API Gateway dans la zone de recherche, puis choisissez Invoke Synchronous Express Workflows via API Gatewayà partir des résultats de recherche renvoyés.

  3. Choisissez Next (Suivant) pour continuer.

  4. Choisissez Exécuter une démo pour créer un ready-to-deploy flux de travail et un mode de travail en lecture seule, ou choisissez Construire dessus pour créer une définition de machine à états modifiable sur laquelle vous pourrez vous appuyer pour la déployer ultérieurement.

    Cet exemple de projet déploie les ressources suivantes :

    • Un Amazon API Gateway HTTPSAPIqui est appelé par une machine d'État.

    • Un Amazon DynamoDB table.

    • Trois AWS Step Functions machines d'État.

    • Relié AWS Identity and Access Management (IAM) rôles.

    L'image suivante montre le graphique du flux de travail pour les flux de travail Invoke Synchrous Express via API Gatewayexemple de projet :

    Graphique de flux de travail des flux de travail Invoke Synchrous Express via API Gatewayexemple de projet.
  5. Choisissez Utiliser le modèle pour poursuivre votre sélection.

Les prochaines étapes dépendent de votre choix précédent :

  1. Exécuter une démonstration : vous pouvez passer en revue la machine d'état avant de créer un projet en lecture seule avec des ressources déployées par AWS CloudFormation à votre Compte AWS.

    Vous pouvez consulter la définition de la machine d'état et, lorsque vous êtes prêt, choisissez Deploy and run pour déployer le projet et créer les ressources.

    Le déploiement peut prendre jusqu'à 10 minutes pour créer des ressources et des autorisations. Vous pouvez utiliser le lien Stack ID pour suivre les progrès dans AWS CloudFormation.

    Une fois le déploiement terminé, vous devriez voir votre nouvelle machine d'état dans la console.

  2. Tirez parti de cette information : vous pouvez revoir et modifier la définition du flux de travail. Vous devrez peut-être définir des valeurs pour les espaces réservés dans l'exemple de projet avant de tenter d'exécuter votre flux de travail personnalisé.

Note

Des frais standard peuvent s'appliquer pour les services déployés sur votre compte.

Étape 2 : Exécuter la machine à états

  1. Sur la page State machines, choisissez votre exemple de projet.

  2. Sur la page d'exemple de projet, choisissez Démarrer l'exécution.

  3. Dans la boîte de dialogue Démarrer l'exécution, procédez comme suit :

    1. (Facultatif) Entrez un nom d'exécution personnalisé pour remplacer le nom par défaut généré.

      ASCIINon-noms et journalisation

      Step Functions accepte les noms des machines d'état, des exécutions, des activités et des étiquettes contenant des caractères autres que des ASCII caractères. Comme ces caractères ne fonctionneront pas avec Amazon CloudWatch, nous vous recommandons de n'utiliser que des ASCII caractères afin de pouvoir suivre les statistiques CloudWatch.

    2. (Facultatif) Dans la zone de saisie, entrez les valeurs d'entrée sous la formeJSON. Vous pouvez ignorer cette étape si vous lancez une démonstration.

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

    La console Step Functions vous dirige vers une page de détails d'exécution où vous pouvez choisir les états dans la vue graphique pour explorer les informations associées dans le Détails de l'étape volet.

Exemple de code de machine d'état

Dans cet exemple de projet, la machine à états s'intègre à API Gateway et DynamoDB en API utilisant Gateway pour appeler un flux de travail express synchrone, qui met ensuite à jour ou lit la base de données des employés à l'aide de DynamoDB.

Parcourez cet exemple de machine à états pour découvrir comment Step Functions lit les données de DynamoDB pour récupérer les informations relatives aux employés.

Pour en savoir plus sur la façon d'invoquer Step Functions à l'aide de API Gateway, consultez ce qui suit.

Pour plus d'informations sur la façon dont AWS Step Functions peut contrôler d'autres AWS services, voirIntégrer les services avec Step Functions.

{ "Comment": "This state machine returns an employee entry from DynamoDB", "StartAt": "Read From DynamoDB", "States": { "Read From DynamoDB": { "Type": "Task", "Resource": "arn:aws:states:::dynamodb:getItem", "Parameters": { "TableName": "StepFunctionsSample-SynchronousExpressWorkflowAKIAIOSFODNN7EXAMPLE-DynamoDBTable-ANPAJ2UCCR6DPCEXAMPLE", "Key": { "EmployeeId": {"S.$": "$.employee"} } }, "Retry": [ { "ErrorEquals": [ "DynamoDB.AmazonDynamoDBException" ], "IntervalSeconds": 3, "MaxAttempts": 2, "BackoffRate": 1.5 } ], "Next": "Is Get Successful" }, "Is Get Successful": { "Type": "Choice", "Choices": [ { "Variable": "$.Item", "IsPresent": true, "Next": "Succeed Execution" } ], "Default": "Fail Execution" }, "Succeed Execution": { "Type": "Pass", "Parameters" : { "employee.$": "$.Item.EmployeeId.S", "jobTitle.$": "$.Item.JobTitle.S" }, "End": true }, "Fail Execution": { "Type": "Fail", "Error": "EmployeeDoesNotExist" } } }

Pour plus d'informations sur la configuration IAM lors de l'utilisation de Step Functions avec d'autres AWS services, voirComment Step Functions génère IAM des politiques pour les services intégrés.

IAMExemples

Ces exemples AWS Identity and Access Management (IAM) les politiques générées par l'exemple de projet incluent le moindre privilège nécessaire pour exécuter la machine à états et les ressources associées. Nous vous recommandons de n'inclure que les autorisations nécessaires dans vos IAM politiques.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogDelivery", "logs:GetLogDelivery", "logs:UpdateLogDelivery", "logs:DeleteLogDelivery", "logs:ListLogDeliveries", "logs:PutResourcePolicy", "logs:DescribeResourcePolicies", "logs:DescribeLogGroups" ], "Resource": "*" } ] }
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem" ], "Resource": [ "arn:aws:dynamodb:us-east-1:111122223333:table/Write" ] } ] }

Pour plus d'informations sur la configuration IAM lors de l'utilisation de Step Functions avec d'autres AWS services, voirComment Step Functions génère IAM des politiques pour les services intégrés.