Umfrage zum Jobstatus mit Lambda und AWS Batch - 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.

Umfrage zum Jobstatus mit Lambda und AWS Batch

Dieses Beispielprojekt erstellt einen AWS Batch Job Poller. Es implementiert eine AWS Step Functions Zustandsmaschine, die verwendet wird, AWS Lambda um eine Wait Statusschleife zu erstellen, die einen AWS Batch Job überprüft.

In diesem Beispielprojekt werden alle Ressourcen so erstellt und konfiguriert, dass Ihr Step Functions Functions-Workflow einen AWS Batch Job weiterleitet und wartet, bis dieser Job abgeschlossen ist, bevor er erfolgreich beendet wird.

Anmerkung

Sie können dieses Muster auch implementieren, ohne eine Lambda-Funktion zu verwenden. Hinweise zur AWS Batch direkten Steuerung finden Sie unterIntegration anderer Dienste mit Step Functions.

Dieses Beispielprojekt erstellt die Zustandsmaschine, zwei Lambda-Funktionen und eine AWS Batch Warteschlange und konfiguriert die zugehörigen IAM Berechtigungen.

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

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

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

  2. Geben Sie Job Poller etwas in das Suchfeld ein, und wählen Sie dann Job Poller aus den zurückgegebenen Suchergebnissen 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:

    • Drei Lambda-Funktionen zum Senden eines AWS Batch Jobs, zum Abrufen des aktuellen Status des übermittelten AWS Batch Jobs und zum endgültigen Abschlussstatus des Jobs.

    • Ein Job AWS Batch

    • Eine AWS Step Functions Staatsmaschine

    • Verwandte AWS Identity and Access Management (IAM) Rollen

    Die folgende Abbildung zeigt das Workflow-Diagramm für das Job Poller-Beispielprojekt:

    Workflow-Diagramm des Job Poller-Beispielprojekts.
  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, stellt jedoch nicht die Ressourcen in der Workflow-Definition bereit, sodass Sie Ihren Workflow-Prototyp weiterentwickeln können.

      In Workflow Studio können Sie Ihrem Workflow-Prototyp zusätzliche Status hinzufügen. Entwurfsmodus Oder Sie können zu der wechseln, um den integrierten Code-Editor Codemodus zu verwenden, um die Amazon States Language (ASL) -Definition Ihrer Zustandsmaschine von der Step Functions Functions-Konsole aus zu bearbeiten.

      Wichtig

      Möglicherweise müssen Sie den Platzhalter Amazon Resource Name (ARN) für die im Beispielprojekt verwendeten Ressourcen aktualisieren, bevor Sie Ihren Workflow ausführen können.

    • Wenn Sie Eine Demo ausführen ausgewählt haben, erstellt Step Functions ein schreibgeschütztes Projekt, das eine AWS CloudFormation Vorlage verwendet, um die AWS Ressourcen in dieser Vorlage für Ihr Projekt bereitzustellen. AWS-Konto Sie können die State-Machine-Definition anzeigen, indem Sie den Codemodus wählen.

      Wählen Sie Bereitstellen und ausführen, um das Projekt bereitzustellen und die Ressourcen zu erstellen.

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

      Nachdem alle Ressourcen erstellt wurden, sollte das Projekt auf der Seite State Machines in der Konsole angezeigt werden.

      Wichtig

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

Schritt 2: Führen Sie die Zustandsmaschine aus

Nachdem alle Ressourcen bereitgestellt und bereitgestellt wurden, wird das Dialogfeld Ausführung starten mit einer Beispieleingabe angezeigt, die der folgenden ähnelt.

{ "jobName": "my-job", "jobDefinition": "arn:aws:batch:us-east-2:123456789012:job-definition/SampleJobDefinition-343f54b445d5312:1", "jobQueue": "arn:aws:batch:us-east-2:123456789012:job-queue/SampleJobQueue-4d9d696031e1449", "wait_time": 60 }
Anmerkung

wait_time weist den Wait-Zustand an, alle 60 Sekunden eine Schleife auszuführen.

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

    1. (Optional) Um Ihre Ausführung zu identifizieren, können Sie einen Namen angeben oder den generierten Standardnamen für die Ausführung verwenden.

      Anmerkung

      Step Functions akzeptiert Namen für Zustandsmaschinen, Ausführungen, Aktivitäten und Beschriftungen, die ASCII Nichtzeichen enthalten. Da Namen, die keine ASCII Zeichen enthalten, bei Amazon nicht funktionieren CloudWatch, empfehlen wir, nur ASCII Zeichen zu verwenden, damit Sie die Messwerte verfolgen können. CloudWatch

    2. (Optional) Geben Sie im 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 Einzelheiten zu den Schritten 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 den Ausführungsdetails — Übersicht über die Benutzeroberfläche.

    Um beispielsweise den sich ändernden Status Ihres AWS Batch Jobs und die Loop-Ergebnisse Ihrer Ausführung anzuzeigen, wählen Sie die Registerkarte Ausgabe.

    Die folgende Abbildung zeigt das Diagramm zum Ausführungsstatus in der Diagrammansicht. Es zeigt auch die Ausführungsausgabe für den ausgewählten Schritt auf der Registerkarte Ausgabe.

    Ausführungsausgabe für den ausgewählten Schritt mit dem Namen Get Final Job Status in der Diagrammansicht.

Code des Zustandsautomaten aus diesem Beispiel

Die Zustandsmaschine in diesem Beispielprojekt lässt sich integrieren AWS Lambda , um einen AWS Batch Job zu senden. Sehen Sie sich diese Beispiel-Zustandsmaschine an, um zu sehen, wie Step Functions Lambda und AWS Batch steuert.

Weitere Informationen darüber, wie AWS Step Functions Sie andere AWS Dienste steuern können, finden Sie unterIntegration anderer Dienste mit Step Functions.

{ "Comment": "An example of the Amazon States Language that runs an AWS Batch job and monitors the job until it completes.", "StartAt": "Submit Job", "States": { "Submit Job": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:111122223333:function:StepFunctionsSample-JobStatusPol-SubmitJobFunction-jDaYcl4cx55r", "ResultPath": "$.guid", "Next": "Wait X Seconds" }, "Wait X Seconds": { "Type": "Wait", "SecondsPath": "$.wait_time", "Next": "Get Job Status" }, "Get Job Status": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:111122223333:function:StepFunctionsSample-JobStatusPoll-CheckJobFunction-1JkJwY10vonI", "Next": "Job Complete?", "InputPath": "$.guid", "ResultPath": "$.status" }, "Job Complete?": { "Type": "Choice", "Choices": [ { "Variable": "$.status", "StringEquals": "FAILED", "Next": "Job Failed" }, { "Variable": "$.status", "StringEquals": "SUCCEEDED", "Next": "Get Final Job Status" } ], "Default": "Wait X Seconds" }, "Job Failed": { "Type": "Fail", "Cause": "AWS Batch Job Failed", "Error": "DescribeJob returned FAILED" }, "Get Final Job Status": { "Type": "Task", "Resource": "arn:aws::lambda:us-east-1:111122223333:function:StepFunctionsSample-JobStatusPoll-CheckJobFunction-1JkJwY10vonI", "InputPath": "$.guid", "End": true } } }