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.
Workflow-Status der Aufgabe
Ein Task
-Zustand ("Type": "Task"
) steht für eine einzelne Arbeitseinheit, die von einem Zustandsautomaten durchgeführt wird. Eine Aufgabe erledigt Arbeit mithilfe einer Aktivität oder eines AWS Lambda Funktion, durch Integration mit anderen unterstützten AWS-Servicesoder indem Sie einen Drittanbieter API wie Stripe aufrufen.
Die Sprache Amazon States stellt Aufgaben dar, indem sie den Typ eines Zustands auf setzt Task
und der Aufgabe den Amazon-Ressourcennamen (ARN) der Aktivität, der Lambda-Funktion oder des API Drittanbieter-Endpunkts zuweist. Die folgende Task-State-Definition ruft eine Lambda-Funktion mit dem Namen auf. HelloFunction
"Lambda Invoke": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"Payload.$": "$",
"FunctionName": "arn:aws:lambda:us-east-2
:123456789012
:function:HelloFunction
:$LATEST"
},
"End": true
}
Aufgabentypen
Step Functions unterstützt die folgenden Aufgabentypen, die Sie in einer Aufgabenstatusdefinition angeben können:
Sie geben einen Aufgabentyp an, indem Sie ARN ihn im Resource
Feld einer Aufgabenstatusdefinition angeben. Das folgende Beispiel zeigt die Syntax des Resource
Felds. Alle Aufgabentypen außer dem, der einen Drittanbieter aufruftAPI, verwenden die folgende Syntax. Hinweise zur Syntax der HTTP Aufgabe finden Sie unterRufen Sie Drittanbieter APIs in Step Functions Functions-Workflows auf.
Ersetzen Sie in Ihrer Aufgabenstatusdefinition den kursiv geschriebenen Text in der folgenden Syntax durch AWS ressourcenspezifische Informationen.
arn:partition
:service
:region
:account
:task_type
:name
In der folgenden Liste werden die einzelnen Komponenten dieser Syntax erklärt:
-
partition
ist der AWS Step Functions am häufigsten zu verwendende Partitionaws
. -
service
gibt die an AWS-Service wird verwendet, um die Aufgabe auszuführen, und kann einer der folgenden Werte sein:-
states
für eine Aktivität. -
lambda
für eine Lambda-Funktion. Wenn Sie sich mit anderen integrieren AWS-Services, zum Beispiel Amazon SNS oder Amazon DynamoDB, verwenden Siesns
oder.dynamodb
-
-
region
ist der AWS Regionalcode, in dem die Step Functions Functions-Aktivität oder der Status, der Maschinentyp, die Lambda-Funktion oder eine andere AWS Die Ressource wurde erstellt. -
account
ist der AWS-Konto ID, in der Sie die Ressource definiert haben. -
task_type
ist der Typ der auszuführenden Aufgabe. Dabei kann es sich um einen der folgenden Werte handeln:-
activity
— Eine Aktivität. -
function
— Eine Lambda-Funktion. -
— Der Name eines unterstützten verbundenen Dienstes (sieheIntegration von Diensten mit Step Functions).servicename
-
-
name
ist der registrierte Ressourcenname (Aktivitätsname, Lambda-Funktionsname oder API Dienstaktion).
Anmerkung
Step Functions unterstützt keine partitions- oder ARNs regionsübergreifende Referenzierung. aws-cn
Kann beispielsweise keine Aufgaben in der aws
Partition aufrufen und umgekehrt.
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.
Für Aktivitäten wird die folgende Syntax Resource
ARNs verwendet.
arn:partition
:states:region
:account
:activity:name
Anmerkung
Sie müssen Aktivitäten mit Step Functions (mithilfe einer CreateActivity, einer API Aktion oder der Step Functions Functions-Konsole
Weitere Informationen zum Erstellen einer Aktivität und zum Implementieren von Workern finden Sie unter Activities.
Lambda-Funktionen
Lambda-Aufgaben führen eine Funktion aus mit AWS Lambda. Um eine Lambda-Funktion anzugeben, verwenden Sie ARN die Lambda-Funktion im Resource
Feld.
Abhängig von der Art der Integration (Optimierte Integration oder AWS SDKIntegration), die Sie für die Angabe einer Lambda-Funktion verwenden, variiert die Syntax des Resource
Felds Ihrer Lambda-Funktion.
Die folgende Resource
Feldsyntax ist ein Beispiel für eine optimierte Integration mit einer Lambda-Funktion.
"arn:aws:states:::lambda:invoke"
Die folgende Resource
Feldsyntax ist ein Beispiel für AWS SDKIntegration mit einer Lambda-Funktion.
"arn:aws:states:::aws-sdk:lambda:invoke"
Die folgende Task
Zustandsdefinition zeigt ein Beispiel für eine optimierte Integration mit einer Lambda-Funktion namens
.HelloWorld
"LambdaState": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"OutputPath": "$.Payload",
"Parameters": {
"Payload.$": "$",
"FunctionName": "arn:aws:lambda:us-east-1:function:HelloWorld:$LATEST
"
},
"Next": "NextState"
}
Nachdem die im Resource
Feld angegebene Lambda-Funktion abgeschlossen ist, wird ihre Ausgabe in den im Next
Feld angegebenen Status (“ NextState „) gesendet.
Ein unterstützter AWS-Service
Wenn Sie auf eine verbundene Ressource verweisen, ruft Step Functions direkt die API Aktionen eines unterstützten Dienstes auf. Geben Sie im Resource
-Feld den Service und die Aktion an.
Der verbundene Dienst Resource
ARNs verwendet die folgende Syntax.
arn:partition
:states:region
:account
:servicename
:APIname
Anmerkung
Um eine synchrone Verbindung zu einer verbundenen Ressource herzustellen, fügen .sync
Sie den APIname
Eintrag in der. ARN Weitere Informationen finden Sie unter Integrieren von -Services.
Beispielsweise:
{
"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
}
}
}
Felder für den Aufgabenstatus
Zusätzlich zu den allgemeinen Zustandsfeldern haben Task
-Zustände die folgenden Felder.
-
Resource
(Erforderlich) -
EinURI, insbesondere ein FeldARN, das die spezifische auszuführende Aufgabe eindeutig identifiziert.
-
Parameters
(Optional) -
Wird verwendet, um Informationen an die API Aktionen verbundener Ressourcen weiterzuleiten. Die Parameter können eine Mischung aus statisch JSON und verwenden JsonPath
. Weitere Informationen finden Sie unter Übergeben von Parametern an einen Dienst API in Step Functions. Credentials
(Optional)-
Gibt eine Zielrolle an, die die Ausführungsrolle der Zustandsmaschine übernehmen muss, bevor die angegebene
Resource
Rolle aufgerufen wird. Alternativ können Sie auch einen JSONPath Wert oder eine systeminterne Funktion angeben, die zur Laufzeit auf der Grundlage der Ausführungseingabe ARN in eine IAM Rolle aufgelöst wird. Wenn Sie einen JSONPath Wert angeben, müssen Sie ihm die Notation voranstellen.$.
Beispiele für die Verwendung dieses Felds im
Task
Bundesstaat finden Sie unterBeispiele für das Feld „Anmeldeinformationen“ des Aufgabenstatus. Ein Beispiel für die Verwendung dieses Felds für den Zugriff auf ein kontoübergreifendes Konto AWS Eine Ressource von Ihrem State Machine finden Sie unterKontenübergreifender Zugriff AWS Ressourcen in Step Functions.Anmerkung
Dieses Feld wird von den unterstütztAufgabentypen, die Lambda-Funktionen verwenden, und von einem unterstützten AWS Dienst.
-
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 FeldOutputPath
festgelegt gefiltert (falls vorhanden), bevor sie als Ausgabe des Zustands verwendet wird. Weitere Informationen finden Sie unter Verarbeitung von Eingabe und Ausgabe. -
ResultSelector
(Optional) -
Übergibt eine Sammlung von Schlüssel-Wert-Paaren, wobei die Werte statisch sind oder aus dem Ergebnis ausgewählt werden. 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 Zustandsmaschinen mit 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) -
Gibt die maximale Zeit an, für die eine Aktivität oder eine Aufgabe ausgeführt werden kann, bevor das Timeout mit dem States.Timeout Fehler auftritt und fehlschlägt. Der Timeout-Wert muss eine positive Ganzzahl ungleich Null sein. Der Standardwert ist
99999999
.Die Anzahl der Timeouts beginnt, nachdem eine Aufgabe gestartet wurde, z. B. wenn
ActivityStarted
LambdaFunctionStarted
Ereignisse im Verlauf der Ausführungsereignisse protokolliert werden. Bei Aktivitäten beginnt die Zählung mit demGetActivityTask
Empfang eines Tokens undActivityStarted
wird im Verlauf der Ausführungsereignisse protokolliert.Wenn eine Aufgabe gestartet wird, wartet Step Functions innerhalb der angegebenen
TimeoutSeconds
Dauer auf eine Erfolgs- oder Fehlschlagsantwort des Aufgaben- oder Aktivitätsarbeiters. Wenn der Aufgaben- oder Aktivitätsarbeiter innerhalb dieser Zeit nicht reagiert, markiert Step Functions die Workflow-Ausführung als fehlgeschlagen.Anmerkung
HTTPDas Task-Timeout beträgt maximal 60 Sekunden, auch wenn dieses Limit
TimeoutSeconds
überschritten wird. Siehe Kontingente im Zusammenhang mit der HTTP Aufgabe -
TimeoutSecondsPath
(Optional) -
Wenn Sie einen Timeout-Wert dynamisch aus der Statuseingabe mithilfe eines Referenzpfads bereitstellen möchten, verwenden Sie.
TimeoutSecondsPath
Wenn das Problem gelöst ist, muss der Referenzpfad Felder auswählen, deren Werte positive ganze Zahlen sind.Anmerkung
Ein
Task
Status kann nicht sowohl als auchTimeoutSeconds
enthalten.TimeoutSecondsPath
HTTPDas Task-Timeout beträgt maximal 60 Sekunden, auch wenn derTimeoutSecondsPath
Wert dieses Limit überschreitet. -
HeartbeatSeconds
(Optional) -
Bestimmt die Frequenz der Heartbeat-Signale, die ein Activity Worker während der Ausführung einer Aufgabe sendet. Heartbeats weisen darauf hin, dass eine Aufgabe noch ausgeführt wird und mehr Zeit benötigt, bis sie abgeschlossen ist. Heartbeats verhindern, dass bei einer Aktivität oder Aufgabe innerhalb der Dauer ein Timeout auftritt.
TimeoutSeconds
HeartbeatSeconds
muss ein positiver Ganzzahlwert ungleich Null sein, der unter demTimeoutSeconds
Feldwert liegt. Der Standardwert ist99999999
. Wenn zwischen den Heartbeats der Aufgabe mehr Zeit als die angegebenen Sekunden vergeht, schlägt der Task-Status mit einem Fehler fehl. States.TimeoutBei Aktivitäten beginnt die Zählung mit dem
GetActivityTask
Empfang eines Tokens undActivityStarted
wird im Verlauf der Ausführungsereignisse protokolliert. -
HeartbeatSecondsPath
(Optional) -
Wenn Sie einen Heartbeat-Wert dynamisch aus der Statuseingabe mithilfe eines Referenzpfads bereitstellen möchten, verwenden Sie
HeartbeatSecondsPath
. Wenn das Problem gelöst ist, muss der Referenzpfad Felder auswählen, deren Werte positive ganze Zahlen sind.Anmerkung
Ein
Task
Status kann nicht sowohl als auchHeartbeatSeconds
enthalten.HeartbeatSecondsPath
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.
Beispiele für die Definition von Aufgabenstatus
Die folgenden Beispiele zeigen, wie Sie die Definition des Aufgabenstatus auf der Grundlage Ihrer Anforderungen angeben können.
Timeouts und Heartbeat-Intervalle für den Aufgabenstatus
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 dynamische Einstellung erreicht werden.
Beispiel für ein statisches Timeout und eine 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 ein dynamisches Task-Timeout und eine Heartbeat-Benachrichtigung
In diesem Beispiel, wenn AWS Glue Der Job ist abgeschlossen, der nächste Status wird ausgeführt.
Wenn diese Aufgabe nicht innerhalb des Intervalls abgeschlossen werden kann, das dynamisch von AWS Glue
Job, die Aufgabe ist markiert alsfailed
.
"GlueJobTask": {
"Type": "Task",
"Resource": "arn:aws:states:::glue:startJobRun.sync",
"Parameters": {
"JobName": "myGlueJob"
},
"TimeoutSecondsPath": "$.params.maxTime",
"Next": "NextState"
}
Beispiele für das Feld „Anmeldeinformationen“ des Aufgabenstatus
Angabe einer fest codierten Rolle IAM ARN
Das folgende Beispiel spezifiziert eine IAM Zielrolle, die die Ausführungsrolle einer Zustandsmaschine annehmen muss, um auf eine kontoübergreifende Lambda-Funktion mit dem Namen zuzugreifen. Echo
In diesem Beispiel ARN wird die Zielrolle als fest codierter Wert angegeben.
{
"StartAt": "Cross-account call",
"States": {
"Cross-account call": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Credentials": {
"RoleArn": "arn:aws:iam::111122223333:role/LambdaRole"
},
"Parameters": {
"FunctionName": "arn:aws:lambda:us-east-2:111122223333:function:Echo
"
},
"End": true
}
}
}
JSONPathAls IAM Rolle angeben ARN
Im folgenden Beispiel wird ein JSONPath Wert angegeben, der zur ARN Laufzeit in eine IAM Rolle aufgelöst wird.
{
"StartAt": "Lambda",
"States": {
"Lambda": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Credentials": {
"RoleArn.$": "$.roleArn"
},
...
}
}
}
Angabe einer systemeigenen Funktion als Rolle IAM ARN
Im folgenden Beispiel wird die States.Formatsysteminterne Funktion verwendet, die zur Laufzeit in eine Rolle aufgelöst wird. IAM ARN
{
"StartAt": "Lambda",
"States": {
"Lambda": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Credentials": {
"RoleArn.$": "States.Format('arn:aws:iam::{}:role/ROLENAME', $.accountId)"
},
...
}
}
}