

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
<a name="state-task"></a>

**Status verwalten und Daten transformieren**  
Erfahren Sie mehr über das [Übergeben von Daten zwischen Zuständen mithilfe von Variablen](workflow-variables.md) und das [Transformieren von Daten mit JSONata](transforming-data.md).

Ein `Task`-Zustand (`"Type": "Task"`) steht für eine einzelne Arbeitseinheit, die von einem Zustandsautomaten durchgeführt wird. Eine Aufgabe erledigt Aufgaben mithilfe einer Aktivität oder einer AWS Lambda Funktion, durch Integration mit anderen [unterstützten AWS-Services](supported-services-awssdk.md#supported-services-awssdk-list) APIs oder durch Aufrufen einer HTTPS-API wie Stripe.

Die [Sprache Amazon States](concepts-amazon-states-language.md) stellt Aufgaben dar, indem sie den Typ eines Zustands auf setzt `Task` und der Aufgabe den Amazon-Ressourcennamen (ARN) der Aktivität, die Lambda-Funktion oder den HTTPS-API-Endpunkt zur Verfügung stellt. 

**Rufen Sie eine Funktion mit Argumenten auf JSONata **

Die folgende Task-State-Definition (JSONata) ruft eine Lambda-Funktion mit dem Namen auf. `priceWatcher`

Beachten Sie die Verwendung von JSONata Ausdrücken zur Abfrage von Eingabedaten zur Verwendung in Arguments und des Aufgabenergebnisses im Zuweisungsfeld.

```
"Get Current Price": {
  "Type": "Task",
  "QueryLanguage" : "JSONata",
  "Resource": "arn:aws:states:::lambda:invoke",
  "Next": "Check Price",
  "Arguments": {
    "Payload": {
    "product": "{% $states.context.Execution.Input.product %}"
    },
    "FunctionName": "arn:aws:lambda:<region>:account-id:function:priceWatcher:$LATEST"
  },
  "Assign": {
    "currentPrice": "{% $states.result.Payload.current_price %}"
  }
}
```

**Rufen Sie eine Funktion mit JSONPath Parametern auf**

Die folgende Task-State-Definition (JSONPath) 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:region:account-id:function:HelloFunction:$LATEST"
  },
  "End": true
}
```

## Aufgabentypen
<a name="task-types"></a>

Step Functions unterstützt die folgenden Aufgabentypen, die Sie in einer Aufgabenstatusdefinition angeben können:
+  [Aktivität](#state-task-activity) 
+  [Lambda-Funktionen](#state-task-lambda) 
+  [A unterstützt AWS-Service](#state-task-connector) 
+ [Eine HTTP-Aufgabe](call-https-apis.md)

Sie geben einen Aufgabentyp an, indem Sie seinen ARN im `Resource` Feld einer Aufgabenstatusdefinition angeben. Das folgende Beispiel zeigt die Syntax des `Resource` Felds. Alle Task-Typen außer dem, der eine HTTPS-API aufruft, verwenden die folgende Syntax. Hinweise zur Syntax des HTTP-Tasks finden Sie unter[Rufen Sie HTTPS APIs in Step Functions Functions-Workflows auf](call-https-apis.md).

Ersetzen Sie in Ihrer Aufgabenstatusdefinition den kursiv geschriebenen Text in der folgenden Syntax durch die AWS ressourcenspezifischen Informationen.

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

In der folgenden Liste werden die einzelnen Komponenten dieser Syntax erklärt:
+  `partition`ist die am häufigsten zu verwendende AWS Step Functions Partition`aws`.
+  `service`gibt den Wert an, der zur Ausführung der Aufgabe AWS-Service verwendet wurde, und kann einer der folgenden Werte sein:
  +  `states` für eine [Aktivität](#state-task-activity).
  +  `lambda`für eine [Lambda-Funktion](#state-task-lambda). Wenn Sie eine Integration mit anderen AWS-Services, z. B. Amazon SNS oder Amazon DynamoDB, durchführen, verwenden Sie oder. `sns` `dynamodb`
+  `region`ist der [AWS Regionalcode](https://docs.aws.amazon.com/general/latest/gr/rande.html), in dem die Step Functions Functions-Aktivität oder der Zustandsmaschinentyp, die Lambda-Funktion oder eine andere AWS Ressource erstellt wurde.
+  `account`ist die 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](#state-task-activity).
  +  `function`— Eine [Lambda-Funktion](#state-task-lambda).
  +  `servicename`— Der Name eines unterstützten verbundenen Dienstes (siehe[Integration von Diensten mit Step Functions](integrate-optimized.md)).
+  `name`ist der registrierte Ressourcenname (Aktivitätsname, Lambda-Funktionsname oder Service-API-Aktion).

**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
<a name="state-task-activity"></a>

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](https://docs.aws.amazon.com/step-functions/latest/apireference/API_CreateActivity.html)API-Aktion oder der [Step Functions Functions-Konsole](https://console.aws.amazon.com/states/home?region=us-east-1#/)) erstellen, bevor sie zum ersten Mal verwendet werden.

Weitere Informationen zum Erstellen einer Aktivität und zum Implementieren von Workern finden Sie unter [Activities](concepts-activities.md).

### Lambda-Funktionen
<a name="state-task-lambda"></a>

Lambda-Aufgaben führen eine Funktion aus mit AWS Lambda. Um eine Lambda-Funktion anzugeben, verwenden Sie den ARN der Lambda-Funktion im `Resource` Feld.

Die Form Ihres `Resource` Lambda-Funktionsfeldes hängt von der Art der Integration ab.

Bei einer AWS Standard-SDK-Integration mit einer Lambda-Funktion enthält das `Resource` Feld den folgenden Wert:

```
"arn:aws:states:::aws-sdk:lambda:invoke"
```

Wir **empfehlen**, die optimierte Integration für Ihre Lambda-Funktionen zu verwenden und den folgenden Wert für das `Resource` Feld zu verwenden:

```
"arn:aws:states:::lambda:invoke"
```

Die folgende `Task` Zustandsdefinition zeigt ein Beispiel für eine optimierte Integration mit einer Lambda-Funktion namens `HelloWorld` using JSONata.

```
"Optimized call to Lambda function (JSONata)": {
      "Type": "Task",
      "Resource": "arn:aws:states:::lambda:invoke",
      "Output": "{% $states.result.Payload %}",
      "Arguments": {
        "FunctionName": "arn:aws:lambda:region:account-id:function:HelloWorld:$LATEST",
        "Payload": {
          "key": "{% $states.input.myKey %}"
        }
      },
  "Next": "NextState"
}
```

### Ein unterstützter AWS-Service
<a name="state-task-connector"></a>

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-id:servicename:APIname
```

**Anmerkung**  
Um eine synchrone Verbindung zu einer verbundenen Ressource herzustellen, fügen Sie ihn `.sync` an den *APIname* Eintrag im ARN an. Weitere Informationen finden Sie unter [Integrieren von -Services](integrate-services.md).

Beispiel:

```
{
 "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
<a name="task-state-fields"></a>

Zusätzlich zu den [allgemeinen Zustandsfeldern](statemachine-structure.md#amazon-states-language-common-fields) haben `Task`-Zustände die folgenden Felder.

** `Resource` (Erforderlich)**  
Ein URI, vor allem ein ARN, der bestimmte auszuführende Aufgaben identifiziert.

**`Arguments`( JSONata Nur optional)**  
Wird für die Weitergabe von Informationen zu den API-Aktionen von verbundenen Ressourcen verwendet. Werte können JSONata Ausdrücke enthalten. Weitere Informationen finden Sie unter [Transformieren von Daten mit JSONata In-Step-Funktionen](transforming-data.md).

**`Output`( JSONata Nur optional)**  
Wird verwendet, um die Ausgabe des Status zu spezifizieren und zu transformieren. Wenn angegeben, überschreibt der Wert die Standardeinstellung für die Statusausgabe.   
Das Ausgabefeld akzeptiert jeden JSON-Wert (Objekt, Array, Zeichenfolge, Zahl, boolescher Wert, Null). Jeder Zeichenkettenwert, einschließlich solcher innerhalb von Objekten oder Arrays, wird so ausgewertet, als JSONata ob er von \$1%%\$1 Zeichen umgeben wäre.  
 Output akzeptiert auch direkt einen JSONata Ausdruck, zum Beispiel: „Output“: „\$1% jsonata expression%\$1“   
Weitere Informationen finden Sie unter [Verarbeitung von Eingabe und Ausgabe](concepts-input-output-filtering.md).

**`Parameters`(Nur optional) JSONPath **  
Wird für die Weitergabe von Informationen zu den API-Aktionen von verbundenen Ressourcen verwendet. Die Parameter können eine Mischung aus statischem JSON und verwenden [JsonPath](https://datatracker.ietf.org/wg/jsonpath/about/). Weitere Informationen finden Sie unter [Übergeben von Parametern an eine Service-API in Step Functions](connect-parameters.md).

**`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](intrinsic-functions.md) in einen IAM-Rollen-ARN 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 unter[Beispiele für das Feld „Anmeldeinformationen“ des Aufgabenstatus](#task-state-example-credentials). Ein Beispiel für die Verwendung dieses Felds für den Zugriff auf eine kontoübergreifende AWS Ressource von Ihrem Zustandsmaschine aus finden Sie unter[Zugreifen auf kontenübergreifende AWS Ressourcen in Step Functions](tutorial-access-cross-acct-resources.md).  
Dieses Feld wird von den[Aufgabentypen](#task-types), die [Lambda-Funktionen](#state-task-lambda) verwenden, und von [einem unterstützten AWS Dienst unterstützt](integrate-services.md).

** `ResultPath`( JSONPath Nur 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](concepts-input-output-filtering.md).

** `ResultSelector`( JSONPath Nur 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](input-output-inputpath-params.md#input-output-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](concepts-error-handling.md#error-handling-examples).

** `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](concepts-error-handling.md#error-handling-fallback-states).

** `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](concepts-error-handling.md#statestimeout) Fehler auftritt und fehlschlägt. Der Timeout-Wert muss eine positive Ganzzahl ungleich Null sein. Der Standardwert ist `99999999`.  
Die Anzahl der Timeouts beginnt, wenn das Startereignis ausgeführt wird, z. B. wenn `TaskStarted``ActivityStarted`, oder wenn `LambdaFunctionStarted` Ereignisse in der Ausführungsereignishistorie protokolliert werden. Bei Aktivitäten beginnt die Zählung mit dem `GetActivityTask` Empfang eines Tokens und `ActivityStarted` 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.  
Das Zeitlimit für HTTP-Aufgaben beträgt maximal 60 Sekunden, auch wenn dieses Limit `TimeoutSeconds` überschritten wird. Siehe [Kontingente im Zusammenhang mit HTTP-Tasks](service-quotas.md#service-limits-http-task)

** `TimeoutSecondsPath`( JSONPath Nur 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.  
Ein `Task` Status kann nicht sowohl als auch `TimeoutSeconds` enthalten. `TimeoutSecondsPath` Das Zeitlimit für HTTP-Aufgaben beträgt maximal 60 Sekunden, auch wenn der `TimeoutSecondsPath` 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 dem `TimeoutSeconds` Feldwert liegt. Der Standardwert ist `99999999`. Wenn zwischen den Heartbeats der Aufgabe mehr Zeit als die angegebenen Sekunden vergeht, schlägt der Task-Status mit einem Fehler fehl. [States.Timeout](concepts-error-handling.md#statestimeout)  
Bei Aktivitäten beginnt die Zählung mit dem `GetActivityTask` Empfang eines Tokens und `ActivityStarted` wird im Verlauf der Ausführungsereignisse protokolliert.

** `HeartbeatSecondsPath`( JSONPath Nur 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.  
Ein `Task` Status kann nicht sowohl als auch `HeartbeatSeconds` 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
<a name="task-state-example"></a>

Die folgenden Beispiele zeigen, wie Sie die Definition des Aufgabenstatus auf der Grundlage Ihrer Anforderungen angeben können.
+ [Angabe von Timeouts und Heartbeat-Intervallen für den Task-Status](#task-state-example-timeouts)
  + [Beispiel für ein statisches Timeout und eine Heartbeat-Benachrichtigung](#task-state-example-static)
  + [Beispiel für ein dynamisches Task-Timeout und eine Heartbeat-Benachrichtigung](#task-state-example-dynamic)
+ [Das Feld „Anmeldeinformationen“ wird verwendet](#task-state-example-credentials)
  + [Festcodierte IAM-Rollen-ARN angeben](#example-credentials-specify-role-arn)
  + [ARN JSONPath als IAM-Rolle angeben](#example-credentials-specify-dynamic-jsonpath)
  + [Spezifizierung einer systemeigenen Funktion als IAM-Rollen-ARN](#example-credentials-specify-dynamic-intrinsic-function)

### Timeouts und Heartbeat-Intervalle für den Aufgabenstatus
<a name="task-state-example-timeouts"></a>

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
<a name="task-state-example-static"></a>

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:region:123456789012:activity:HelloWorld",
  "TimeoutSeconds": 300,
  "HeartbeatSeconds": 60,
  "Next": "NextState"
}
```

#### Beispiel für ein dynamisches Task-Timeout und eine Heartbeat-Benachrichtigung
<a name="task-state-example-dynamic"></a>

In diesem Beispiel wird nach Abschluss des AWS Glue Auftrags der nächste Status ausgeführt.

Wenn diese Aufgabe nicht innerhalb des vom AWS Glue Job dynamisch festgelegten Intervalls abgeschlossen werden kann, wird die Aufgabe als markiert`failed`. 

```
"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
<a name="task-state-example-credentials"></a>

#### Festcodierte IAM-Rollen-ARN angeben
<a name="example-credentials-specify-role-arn"></a>

Das folgende Beispiel spezifiziert eine Ziel-IAM-Rolle, die die Ausführungsrolle einer Zustandsmaschine annehmen muss, um auf eine kontoübergreifende Lambda-Funktion mit dem Namen zuzugreifen. `Echo` In diesem Beispiel wird der ARN der Zielrolle als hartcodierter 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
    }
  }
}
```

#### ARN JSONPath als IAM-Rolle angeben
<a name="example-credentials-specify-dynamic-jsonpath"></a>

Im folgenden Beispiel wird ein JSONPath Wert angegeben, der zur Laufzeit in einen IAM-Rollen-ARN aufgelöst wird.

```
{
  "StartAt": "Lambda",
  "States": {
    "Lambda": {
      "Type": "Task",
      "Resource": "arn:aws:states:::lambda:invoke",
      "Credentials": {
        "RoleArn.$": "$.roleArn"
      },
      ...
    }
  }
}
```

#### Spezifizierung einer systemeigenen Funktion als IAM-Rollen-ARN
<a name="example-credentials-specify-dynamic-intrinsic-function"></a>

Im folgenden Beispiel wird die [`States.Format`](intrinsic-functions.md#asl-intrsc-func-generic)systeminterne Funktion verwendet, die zur Laufzeit in einen IAM-Rollen-ARN aufgelöst wird.

```
{
  "StartAt": "Lambda",
  "States": {
    "Lambda": {
      "Type": "Task",
      "Resource": "arn:aws:states:::lambda:invoke",
      "Credentials": {
        "RoleArn.$": "States.Format('arn:aws:iam::{}:role/ROLENAME', $.accountId)"
      },
      ...
    }
  }
}
```