Dynamisches Verarbeiten von Daten mit einem Map-Status - AWS Step Functions

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Dynamisches Verarbeiten von Daten mit einem Map-Status

Dieses Beispielprojekt demonstriert die dynamische Parallelität mithilfe eines Zuordnung-Zustands.

In diesem Projekt verwendet Step Functions eine AWS Lambda Funktion, um Nachrichten aus einer Amazon SQS SQS-Warteschlange abzurufen und ein JSON-Array dieser Nachrichten an einen Map Status weiterzuleiten. Für jede Nachricht in der Warteschlange schreibt die Zustandsmaschine die Nachricht in DynamoDB, ruft die andere Lambda-Funktion auf, um die Nachricht aus Amazon SQS zu entfernen, und veröffentlicht die Nachricht dann im Amazon SNS SNS-Thema.

Weitere Informationen zu Map Status- und Step Functions Functions-Dienstintegrationen finden Sie im Folgenden:

Schritt 1: Erstellen Sie die Zustandsmaschine und stellen Sie Ressourcen bereit

  1. Öffnen Sie die Step Functions Functions-Konsole und wählen Sie Create State Machine.

  2. Geben Sie Dynamically process data with a Map state etwas in das Suchfeld ein und wählen Sie dann aus den zurückgegebenen Suchergebnissen die Option Daten dynamisch verarbeiten mit einem Zuordnungsstatus aus.

  3. Wählen Sie Next (Weiter), um fortzufahren.

  4. Step Functions listet die Funktionen auf, die in dem von Ihnen ausgewählten Beispielprojekt AWS-Services verwendet wurden. Außerdem wird ein Workflow-Diagramm für das Beispielprojekt angezeigt. Stellen Sie dieses Projekt für Ihr Projekt bereit AWS-Konto oder verwenden Sie es als Ausgangspunkt für die Erstellung Ihrer eigenen Projekte. Je nachdem, wie Sie vorgehen möchten, wählen Sie „Demo ausführen“ oder „Darauf aufbauen“.

    In diesem Beispielprojekt werden die folgenden Ressourcen bereitgestellt:

    • Eine Amazon SQS SQS-Warteschlange, aus der der Map-Status Nachrichten iterativ liest und entfernt.

    • Eine DynamoDB-Tabelle, in die der Map-Status iterativ Nachrichten schreibt.

    • Ein Amazon SNS SNS-Thema, zu dem Step Functions die Nachrichten veröffentlicht, die es aus der Amazon SQS SQS-Warteschlange liest.

    • Zwei Funktionen AWS Lambda

    • Eine AWS Step Functions Staatsmaschine

    • Verwandte AWS Identity and Access Management Rollen (IAM)

    Die folgende Abbildung zeigt das Workflow-Diagramm für das Beispielprojekt Dynamisch verarbeiten mit einem Map-Status:

    Workflow-Diagramm des Beispielprojekts Daten dynamisch verarbeiten mit einem Map-State-Beispielprojekt.
  5. Wählen Sie Vorlage verwenden, um mit Ihrer Auswahl fortzufahren.

  6. Führen Sie eine der folgenden Aktionen aus:

    • Wenn Sie „Darauf aufbauen“ ausgewählt haben, erstellt Step Functions den Workflow-Prototyp für das von Ihnen ausgewählte Beispielprojekt. Step Functions stellt die in der Workflow-Definition aufgeführten Ressourcen nicht bereit.

      Ziehen Sie in Workflow Studio Status per Drag-and-Drop aus demEntwurfsmodus, Bundesstaaten-Browser um mit der Erstellung Ihres Workflow-Prototyps fortzufahren. Oder wechseln Sie zu demCodemodus, der einen integrierten Code-Editor bietet, der VS Code ähnelt, um die Amazon States Language (ASL-) Definition Ihrer Zustandsmaschine in der Step Functions Functions-Konsole zu aktualisieren. Weitere Informationen zur Verwendung von Workflow Studio zum Erstellen Ihrer Zustandsmaschinen finden Sie unterVerwenden von Workflow Studio.

      Wichtig

      Denken Sie daran, den Platzhalter Amazon Resource Name (ARN) für die im Beispielprojekt verwendeten Ressourcen zu aktualisieren, bevor Sie Ihren Workflow ausführen.

    • Wenn Sie Eine Demo ausführen ausgewählt haben, erstellt Step Functions ein schreibgeschütztes Beispielprojekt, das eine AWS CloudFormation Vorlage verwendet, um die in dieser Vorlage aufgelisteten AWS Ressourcen für Ihr Projekt bereitzustellen. AWS-Konto

      Tipp

      Um die State-Machine-Definition des Beispielprojekts anzuzeigen, wählen Sie Code.

      Wenn Sie bereit sind, wählen Sie Deploy and run aus, um das Beispielprojekt bereitzustellen und die Ressourcen zu erstellen.

      Es kann bis zu 10 Minuten dauern, bis diese Ressourcen und die zugehörigen IAM-Berechtigungen erstellt sind. Während der Bereitstellung Ihrer Ressourcen können Sie den CloudFormation Stack-ID-Link öffnen, um zu sehen, welche Ressourcen bereitgestellt werden.

      Nachdem alle Ressourcen im Beispielprojekt erstellt wurden, wird das neue Beispielprojekt auf der Seite State Machines aufgeführt.

      Wichtig

      Für jeden in der CloudFormation Vorlage verwendeten Dienst können Standardgebühren anfallen.

Nachdem die Ressourcen des Beispielprojekts bereitgestellt wurden, müssen Sie Elemente zur Amazon SQS-Warteschlange hinzufügen und das Amazon SNS-Thema abonnieren, bevor Sie die Zustandsmaschine ausführen.

Schritt 2: Abonnieren Sie das Amazon SNS SNS-Thema

  1. Öffnen Sie die Amazon-SNS-Konsole.

  2. Wählen Sie Topics (Themen) und dann das Thema aus, das vom Map-Zustands-Beispielprojekt erstellt wurde.

    Der Name wird ähnlich sein wie MapSampleProj-snsTopic-1cqo4hq3ir1kn.

  3. Wählen Sie Create subscription (Abonnement erstellen) aus.

    Die Seite Create subscription (Abonnement erstellen) wird angezeigt und enthält den Topic ARN (Thema-ARN) für das Thema.

  4. Wählen Sie unter Protocol (Protokoll) die Option Email (E-Mail) aus.

  5. Geben Sie unter Endpoint (Endpunkt) eine E-Mail-Adresse ein, um das Thema zu abonnieren.

  6. Wählen Sie Create subscription (Abonnement erstellen) aus.

    Anmerkung

    Sie müssen das Abonnement in Ihrer E-Mail bestätigen, bevor es aktiv ist.

  7. Öffnen Sie die E-Mail Subscription Confirmation (Abonnementbestätigung) im zugehörigen Konto und dann die URL Confirm subscription (Abonnement bestätigen).

    Die Seite Subscription confirmed! (Abonnement bestätigen!) wird angezeigt.

Schritt 3: Nachrichten zur Amazon SQS SQS-Warteschlange hinzufügen

  1. Öffnen Sie die Amazon-SQS-Konsole.

  2. Wählen Sie die Warteschlange aus, die vom Map-Zustandsbeispiel-Projekt erstellt wurde.

    Der Name wird ähnlich sein wie MapSampleProj-sqsqueue-1udic9vzdorN7.

  3. Wählen Sie Nachrichten senden und empfangen.

  4. Geben Sie auf der Seite Nachrichten senden und empfangen eine Nachricht ein und wählen Sie Nachricht senden aus.

  5. Geben Sie eine weitere Nachricht ein und wählen Sie Nachricht senden. Geben Sie weitere Nachrichten ein, bis Sie mehrere in der Amazon SQS SQS-Warteschlange haben.

Schritt 4: Führen Sie die Zustandsmaschine aus

Anmerkung

Die Warteschlangen in Amazon SNS sind irgendwann konsistent. Um die besten Ergebnisse zu erzielen, warten Sie einige Minuten zwischen dem Füllen Ihrer Warteschlange und dem Ausführen einer Ausführung Ihres Zustandsautomaten.

  1. Wählen Sie auf der Seite State Machines Ihr Beispielprojekt aus.

  2. Wählen Sie auf der Seite mit dem Beispielprojekt die Option Ausführung starten aus.

  3. Gehen Sie im Dialogfeld Ausführung starten wie folgt vor:

    1. (Optional) Um Ihre Ausführung zu identifizieren, können Sie im Feld Name einen Namen dafür angeben. Standardmäßig generiert Step Functions automatisch einen eindeutigen Ausführungsnamen.

      Anmerkung

      Mit Step Functions können Sie Namen für Zustandsmaschinen, Ausführungen und Aktivitäten sowie Beschriftungen erstellen, die Nicht-ASCII-Zeichen enthalten. Diese Nicht-ASCII-Namen funktionieren nicht mit Amazon. CloudWatch Um sicherzustellen, dass Sie CloudWatch Messwerte verfolgen können, wählen Sie einen Namen, der nur ASCII-Zeichen verwendet.

    2. (Optional) Geben Sie in das Eingabefeld Eingabewerte im JSON-Format ein, um Ihren Workflow auszuführen.

      Wenn Sie sich dafür entschieden haben, eine Demo auszuführen, müssen Sie keine Ausführungseingaben angeben.

      Anmerkung

      Wenn das von Ihnen bereitgestellte Demo-Projekt vorab aufgefüllte Eingabedaten für die Ausführung enthält, verwenden Sie diese Eingabe, um die Zustandsmaschine auszuführen.

    3. Wählen Sie Start execution (Ausführung starten) aus.

    4. Die Step Functions Functions-Konsole leitet Sie zu einer Seite weiter, die mit Ihrer Ausführungs-ID betitelt ist. Diese Seite wird als Seite mit den Ausführungsdetails bezeichnet. Auf dieser Seite können Sie die Ausführungsergebnisse im Verlauf der Ausführung oder nach deren Abschluss überprüfen.

      Um die Ausführungsergebnisse zu überprüfen, wählen Sie in der Diagrammansicht einzelne Status aus und wählen Sie dann die einzelnen Registerkarten im Schrittdetails Bereich, um die Details der einzelnen Status, einschließlich Eingabe, Ausgabe und Definition, anzuzeigen. Einzelheiten zu den Ausführungsinformationen, die Sie auf der Seite mit den Ausführungsdetails einsehen können, finden Sie unterSeite mit Ausführungsdetails – Schnittstellenübersicht.

Beispiel für einen State-Machine-Code

Die Zustandsmaschine in diesem Beispielprojekt lässt sich in Amazon SQS, Amazon SNS und Lambda integrieren, indem Parameter direkt an diese Ressourcen übergeben werden.

Sehen Sie sich diese Beispiel-Zustandsmaschine an, um zu sehen, wie Step Functions Lambda, DynamoDB und Amazon SNS steuert, indem es eine Verbindung zum Amazon-Ressourcennamen (ARN) im Resource Feld herstellt und Parameters an die Service-API weiterleitet.

Weitere Informationen darüber, wie Sie andere AWS Dienste steuern AWS Step Functions können, finden Sie unter. Verwendung AWS Step Functions mit anderen Diensten

{ "Comment": "An example of the Amazon States Language for reading messages from an SQS queue and iteratively processing each message.", "StartAt": "Read messages from SQS Queue", "States": { "Read messages from SQS Queue": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "FunctionName": "MapSampleProj-ReadFromSQSQueueLambda-1MY3M63RMJVA9" }, "Next": "Are there messages to process?" }, "Are there messages to process?": { "Type": "Choice", "Choices": [ { "Variable": "$", "StringEquals": "No messages", "Next": "Finish" } ], "Default": "Process messages" }, "Process messages": { "Type": "Map", "Next": "Finish", "ItemsPath": "$", "Parameters": { "MessageNumber.$": "$$.Map.Item.Index", "MessageDetails.$": "$$.Map.Item.Value" }, "Iterator": { "StartAt": "Write message to DynamoDB", "States": { "Write message to DynamoDB": { "Type": "Task", "Resource": "arn:aws:states:::dynamodb:putItem", "ResultPath": null, "Parameters": { "TableName": "MapSampleProj-DDBTable-YJDJ1MKIN6C5", "ReturnConsumedCapacity": "TOTAL", "Item": { "MessageId": { "S.$": "$.MessageDetails.MessageId" }, "Body": { "S.$": "$.MessageDetails.Body" } } }, "Next": "Remove message from SQS queue" }, "Remove message from SQS queue": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "InputPath": "$.MessageDetails", "ResultPath": null, "Parameters": { "FunctionName": "MapSampleProj-DeleteFromSQSQueueLambda-198J2839ZO5K2", "Payload": { "ReceiptHandle.$": "$.ReceiptHandle" } }, "Next": "Publish message to SNS topic" }, "Publish message to SNS topic": { "Type": "Task", "Resource": "arn:aws:states:::sns:publish", "InputPath": "$.MessageDetails", "Parameters": { "Subject": "Message from Step Functions!", "Message.$": "$.Body", "TopicArn": "arn:aws:sns:us-east-1:012345678910:MapSampleProj-SNSTopic-1CQO4HQ3IR1KN" }, "End": true } } } }, "Finish": { "Type": "Succeed" } } }

IAM-Beispiel

Diese vom Beispielprojekt generierte Beispielrichtlinie AWS Identity and Access Management (IAM) beinhaltet die geringsten Rechte, die für die Ausführung der Zustandsmaschine und der zugehörigen Ressourcen erforderlich sind. Wir empfehlen, dass Sie nur die Berechtigungen in Ihre IAM-Richtlinien aufnehmen, die erforderlich sind.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:us-east-1:012345678901:function:MapSampleProj-ReadFromSQSQueueLambda-1MY3M63RMJVA9", "arn:aws:lambda:us-east-1:012345678901:function:MapSampleProj-DeleteFromSQSQueueLambda-198J2839ZO5K2" ], "Effect": "Allow" }, { "Action": [ "dynamodb:PutItem" ], "Resource": [ "arn:aws:dynamodb:us-east-1:012345678901:table/MapSampleProj-DDBTable-YJDJ1MKIN6C5" ], "Effect": "Allow" }, { "Action": [ "sns:Publish" ], "Resource": [ "arn:aws:sns:us-east-1:012345678901:MapSampleProj-SNSTopic-1CQO4HQ3IR1KN" ], "Effect": "Allow" } ] }

Informationen zur Konfiguration von IAM bei der Verwendung von Step Functions mit anderen AWS Diensten finden Sie unterIAM-Richtlinien für integrierte Dienste.