Aufgabe - 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.

Aufgabe

Ein Task-Zustand ("Type": "Task") steht für eine einzelne Arbeitseinheit, die von einem Zustandsautomaten durchgeführt wird.

Die gesamte Arbeit in Ihrer Zustandsmaschine wird durch Aufgaben durchgeführt. Eine Aufgabe führt die Arbeit durch, indem sie eine Aktivität oder eine AWS Lambda-Funktion verwendet oder Parameter an die API-Aktionen anderer Services übergibt.

AWS Step Functionskann Lambda-Funktionen direkt aus einem Aufgabenzustand aufrufen. Eine Lambda-Funktion ist eine cloud-native Aufgabe, die auf ausgeführt wirdAWS Lambdaaus. Sie können Lambda-Funktionen in einer Vielzahl von Programmiersprachen, mit derAWS Management Consoleoder indem Sie Code auf Lambda hochladen. Weitere Informationen finden Sie unterErstellen einer Step Functions State Machine, die Lambda verwendetaus.

Anmerkung

Step Functions können einige koordinierenAWS-Services direkt aus einem Aufgabenzustand. Weitere Informationen finden Sie unterArbeiten mit anderen Servicesaus.

Eine Aktivität besteht aus Programmcode, der darauf wartet, dass ein Operator eine Aktion durchführt oder eine Eingabe bereitstellt. Sie können Aktivitäten auf Amazon EC2, auf Amazon ECS oder sogar auf mobilen Geräten hosten. Aktivitäten Umfrage Step Functions mit demGetActivityTaskundSendTaskSuccess,SendTaskFailure, undSendTaskHeartbeat-API-Aktionen

Die Sprache von Amazon States stellt Aufgaben dar, indem der Typ eines Zustands auf festgelegt wirdTaskund indem Sie der Aufgabe den Amazon-Ressourcennamen (ARN) der Aktivität oder Lambda-Funktion bereitstellen.

Zusätzlich zu den allgemeinen Zustandsfeldern haben Task-Zustände die folgenden Felder.

Resource (Erforderlich)

Ein URI, vor allem ein ARN, der bestimmte auszuführende Aufgaben identifiziert.

Parameters (Optional)

Wird für die Weitergabe von Informationen zu den API-Aktionen von verbundenen Ressourcen verwendet. Die Parameter können eine Kombination aus statischem JSON und JsonPath verwenden. Weitere Informationen finden Sie unter Übergeben von Parametern an eine Service-API.

ResultPath (Optional)

Gibt an, wohin (in der Eingabe) die Ergebnisse der Ausführung der in Resource angegebenen Aufgabe zu platzieren sind. Die Eingabe wird dann wie vom Feld OutputPath festgelegt gefiltert (falls vorhanden), bevor sie als Ausgabe des Zustands verwendet wird. Weitere Informationen finden Sie unter Verarbeitung von Eingabe und Ausgabe.

ResultSelector (Optional)

Übergeben Sie eine Auflistung von Schlüsselwertpaaren, wobei die Werte statisch oder aus dem Ergebnis ausgewählt sind. Weitere Informationen finden Sie unter ResultSelector.

Retry (Optional)

Ein Array von Objekten namens Retrier, die eine Wiederholungsrichtlinie für den Fall definieren, dass der Zustand auf Laufzeitfehler trifft. Weitere Informationen finden Sie unter Beispiele für die Verwendung von Retry und Catch.

Catch (Optional)

Ein Array von Objekten namens Catcher, die einen Fallback-Zustand definieren. Dieser Zustand wird ausgeführt, falls der Zustand auf Laufzeitfehler trifft und seine Wiederholungsrichtlinie ausgeschöpft wurde oder nicht definiert ist. Weitere Informationen finden Sie unter Fallback-Zustände.

TimeoutSeconds (Optional)

Wenn die Aufgabe länger als für die angegebene Anzahl an Sekunden ausgeführt wird, schlägt dieser Zustand mit einem States.Timeout-Fehlernamen fehl. Es muss eine positive Ganzzahl ungleich Null sein. Falls nicht angegeben, ist der Standardwert 99999999. Die Zählung beginnt, nachdem die Aufgabe gestartet wurde, z. B. wenn ActivityStarted oder LambdaFunctionStarted im Execution event history (Ausführungsereignisverlauf) protokolliert werden.

TimeoutSecondsPath (Optional)

Wenn Sie einen Timeout-Wert dynamisch aus der Statuseingabe mit einem Referenzpfad angeben möchten, verwenden SieTimeoutSecondsPathaus. Wenn dies gelöst ist, muss der Referenzpfad Felder auswählen, deren Werte positive Ganzzahlen sind.

Anmerkung

EINTaskStaat kann nicht beides einschließenTimeoutSecondsundTimeoutSecondsPath

HeartbeatSeconds (Optional)

Wenn zwischen Heartbeats von der Aufgabe mehr Zeit als die angegebene Anzahl an Sekunden vergeht, schlägt dieser Zustand mit einem States.Timeout-Fehlernamen fehl. Es muss eine positive Ganzzahl ungleich Null sein, kleiner als die Anzahl der Sekunden, die im Feld TimeoutSeconds angegeben ist. Falls nicht angegeben, ist der Standardwert 99999999. Die Zählung beginnt, wenn GetActivityTask ein Token erhält und ActivityStarted im Ausführungsereignisverlauf protokolliert wird.

HeartbeatSecondsPath (Optional)

Wenn Sie einen Heartbeat-Wert dynamisch aus der Statuseingabe mit einem Referenzpfad angeben möchten, verwenden SieHeartbeatSecondsPathaus. Wenn dies gelöst ist, muss der Referenzpfad Felder auswählen, deren Werte positive Ganzzahlen sind.

Anmerkung

EINTaskStaat kann nicht beides einschließenHeartbeatSecondsundHeartbeatSecondsPath

Ein Task-Zustand muss entweder das Feld End auf true setzen, wenn der Zustand die Ausführung beendet, oder einen Zustand im Feld Next bereitstellen, der nach Abschluss des Task-Zustands ausgeführt wird.

Timeouts für Aufgabenstatus und Heartbeat-Intervalle

Es ist ein bewährtes Verfahren, für langlebige Aktivitäten einen Timeout-Wert und ein Heartbeat-Intervall festzulegen. Dies kann durch Angabe der Timeout- und Heartbeat-Werte oder durch dynamisches Festlegen erfolgen.

Beispiel für statische Timeout und Heartbeat-Benachrichtigung

Wenn HelloWorld abgeschlossen ist, wird der nächste Zustand (hier NextState genannt) ausgeführt.

Wenn diese Aufgabe nicht innerhalb von 300 Sekunden abgeschlossen ist oder keine Heartbeat-Benachrichtigungen in Intervallen von 60 Sekunden sendet, wird die Aufgabe als failed gekennzeichnet.

"ActivityState": { "Type": "Task", "Resource": "arn:aws:states:us-east-1:123456789012:activity:HelloWorld", "TimeoutSeconds": 300, "HeartbeatSeconds": 60, "Next": "NextState" }

Beispiel für dynamisches Task-Timeout und Heartbeat-

In diesem Beispiel, wenn derAWS Gluewird abgeschlossen, der nächste Zustand wird ausgeführt.

Wenn diese Aufgabe nicht innerhalb des Intervalls abgeschlossen wird, das von derAWS GlueJob oder sendet keine Heartbeat-Benachrichtigungen für das Intervall, das von derAWS Glue-Job ist die Aufgabe als gekennzeichnetfailedaus.

"ActivityState": { "Type": "Task", "Resource": "arn:aws:states:::glue:startJobRun.sync", "Parameters": { "JobName": "myGlueJob" }, "TimeoutSecondsPath": "$.params.maxTime", "HeartbeatSecondsPath": "$.params.heartbeat", "Next": "NextState" }

Angeben von Ressourcen-ARNs in Aufgaben

Der ARN des Felds Resource wird mithilfe des folgenden Musters angegeben.

arn:partition:service:region:account:task_type:name

Für dieses Muster gilt:

  • partition ist die zu verwendende AWS Step Functions-Partition, meistens aws.

  • service gibt den AWS-Service an, der zur Ausführung der Aufgabe verwendet wird, und ist eines der Folgenden:

  • regionist derAWSRegionin der die Step Functions Functions-Aktivität oder der Zustandsautomatentyp oder die Lambda-Funktion erstellt wurde.

  • account ist Ihre AWS-Konto-ID.

  • task_type ist der Typ der auszuführenden Aufgabe. Dabei handelt es sich um einen der folgenden Werte:

  • nameist der registrierte Ressourcenname (Name der Aktivität, Name der Lambda-Funktion oder Service-API-Aktion).

Anmerkung

Step Functions unterstützt keine Referenzierung von ARNs über Partitionen, Regionen oder Konten hinweg (Beispiel: „aws-cn“ kann keine Aufgaben in der Partition „aws“ aufrufen und umgekehrt).

Aufgabentypen

Die folgenden Aufgabentypen werden unterstützt:

In den folgenden Abschnitten erhalten Sie weitere Informationen zu den einzelnen Aufgabentypen.

Aktivität

Aktivitäten repräsentieren Worker (Prozesse oder Threads), die von Ihnen implementiert und gehostet werden, die eine bestimmte Aufgabe ausführen. Sie werden nur von Standard-Workflows und nicht von Express-Workflows unterstützt.

resource-ARNs von Aktivitäten verwenden die folgende Syntax.

arn:partition:states:region:account:activity:name

Weitere Informationen über diese Felder finden Sie unter Specifying Resource ARNs in Tasks.

Anmerkung

Sie müssen Aktivitäten mit Step Functions erstellen (mit einemCreateActivity, API-Aktion oder dasStep Functions Konsole) vor ihrem ersten Gebrauch.

Weitere Informationen zum Erstellen einer Aktivität und zum Implementieren von Workern finden Sie unter Activities.

Lambda-Funktionen

Lambda-Aufgaben führen eine Funktion mithilfe von ausAWS Lambdaaus. Um eine Lambda-Funktion anzugeben, verwenden Sie den ARN der Lambda-Funktion imResourcefield.

Lambda-FunktionResource-ARNs von -Funktionen verwenden die folgende Syntax.

arn:partition:lambda:region:account:function:function_name

Weitere Informationen über diese Felder finden Sie unter Specifying Resource ARNs in Tasks.

z. B.:

"LambdaState": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:HelloWorld", "Next": "NextState" }

Nach der Lambda-Funktion, die imResource-Feld ist abgeschlossen, seine Ausgabe wird an den Zustand gesendet, der imNext-Feld („NextState“).

Ein unterstützter AWS-Service

Wenn Sie auf eine verbundene Ressource verweisen, ruft Step Functions direkt die API-Aktionen eines unterstützten Services auf. Geben Sie im Resource-Feld den Service und die Aktion an.

Die Resource-ARNs von verbundenen Services verwenden die folgende Syntax.

arn:partition:states:region:account:servicename:APIname
Anmerkung

Um eine synchrone Verbindung zu einer verbundenen Ressource herzustellen, fügen Sie .sync zum APIname-Eintrag im ARN an. Weitere Informationen finden Sie unter Arbeiten mit anderen Services.

z. B.:

{ "StartAt": "BATCH_JOB", "States": { "BATCH_JOB": { "Type": "Task", "Resource": "arn:aws:states:::batch:submitJob.sync", "Parameters": { "JobDefinition": "preprocessing", "JobName": "PreprocessingBatchJob", "JobQueue": "SecondaryQueue", "Parameters.$": "$.batchjob.parameters", "RetryStrategy": { "attempts": 5 } }, "End": true } } }