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 eine AWS Batch Jobabfrager. Es implementiert eine AWS Step Functions Zustandsmaschine, die verwendet AWS Lambda um eine Wait
Zustandsschleife zu erstellen, die überprüft, ob AWS Batch
Arbeit.
In diesem Beispielprojekt werden alle Ressourcen erstellt und konfiguriert, sodass Ihr Step Functions Functions-Workflow eine AWS Batch Job 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. Für Informationen zur Steuerung AWS Batch direkt finden Sie unterIntegration von Diensten 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 AWS Step Functions kann andere kontrollieren AWS Dienstleistungen, sieheIntegration von Diensten mit Step Functions.
Schritt 1: Erstellen Sie die Zustandsmaschine
-
Öffnen Sie die Step Functions Functions-Konsole
und wählen Sie Create State Machine. -
Geben Sie
Job Poller
etwas in das Suchfeld ein, und wählen Sie dann Job Poller aus den zurückgegebenen Suchergebnissen aus. -
Wählen Sie Next (Weiter), um fortzufahren.
-
Wählen Sie „Demo ausführen“, um eine schreibgeschützte Version und einen ready-to-deploy Workflow zu erstellen, oder wählen Sie „Darauf aufbauen“, um eine bearbeitbare Zustandsmaschinen-Definition zu erstellen, auf der Sie aufbauen und diese später bereitstellen können.
In diesem Beispielprojekt werden die folgenden Ressourcen bereitgestellt:
-
Drei Lambda-Funktionen zum Einreichen einer AWS Batch Rufen Sie den aktuellen Status des eingereichten Jobs ab AWS Batch Job und den endgültigen Abschlussstatus des Jobs.
-
Importieren in &S3; AWS Batch Auftrag
-
Importieren in &S3; AWS Step Functions Zustandsautomat
-
Verwandt AWS Identity and Access Management (IAM) Rollen
Die folgende Abbildung zeigt das Workflow-Diagramm für das Job Poller-Beispielprojekt:
-
-
Wählen Sie Vorlage verwenden, um mit Ihrer Auswahl fortzufahren.
Die nächsten Schritte hängen von Ihrer vorherigen Auswahl ab:
-
Führen Sie eine Demo durch — Sie können den Status Machine überprüfen, bevor Sie ein schreibgeschütztes Projekt mit Ressourcen erstellen, die bereitgestellt werden von AWS CloudFormation zu Ihrem AWS-Konto.
Sie können sich die State-Machine-Definition ansehen. Wenn Sie bereit sind, wählen Sie Deploy and run, um das Projekt bereitzustellen und die Ressourcen zu erstellen.
Die Bereitstellung kann bis zu 10 Minuten dauern, bis Ressourcen und Berechtigungen erstellt sind. Sie können den Stack-ID-Link verwenden, um den Fortschritt zu überwachen AWS CloudFormation.
Nach Abschluss der Bereitstellung sollte Ihre neue Zustandsmaschine in der Konsole angezeigt werden.
-
Darauf aufbauen — Sie können die Workflow-Definition überprüfen und bearbeiten. Möglicherweise müssen Sie Werte für Platzhalter im Beispielprojekt festlegen, bevor Sie versuchen, Ihren benutzerdefinierten Workflow auszuführen.
Anmerkung
Für Dienste, die für Ihr Konto bereitgestellt werden, 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:
-
(Optional) Geben Sie einen benutzerdefinierten Ausführungsnamen ein, um den generierten Standard zu überschreiben.
ASCIINichtnamen und Protokollierung
Step Functions akzeptiert Namen für Zustandsmaschinen, Ausführungen, Aktivitäten und Beschriftungen, die ASCII Nichtzeichen enthalten. Da solche Zeichen nicht mit Amazon funktionieren, empfehlen wir CloudWatch, nur ASCII Zeichen zu verwenden, damit Sie die Messwerte verfolgen können CloudWatch.
-
(Optional) Geben Sie im Eingabefeld die Eingabewerte als einJSON. Sie können diesen Schritt überspringen, wenn Sie eine Demo ausführen.
-
Wählen Sie Start execution (Ausführung starten) aus.
Die Step Functions Functions-Konsole leitet Sie zu einer Seite mit den Ausführungsdetails weiter, auf der Sie Status in der Diagrammansicht auswählen können, um die zugehörigen Informationen im Einzelheiten zu den Schritten Bereich zu untersuchen.
Zum Beispiel, um den sich ändernden Status Ihres AWS Batch Wählen Sie die Registerkarte Ausgabe und die Ergebnisse Ihrer Ausführung in einer Schleife.
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.
-
Code des Zustandsautomaten aus diesem Beispiel
Die Zustandsmaschine in diesem Beispielprojekt ist integriert mit AWS Lambda um eine einzureichen AWS Batch Arbeit. Sehen Sie sich diese Beispiel-Zustandsmaschine an, um zu sehen, wie Step Functions Lambda steuert und AWS Batch.
Für weitere Informationen darüber, wie AWS Step Functions kann andere kontrollieren AWS Dienstleistungen, sieheIntegration von Diensten 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
}
}
}