Transférer des enregistrements de données (Lambda,DynamoDB,Amazon SQS) - 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.

Transférer des enregistrements de données (Lambda,DynamoDB,Amazon SQS)

Cet exemple de projet montre comment lire de manière itérative des éléments d'une Amazon DynamoDB table et les envoyer vers une Amazon SQS file d'attente à l'aide d'une machine à Step Functions états. Le déploiement de cet exemple de projet créera une machine à Step Functions états, une DynamoDB table, une AWS Lambda fonction et une Amazon SQS file d'attente.

Dans ce projet, Step Functions utilise la Lambda fonction pour remplir le DynamoDB tableau. La machine d'état utilise également une for boucle pour lire chacune des entrées, puis envoie chaque entrée dans une Amazon SQS file d'attente.

Étape 1 : créer la machine à états et provisionner les ressources

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

  2. Tapez Transfer data records dans la zone de recherche, puis choisissez Transférer les enregistrements de données à partir des résultats de recherche renvoyés.

  3. Choisissez Next (Suivant) pour continuer.

  4. Step Functions répertorie les Services AWS éléments utilisés dans l'exemple de projet que vous avez sélectionné. Il montre également un graphique de flux de travail pour l'exemple de projet. Déployez ce projet sur votre site Compte AWS ou utilisez-le comme point de départ pour créer vos propres projets. Selon la façon dont vous souhaitez procéder, choisissez Exécuter une démo ou Construire à partir de celle-ci.

    Cet exemple de projet déploie les ressources suivantes :

    • Une fonction Lambda pour l'amorçage de la table DynamoDB

    • Une file d'attente Amazon SQS

    • Table DynamoDB

    • Une machine AWS Step Functions étatique

    • Rôles associés AWS Identity and Access Management (IAM)

    L'image suivante montre le graphique du flux de travail pour le projet d'exemple de transfert d'enregistrements de données :

    
            Graphique du flux de travail de l'exemple de projet de transfert d'enregistrements de données.
  5. Choisissez Utiliser le modèle pour poursuivre votre sélection.

  6. Effectuez l’une des actions suivantes :

    • Si vous avez sélectionné Build on it, Step Functions crée le prototype de flux de travail pour l'exemple de projet que vous avez sélectionné. Step Functions ne déploie pas les ressources répertoriées dans la définition du flux de travail.

      Dans Workflow StudioMode de conception, glissez-déposez les états depuis le Navigateur d'états pour continuer à créer votre prototype de flux de travail. Vous pouvez également passer à un éditeur de code intégré similaire à VS Code pour mettre à jour la définition Amazon States Language (ASL) de votre machine à états dans la console Step Functions. Mode code Pour plus d'informations sur l'utilisation de Workflow Studio pour créer vos machines d'état, consultezUtilisation de Workflow Studio.

      Important

      N'oubliez pas de mettre à jour l'espace réservé Amazon Resource Name (ARN) pour les ressources utilisées dans l'exemple de projet avant d'exécuter votre flux de travail.

    • Si vous avez sélectionné Run a demo, Step Functions crée un exemple de projet en lecture seule qui utilise un AWS CloudFormation modèle pour déployer les AWS ressources répertoriées dans ce modèle sur votre. Compte AWS

      Astuce

      Pour afficher la définition de la machine à états de l'exemple de projet, choisissez Code.

      Lorsque vous êtes prêt, choisissez Déployer et exécuter pour déployer l'exemple de projet et créer les ressources.

      La création de ces ressources et des autorisations IAM associées peut prendre jusqu'à 10 minutes. Pendant le déploiement de vos ressources, vous pouvez ouvrir le lien CloudFormation Stack ID pour voir quelles ressources sont mises en service.

      Une fois que toutes les ressources de l'exemple de projet ont été créées, vous pouvez voir le nouvel exemple de projet répertorié sur la page State machines.

      Important

      Des frais standard peuvent s'appliquer pour chaque service utilisé dans le CloudFormation modèle.

É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) Pour identifier votre exécution, vous pouvez lui donner un nom dans le champ Nom. Par défaut, Step Functions génère automatiquement un nom d'exécution unique.

      Note

      Step Functions vous permet de créer des noms pour les machines d'état, les exécutions et les activités, ainsi que des étiquettes contenant des caractères non ASCII. Ces noms non ASCII ne fonctionnent pas avec Amazon. CloudWatch Pour être sûr de pouvoir suivre CloudWatch les métriques, choisissez un nom qui utilise uniquement des caractères ASCII.

    2. (Facultatif) Dans la zone de saisie, entrez les valeurs d'entrée au format JSON pour exécuter votre flux de travail.

      Si vous avez choisi d'exécuter une démo, vous n'avez pas besoin de fournir d'entrée d'exécution.

      Note

      Si le projet de démonstration que vous avez déployé contient des données d'entrée d'exécution préremplies, utilisez ces entrées pour exécuter la machine à états.

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

    4. 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 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, voirPage de détails d'exécution — Vue d'ensemble de l'interface.

Exemple de code de machine d'état

La machine à états de cet exemple de projet s'intègre à DynamoDB et Amazon SQS en transmettant des paramètres directement à ces ressources.

Parcourez cet exemple de machine à états pour découvrir comment Step Functions contrôle DynamoDB et Amazon SQS en se connectant à l'Amazon Resource Name (ARN) sur le terrain et en accédant à Resource l'API du service. Parameters

Pour plus d'informations sur la manière de AWS Step Functions contrôler d'autres AWS services, consultezUtilisation AWS Step Functions avec d'autres services.

{ "Comment" : "An example of the Amazon States Language for reading messages from a DynamoDB table and sending them to SQS", "StartAt": "Seed the DynamoDB Table", "TimeoutSeconds": 3600, "States": { "Seed the DynamoDB Table": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:sqsconnector-SeedingFunction-T3U43VYDU5OQ", "ResultPath": "$.List", "Next": "For Loop Condition" }, "For Loop Condition": { "Type": "Choice", "Choices": [ { "Not": { "Variable": "$.List[0]", "StringEquals": "DONE" }, "Next": "Read Next Message from DynamoDB" } ], "Default": "Succeed" }, "Read Next Message from DynamoDB": { "Type": "Task", "Resource": "arn:aws:states:::dynamodb:getItem", "Parameters": { "TableName": "sqsconnector-DDBTable-1CAFOJWP8QD6I", "Key": { "MessageId": {"S.$": "$.List[0]"} } }, "ResultPath": "$.DynamoDB", "Next": "Send Message to SQS" }, "Send Message to SQS": { "Type": "Task", "Resource": "arn:aws:states:::sqs:sendMessage", "Parameters": { "MessageBody.$": "$.DynamoDB.Item.Message.S", "QueueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/sqsconnector-SQSQueue-QVGQBW134PWK" }, "ResultPath": "$.SQS", "Next": "Pop Element from List" }, "Pop Element from List": { "Type": "Pass", "Parameters": { "List.$": "$.List[1:]" }, "Next": "For Loop Condition" }, "Succeed": { "Type": "Succeed" } } }

Pour plus d'informations sur le passage de paramètres et la gestion des résultats, consultez ce qui suit :

Exemple IAM

Cet exemple de politique AWS Identity and Access Management (IAM) généré par l'exemple de projet inclut le minimum de privilèges nécessaires pour exécuter la machine à états et les ressources associées. Il est recommandé d'inclure uniquement les autorisations nécessaires dans vos politiques IAM.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "dynamodb:GetItem" ], "Resource": [ "arn:aws:dynamodb:ap-northeast-1:123456789012:table/TransferDataRecords-DDBTable-3I41R5L5EAGT" ], "Effect": "Allow" }, { "Action": [ "sqs:SendMessage" ], "Resource": [ "arn:aws:sqs:ap-northeast-1:123456789012:TransferDataRecords-SQSQueue-BKWXTS09LIW1" ], "Effect": "Allow" }, { "Action": [ "lambda:invokeFunction" ], "Resource": [ "arn:aws:lambda:ap-northeast-1:123456789012:function:TransferDataRecords-SeedingFunction-VN4KY2TPAZSR" ], "Effect": "Allow" } ] }

Pour plus d'informations sur la configuration de l'IAM lors de l'utilisation de Step Functions avec d'autres AWS services, consultezPolitiques IAM pour les services intégrés.