

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.

# Integration optimierter Dienste mit Step Functions
<a name="integrate-optimized"></a>

Ihr Workflow kann optimierte Dienste direkt über das `Resource` Feld eines `Task` Bundesstaates aufrufen. In den folgenden Themen werden die unterstützten APIs Parameter und die request/response Syntax in Amazon States Language für die Koordination von AWS Diensten erläutert. 

Je nach Workflowtyp und Verfügbarkeit rufen Ihre Workflows Dienste mithilfe eines von drei Service-Integrationsmustern auf:
+ [Antwort anfordern (Standard)](connect-to-resource.md#connect-default) — Warten Sie auf die HTTP-Antwort und wechseln Sie dann zum nächsten Status
+ [Job ausführen (`.sync`)](connect-to-resource.md#connect-sync) — warte, bis der Job abgeschlossen ist
+ [Warte auf Callback (`.waitForTaskToken`)](connect-to-resource.md#connect-wait-token) — unterbricht einen Workflow, bis ein Task-Token zurückgegeben wird

Standard-Workflows und Express-Workflows unterstützen dieselben **Integrationen**, aber nicht dieselben **Integrationsmuster**. 
+  **Standard-Workflows** unterstützen *Request Response-Integrationen*. Bestimmte Dienste unterstützen *Run a Job (.sync)* oder *Wait for Callback (. waitForTaskToken)* und in einigen Fällen beides. Einzelheiten finden Sie in der folgenden Tabelle mit optimierten Integrationen. 
+  **Express Workflows** unterstützen nur *Request Response-Integrationen*. 

 Informationen zur Entscheidung zwischen den beiden Typen finden Sie unter[Workflowtyp in Step Functions auswählen](choosing-workflow-type.md). 



**AWSSDK-Integrationen in Step Functions**


| Integrierter Service | Request Response (Antwort anfordern) | Einen Job ausführen - *.sync* | *Warte auf Rückruf -. waitForTaskWertmarke* | 
| --- | --- | --- | --- | 
| [Über zweihundert Dienste](supported-services-awssdk.md#supported-services-awssdk-list) | Standard und Express | Wird nicht unterstützt | Standard | 

**Optimierte Integrationen in Step Functions**


| Integrierter Service | Request Response (Antwort anfordern) | Einen Job ausführen - *.sync* | *Warte auf Rückruf -. waitForTaskWertmarke* | 
| --- | --- | --- | --- | 
| [Amazon API Gateway](connect-api-gateway.md) | Standard und Express | Wird nicht unterstützt | Standard | 
| [Amazon Athena](connect-athena.md) | Standard und Express | Standard | Wird nicht unterstützt | 
| [AWS Batch](connect-batch.md) | Standard und Express | Standard | Wird nicht unterstützt | 
| [Amazon Bedrock](connect-bedrock.md) | Standard und Express | Standard | Standard | 
| [AWS CodeBuild](connect-codebuild.md) | Standard und Express | Standard | Wird nicht unterstützt | 
| [Amazon DynamoDB](connect-ddb.md) | Standard und Express | Wird nicht unterstützt | Wird nicht unterstützt | 
| [Amazon ECS/Fargate](connect-ecs.md) | Standard und Express | Standard | Standard | 
| [Amazon EKS](connect-eks.md) | Standard und Express | Standard | Standard | 
| [Amazon EMR](connect-emr.md) | Standard und Express | Standard | Wird nicht unterstützt | 
| [Amazon EMR on EKS](connect-emr-eks.md) | Standard und Express | Standard | Wird nicht unterstützt | 
| [Amazon EMR Serverless](connect-emr-serverless.md) | Standard und Express | Standard | Wird nicht unterstützt | 
| [Amazon EventBridge](connect-eventbridge.md) | Standard und Express | Wird nicht unterstützt | Standard | 
| [AWS Glue](connect-glue.md) | Standard und Express | Standard | Wird nicht unterstützt | 
| [AWS Glue DataBrew](connect-databrew.md) | Standard und Express | Standard | Wird nicht unterstützt | 
| [AWS Lambda](connect-lambda.md) | Standard und Express | Wird nicht unterstützt | Standard | 
| [AWS Elemental MediaConvert](connect-mediaconvert.md) | Standard und Express | Standard | Wird nicht unterstützt | 
| [Amazon SageMaker AI](connect-sagemaker.md) | Standard und Express | Standard | Wird nicht unterstützt | 
| [Amazon SNS](connect-sns.md) | Standard und Express | Wird nicht unterstützt | Standard | 
| [Amazon SQS](connect-sqs.md) | Standard und Express | Wird nicht unterstützt | Standard | 
| [AWS Step Functions](connect-stepfunctions.md) | Standard und Express | Standard | Standard | 

# API-Gateway-REST APIs mit Step Functions erstellen
<a name="connect-api-gateway"></a>

Erfahren Sie, wie Sie Amazon API Gateway verwenden, um HTTP und REST APIs mit Step Functions zu erstellen, zu veröffentlichen, zu verwalten und zu überwachen. Für die Integration mit API Gateway definieren Sie in Step Functions einen `Task` Status, der direkt einen API-Gateway-HTTP- oder API-Gateway-REST-Endpunkt aufruft, ohne Code zu schreiben oder sich auf eine andere Infrastruktur zu verlassen. Eine `Task` Statusdefinition enthält alle erforderlichen Informationen für den API-Aufruf. Sie können auch verschiedene Autorisierungsmethoden auswählen.

Informationen zur Integration mit AWS Diensten in Step Functions finden Sie unter [Integrieren von -Services](integrate-services.md) und[Übergeben von Parametern an eine Service-API in Step Functions](connect-parameters.md).

**Hauptmerkmale der optimierten API-Gateway-Integration**  
`apigateway:invoke:`hat kein Äquivalent in der AWS SDK-Dienstintegration. Stattdessen ruft der Optimized API Gateway Gateway-Dienst Ihren API Gateway Gateway-Endpunkt direkt auf.

## Unterstützung von API-Gateway-Funktionen
<a name="connect-api-gateway-support"></a>

Die Step Functions API Gateway Gateway-Integration unterstützt einige, aber nicht alle API Gateway Gateway-Funktionen. Eine detailliertere Liste der unterstützten Funktionen finden Sie im Folgenden. 
+ Wird sowohl von den Step Functions API Gateway Gateway-REST-API- als auch von den API Gateway Gateway-HTTP-API-Integrationen unterstützt:
  + **Autorisierer**: IAM (mit [Signature Version 4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html)), No Auth, Lambda Authorizers (auf Anforderungsparametern und Token-basiert mit benutzerdefiniertem Header)
  + API-Typen**:** Regional
  + **API-Verwaltung**: API-Gateway-API-Domänennamen, API-Phase, Pfad, Abfrageparameter, Anfragetext
+ Unterstützt von der Step Functions API Gateway HTTP-API-Integration. Die STEP Functions API Gateway REST-API-Integration, die die Option für Edge-Optimized bietet, wird nicht APIs unterstützt.
+ Wird von der Step Functions API Gateway Gateway-Integration nicht unterstützt:
  +  **Autorisierer**: Amazon Cognito, Native Open ID Connect/ OAuth 2.0, Autorisierungsheader für tokenbasierte Lambda-Autorisierer 
  +  API-Typen**:** Privat 
  +  **API-Verwaltung**: Benutzerdefinierte Domainnamen 

Weitere Informationen über API Gateway und dessen HTTP und REST APIs finden Sie im Folgenden.
+  Die [Amazon API Gateway Gateway-Konzeptseite](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-basic-concept.html). 
+  [Auswahl zwischen HTTP APIs und REST APIs](https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-vs-rest.html) im API Gateway Gateway-Entwicklerhandbuch. 

## Anforderungsformat
<a name="connect-api-gateway-requests"></a>

Wenn Sie Ihre `Task` Statusdefinition erstellen, validiert Step Functions die Parameter, erstellt die für den Aufruf erforderliche URL und ruft dann die API auf. Die Antwort umfasst den HTTP-Statuscode, die Header und den Antworttext. Das Anforderungsformat hat sowohl erforderliche als auch optionale Parameter.

### Erforderliche Anforderungsparameter
<a name="connect-api-gateway-requests-required"></a>
+ `ApiEndpoint`
  + Typ: `String`
  + Der Hostname einer API-Gateway-URL. Das Format ist `<API ID>.execute-api.region.amazonaws.com`.

    Die API-ID darf nur eine Kombination der folgenden alphanumerischen Zeichen enthalten: `0123456789abcdefghijklmnopqrstuvwxyz`
+ `Method`
  + Typ: `Enum`
  + Die HTTP-Methode, die eine der folgenden sein muss: 
    + `GET`
    + `POST`
    + `PUT`
    + `DELETE`
    + `PATCH`
    + `HEAD`
    + `OPTIONS`

### Optionale Anforderungsparameter
<a name="connect-api-gateway-requests-optional"></a>
+ `Headers`
  + Typ: `JSON`
  + HTTP-Header ermöglichen eine Liste von Werten, die demselben Schlüssel zugeordnet sind.
+ `Stage`
  + Typ: `String`
  + Der Name der Phase, in der die API in API Gateway bereitgestellt wird. Es ist optional für jede HTTP-API, die den `$default` Stage verwendet. 
+ `Path`
  + Typ: `String`
  + Pfadparameter, die nach dem API-Endpunkt angehängt werden. 
+ `QueryParameters`
  + Typ: `JSON`
  + Abfragezeichenfolgen erlauben nur eine Liste von Werten, die demselben Schlüssel zugeordnet sind. 
+ `RequestBody`
  + Typ: `JSON` oder `String`.
  + Der Hauptteil der HTTP-Anfrage. Sein Typ kann entweder ein `JSON` Objekt oder sein`String`. `RequestBody`wird nur für `PATCH``POST`, und `PUT` HTTP-Methoden unterstützt.
+ `AllowNullValues`
  + Typ: `BOOLEAN` — Standardwert: `false`
  + Mit der Standardeinstellung werden **Nullwerte** im Status der Anforderungseingabe **nicht** an Ihre API gesendet. Im folgenden Beispiel wird das `category` Feld **nicht** in die Anfrage aufgenommen, es sei denn, es `AllowNullValues` ist `true` in Ihrer State-Machine-Definition auf festgelegt.

    ```
    {
        "NewPet": {
            "type": "turtle",
            "price": 123,
            "category": null
        }
    }
    ```
**Anmerkung**  
Standardmäßig werden Felder mit **Nullwerten** im Anforderungseingabestatus **nicht** an Ihre API gesendet. Sie können das Senden von Nullwerten an Ihre API erzwingen, indem Sie `true` in Ihrer State-Machine-Definition die Einstellung `AllowNullValues` auf setzen.
+ `AuthType`
  + Typ: `JSON`
  + Die Authentifizierungsmethode. Die Standardmethode ist`NO_AUTH`. Die zulässigen Werte lauten: 
    + `NO_AUTH`
    + `IAM_ROLE`
    + `RESOURCE_POLICY`

    Weitere Informationen finden Sie unter **Authentifizierung und Autorisierung**.

**Anmerkung**  
Aus Sicherheitsgründen sind die folgenden HTTP-Header-Schlüssel derzeit nicht zulässig:  
Alles, dem ein`X-Forwarded`, `X-Amz` oder `X-Amzn` vorangestellt ist.
`Authorization`
`Connection`
`Content-md5`
`Expect`
`Host`
`Max-Forwards`
`Proxy-Authenticate`
`Server`
`TE`
`Transfer-Encoding`
`Trailer`
`Upgrade`
`Via`
`Www-Authenticate`

Das folgende Codebeispiel zeigt, wie API Gateway mithilfe von Step Functions aufgerufen wird.

```
{
    "Type": "Task", 
    "Resource":"arn:aws:states:::apigateway:invoke", 
    "Arguments": {
        "ApiEndpoint": "example.execute-api.us-east-1.amazonaws.com",
        "Method": "GET", 
        "Headers": { 
            "key": ["value1", "value2"] 
        },
        "Stage": "prod",
        "Path": "bills",
        "QueryParameters": {
            "billId": ["123456"]
        },
        "RequestBody": {},
        "AuthType": "NO_AUTH"
    } 
}
```

## Authentifizierung und Autorisierung
<a name="connect-api-gateway-auth"></a>

Sie können die folgenden Authentifizierungsmethoden verwenden:
+ **Keine Autorisierung**: Rufen Sie die API direkt ohne Autorisierungsmethode auf.
+ **IAM-Rolle**: Bei dieser Methode übernimmt Step Functions die Rolle der Zustandsmaschine, signiert die Anfrage mit [Signature Version 4](https://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html) (Sigv4) und ruft dann die API auf.
+ **Ressourcenrichtlinie**: Step Functions authentifiziert die Anfrage und ruft dann die API auf. Sie müssen der API eine Ressourcenrichtlinie anhängen, die Folgendes spezifiziert:

  1. Die Zustandsmaschine, die API Gateway aufruft.
**Wichtig**  
Sie müssen Ihren Zustandsmaschine angeben, um den Zugriff darauf zu beschränken. Wenn Sie dies nicht tun, wird jeder Zustandsmaschine, die ihre API-Gateway-Anfrage mit der **Ressourcenrichtlinien-Authentifizierung für** Ihre API authentifiziert, Zugriff gewährt.

  1. That Step Functions ist der Dienst, der API Gateway aufruft:`"Service": "states.amazonaws.com"`.

  1. Die Ressource, auf die Sie zugreifen möchten, einschließlich:
     + Das Tool *region*.
     + Die *account-id* in der angegebenen Region.
     + Das Tool *api-id*.
     + Das Tool *stage-name*.
     + Die *HTTP-VERB* (Methode).
     + Das Tool *resource-path-specifier*.

  Ein Beispiel für eine Ressourcenrichtlinie finden Sie unter [IAM-Richtlinien für Step Functions und API Gateway](#api-gateway-iam). 

  Weitere Informationen zum Ressourcenformat finden Sie unter [Ressourcenformat der Berechtigungen für die Ausführung von APIs in API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-control-access-using-iam-policies-to-invoke-api.html#api-gateway-iam-policy-resource-format-for-executing-api) im API Gateway Developer Guide.
**Anmerkung**  
Ressourcenrichtlinien werden nur für die REST-API unterstützt.

## Muster der Serviceintegration
<a name="connect-api-gateway-patterns"></a>

Die API Gateway Gateway-Integration unterstützt zwei Dienstintegrationsmuster: 
+ [Request Response (Antwort anfordern)](connect-to-resource.md#connect-default), was das Standard-Integrationsmuster ist. Dadurch kann Step Functions unmittelbar nach Erhalt einer HTTP-Antwort mit dem nächsten Schritt fortfahren.
+ [Warten Sie auf einen Rückruf mit Task Token](connect-to-resource.md#connect-wait-token)(`.waitForTaskToken`), wodurch gewartet wird, bis ein Task-Token mit einer Nutzlast zurückgegeben wird. Um das `.waitForTaskToken` Muster zu verwenden, fügen Sie es an. waitForTaskFügen Sie das Ende des Felds **Ressource** Ihrer Aufgabendefinition ein, wie im folgenden Beispiel gezeigt: 

  ```
  {
      "Type": "Task", 
      "Resource":"arn:aws:states:::apigateway:invoke.waitForTaskToken", 
      "Arguments": {
          "ApiEndpoint": "example.execute-api.us-east-1.amazonaws.com",
          "Method": "POST", 
          "Headers": { 
              "TaskToken": "{% $states.context.Task.Token %}"
          },
          "Stage": "prod",
          "Path": "bills/add",
          "QueryParameters": {},
          "RequestBody": {
              "billId": "my-new-bill"
          },
          "AuthType": "IAM_ROLE"
      } 
  }
  ```

## Ausgabeformat
<a name="connect-api-gateway-output"></a>

Die folgenden Ausgabeparameter sind verfügbar:


| Name | Typ | Description | 
| --- | --- | --- | 
| ResponseBody | JSON oder String | Der Antworttext des API-Aufrufs. | 
| Headers | JSON | Die Antwort-Header. | 
| StatusCode | Integer | Den HTTP-Statuscode der Antwort. | 
| StatusText | String | Der Statustext der Antwort. | 

Ein Beispiel für eine Antwort:

```
{
    "ResponseBody": {
        "myBills": []
    },
    "Headers": { 
        "key": ["value1", "value2"]
    }, 
    "StatusCode": 200,
    "StatusText": "OK" 
}
```

## Fehlerbehandlung
<a name="connect-api-gateway-errors"></a>

Wenn ein Fehler auftritt, `cause` wird ein `error` und wie folgt zurückgegeben: 
+ Wenn der HTTP-Statuscode verfügbar ist, wird der Fehler im folgenden Format zurückgegeben`ApiGateway.<HTTP Status Code>`.
+ Wenn der HTTP-Statuscode nicht verfügbar ist, wird der Fehler im Format zurückgegeben`ApiGateway.<Exception>`.

In beiden Fällen `cause` wird das als Zeichenfolge zurückgegeben.

Das folgende Beispiel zeigt eine Antwort, bei der ein Fehler aufgetreten ist:

```
{
    "error": "ApiGateway.403", 
    "cause": "{\"message\":\"Missing Authentication Token\"}"
}
```

**Anmerkung**  
Der Statuscode `2XX` bedeutet Erfolg, und es wird kein Fehler zurückgegeben. Alle anderen Statuscodes oder ausgelösten Ausnahmen führen zu einem Fehler.

## IAM-Richtlinien für Aufrufe an Amazon API Gateway
<a name="api-gateway-iam"></a>

Die folgenden Beispielvorlagen zeigen, wie IAM-Richtlinien auf der Grundlage der Ressourcen in Ihrer State-Machine-Definition AWS Step Functions generiert werden. Weitere Informationen erhalten Sie unter [So generiert Step Functions IAM-Richtlinien für integrierte Dienste](service-integration-iam-templates.md) und [Entdecken Sie Serviceintegrationsmuster in Step Functions](connect-to-resource.md).

*Ressourcen:*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "execute-api:Invoke"
            ],
            "Resource": [
                "arn:aws:execute-api:us-east-1:123456789012:ENDPOINT/STAGE/GET/pets",
                "arn:aws:execute-api:us-east-1:123456789012:ENDPOINT/STAGE/POST/pets"
            ],
            "Effect": "Allow"
        }
    ]
}
```

Das folgende Codebeispiel zeigt eine Ressourcenrichtlinie für den Aufruf von API Gateway.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "states.amazonaws.com"
            },
            "Action": "execute-api:Invoke",
            "Resource": "arn:aws:execute-api:us-east-1:123456789012:myApi-id/stage-name/HTTP-VERB/resource-path-specifier",
            "Condition": {
                "StringEquals": {
                    "aws:SourceArn": [
                        "<SourceStateMachineArn>"
                    ]
                }
            }
        }
    ]
}
```

# Führen Sie Athena-Abfragen mit Step Functions aus
<a name="connect-athena"></a>

Sie können Amazon Athena AWS Step Functions integrieren, um die Abfrageausführung zu starten und zu beenden und Abfrageergebnisse mit Step Functions zu erhalten. Mithilfe von Step Functions können Sie Ad-hoc-Datenabfragen oder geplante Datenabfragen ausführen und Ergebnisse abrufen, die auf Ihre S3-Datenseen abzielen. Athena ist Serverless, weshalb auch keine Infrastruktur eingerichtet oder verwaltet werden muss – und Sie zahlen nur für tatsächlich ausgeführte Abfragen. Diese Seite listet die unterstützten Athena auf APIs und bietet einen `Task` Beispielstatus zum Starten einer Athena-Abfrage.

Informationen zur Integration mit AWS Diensten in Step Functions finden Sie unter [Integrieren von -Services](integrate-services.md) und[Übergeben von Parametern an eine Service-API in Step Functions](connect-parameters.md).

**Hauptmerkmale der optimierten Athena-Integration**  
Das [Ausführen einer Aufgabe (.sync)](connect-to-resource.md#connect-sync) Integrationsmuster wird unterstützt.
Es gibt keine spezifischen Optimierungen für das [Request Response (Antwort anfordern)](connect-to-resource.md#connect-default) Integrationsmuster.
Das [Warten Sie auf einen Rückruf mit Task Token](connect-to-resource.md#connect-wait-token) Integrationsmuster wird nicht unterstützt.

Für die Integration AWS Step Functions mit Amazon Athena verwenden Sie die bereitgestellte Athena-Serviceintegration. APIs

Die Serviceintegration APIs entspricht der der entsprechenden Athena APIs. Nicht alle APIs unterstützen alle Integrationsmuster, wie in der folgenden Tabelle dargestellt.


| API | Request Response (Antwort anfordern) | Ausführen einer Aufgabe (.sync) | 
| --- | --- | --- | 
| StartQueryExecution | Unterstützt | Unterstützt | 
| StopQueryExecution | Unterstützt | Wird nicht unterstützt | 
| GetQueryExecution | Unterstützt | Wird nicht unterstützt | 
| GetQueryResults | Unterstützt | Wird nicht unterstützt | 

Das Folgende beinhaltet einen Task-Status, der eine Athena-Abfrage startet.

```
"Start an Athena query": {
  "Type": "Task",
  "Resource": "arn:aws:states:::athena:startQueryExecution.sync",
  "Arguments": {
    "QueryString": "SELECT * FROM \"myDatabase\".\"myTable\" limit 1",
    "WorkGroup": "primary",
    "ResultConfiguration": {
       "OutputLocation": "s3://amzn-s3-demo-bucket"
    }
  },
  "Next": "Get results of the query"
}
```

## Optimiertes Amazon Athena APIs:
<a name="connect-athena-api"></a>
+ [https://docs.aws.amazon.com/athena/latest/APIReference/API_StartQueryExecution.html](https://docs.aws.amazon.com/athena/latest/APIReference/API_StartQueryExecution.html)
+ [https://docs.aws.amazon.com/athena/latest/APIReference/API_StopQueryExecution.html](https://docs.aws.amazon.com/athena/latest/APIReference/API_StopQueryExecution.html)
+ [https://docs.aws.amazon.com/athena/latest/APIReference/API_GetQueryExecution.html](https://docs.aws.amazon.com/athena/latest/APIReference/API_GetQueryExecution.html)
+ [https://docs.aws.amazon.com/athena/latest/APIReference/API_GetQueryResults.html](https://docs.aws.amazon.com/athena/latest/APIReference/API_GetQueryResults.html)

**Quote für Eingabe- oder Ergebnisdaten**  
Beim Senden oder Empfangen von Daten zwischen Diensten beträgt die maximale Eingabe oder das maximale Ergebnis für eine Aufgabe 256 KiB an Daten als UTF-8-kodierte Zeichenfolge. Siehe [Kontingente im Zusammenhang mit der Ausführung von Zustandsmaschinen](service-quotas.md#service-limits-state-machine-executions).

## IAM-Richtlinien für das Aufrufen von Amazon Athena
<a name="athena-iam"></a>

Die folgenden Beispielvorlagen zeigen, wie IAM-Richtlinien auf der Grundlage der Ressourcen in Ihrer State-Machine-Definition AWS Step Functions generiert werden. Weitere Informationen erhalten Sie unter [So generiert Step Functions IAM-Richtlinien für integrierte Dienste](service-integration-iam-templates.md) und [Entdecken Sie Serviceintegrationsmuster in Step Functions](connect-to-resource.md).

**Anmerkung**  
Zusätzlich zu den IAM-Richtlinien müssen Sie möglicherweise verwenden, AWS Lake Formation um Zugriff auf Daten in Diensten wie Amazon S3 und dem AWS Glue Data Catalog zu gewähren. Weitere Informationen finden Sie unter [Verwenden von Athena zum Abfragen von Daten, die bei AWS Lake Formation registriert sind](https://docs.aws.amazon.com/athena/latest/ug/security-athena-lake-formation.html). 

### `StartQueryExecution`
<a name="athena-iam-startqueryexecution"></a>

*Statische Ressourcen*

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
    {
        "Effect": "Allow",
        "Action": [
            "athena:startQueryExecution",
            "athena:stopQueryExecution",
            "athena:getQueryExecution",
            "athena:getDataCatalog",
            "athena:GetWorkGroup",
            "athena:BatchGetQueryExecution",
            "athena:GetQueryResults",
            "athena:ListQueryExecutions"
        ],
        "Resource": [
            "arn:aws:athena:us-east-1:123456789012:workgroup/myWorkGroup",
            "arn:aws:athena:us-east-1:123456789012:datacatalog/*"
        ]
    },
        {
        "Effect": "Allow",
        "Action": [
            "s3:GetBucketLocation",
            "s3:GetObject",
            "s3:ListBucket",
            "s3:ListBucketMultipartUploads",
            "s3:ListMultipartUploadParts",
            "s3:AbortMultipartUpload",
            "s3:CreateBucket",
            "s3:PutObject"
        ],
        "Resource": [
            "arn:aws:s3:::*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "glue:CreateDatabase",
            "glue:GetDatabase",
            "glue:GetDatabases",
            "glue:UpdateDatabase",
            "glue:DeleteDatabase",
            "glue:CreateTable",
            "glue:UpdateTable",
            "glue:GetTable",
            "glue:GetTables",
            "glue:DeleteTable",
            "glue:BatchDeleteTable",
            "glue:BatchCreatePartition",
            "glue:CreatePartition",
            "glue:UpdatePartition",
            "glue:GetPartition",
            "glue:GetPartitions",
            "glue:BatchGetPartition",
            "glue:DeletePartition",
            "glue:BatchDeletePartition"
        ],
        "Resource": [
            "arn:aws:glue:us-east-1:123456789012:catalog",
            "arn:aws:glue:us-east-1:123456789012:database/*",
            "arn:aws:glue:us-east-1:123456789012:table/*",
            "arn:aws:glue:us-east-1:123456789012:userDefinedFunction/*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "lakeformation:GetDataAccess"
        ],
        "Resource": [
            "*"
        ]
    }
]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
    {
        "Effect": "Allow",
        "Action": [
            "athena:startQueryExecution",
            "athena:getDataCatalog"
        ],
        "Resource": [
            "arn:aws:athena:us-east-1:123456789012:workgroup/myWorkGroup",
            "arn:aws:athena:us-east-1:123456789012:datacatalog/*"
        ]
    },
        {
        "Effect": "Allow",
        "Action": [
            "s3:GetBucketLocation",
            "s3:GetObject",
            "s3:ListBucket",
            "s3:ListBucketMultipartUploads",
            "s3:ListMultipartUploadParts",
            "s3:AbortMultipartUpload",
            "s3:CreateBucket",
            "s3:PutObject"
        ],
        "Resource": [
            "arn:aws:s3:::*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "glue:CreateDatabase",
            "glue:GetDatabase",
            "glue:GetDatabases",
            "glue:UpdateDatabase",
            "glue:DeleteDatabase",
            "glue:CreateTable",
            "glue:UpdateTable",
            "glue:GetTable",
            "glue:GetTables",
            "glue:DeleteTable",
            "glue:BatchDeleteTable",
            "glue:BatchCreatePartition",
            "glue:CreatePartition",
            "glue:UpdatePartition",
            "glue:GetPartition",
            "glue:GetPartitions",
            "glue:BatchGetPartition",
            "glue:DeletePartition",
            "glue:BatchDeletePartition"
        ],
        "Resource": [
            "arn:aws:glue:us-east-1:123456789012:catalog",
            "arn:aws:glue:us-east-1:123456789012:database/*",
            "arn:aws:glue:us-east-1:123456789012:table/*",
            "arn:aws:glue:us-east-1:123456789012:userDefinedFunction/*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "lakeformation:GetDataAccess"
        ],
        "Resource": [
            "*"
        ]
    }
]
}
```

------

*Dynamische Ressourcen*

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
    {
        "Effect": "Allow",
        "Action": [
            "athena:startQueryExecution",
            "athena:stopQueryExecution",
            "athena:getQueryExecution",
            "athena:getDataCatalog",
            "athena:GetWorkGroup",
            "athena:BatchGetQueryExecution",
            "athena:GetQueryResults",
            "athena:ListQueryExecutions"
        ],
        "Resource": [
            "arn:aws:athena:us-east-1:123456789012:workgroup/*",
            "arn:aws:athena:us-east-1:123456789012:datacatalog/*"
        ]
    },
        {
        "Effect": "Allow",
        "Action": [
            "s3:GetBucketLocation",
            "s3:GetObject",
            "s3:ListBucket",
            "s3:ListBucketMultipartUploads",
            "s3:ListMultipartUploadParts",
            "s3:AbortMultipartUpload",
            "s3:CreateBucket",
            "s3:PutObject"
        ],
        "Resource": [
            "arn:aws:s3:::*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "glue:CreateDatabase",
            "glue:GetDatabase",
            "glue:GetDatabases",
            "glue:UpdateDatabase",
            "glue:DeleteDatabase",
            "glue:CreateTable",
            "glue:UpdateTable",
            "glue:GetTable",
            "glue:GetTables",
            "glue:DeleteTable",
            "glue:BatchDeleteTable",
            "glue:BatchCreatePartition",
            "glue:CreatePartition",
            "glue:UpdatePartition",
            "glue:GetPartition",
            "glue:GetPartitions",
            "glue:BatchGetPartition",
            "glue:DeletePartition",
            "glue:BatchDeletePartition"
        ],
        "Resource": [
            "arn:aws:glue:us-east-1:123456789012:catalog",
            "arn:aws:glue:us-east-1:123456789012:database/*",
            "arn:aws:glue:us-east-1:123456789012:table/*",
            "arn:aws:glue:us-east-1:123456789012:userDefinedFunction/*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "lakeformation:GetDataAccess"
        ],
        "Resource": [
            "*"
        ]
    }
]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
    {
        "Effect": "Allow",
        "Action": [
            "athena:startQueryExecution",
            "athena:getDataCatalog"
        ],
        "Resource": [
            "arn:aws:athena:us-east-1:123456789012:workgroup/*",
            "arn:aws:athena:us-east-1:123456789012:datacatalog/*"
        ]
    },
        {
        "Effect": "Allow",
        "Action": [
            "s3:GetBucketLocation",
            "s3:GetObject",
            "s3:ListBucket",
            "s3:ListBucketMultipartUploads",
            "s3:ListMultipartUploadParts",
            "s3:AbortMultipartUpload",
            "s3:CreateBucket",
            "s3:PutObject"
        ],
        "Resource": [
            "arn:aws:s3:::*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "glue:CreateDatabase",
            "glue:GetDatabase",
            "glue:GetDatabases",
            "glue:UpdateDatabase",
            "glue:DeleteDatabase",
            "glue:CreateTable",
            "glue:UpdateTable",
            "glue:GetTable",
            "glue:GetTables",
            "glue:DeleteTable",
            "glue:BatchDeleteTable",
            "glue:BatchCreatePartition",
            "glue:CreatePartition",
            "glue:UpdatePartition",
            "glue:GetPartition",
            "glue:GetPartitions",
            "glue:BatchGetPartition",
            "glue:DeletePartition",
            "glue:BatchDeletePartition"
        ],
        "Resource": [
            "arn:aws:glue:us-east-1:123456789012:catalog",
            "arn:aws:glue:us-east-1:123456789012:database/*",
            "arn:aws:glue:us-east-1:123456789012:table/*",
            "arn:aws:glue:us-east-1:123456789012:userDefinedFunction/*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "lakeformation:GetDataAccess"
        ],
        "Resource": [
            "*"
        ]
    }
]
}
```

------

### `StopQueryExecution`
<a name="athena-iam-stopqueryexecution"></a>

*Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
    {
        "Effect": "Allow",
        "Action": [
            "athena:stopQueryExecution"
        ],
        "Resource": [
            "arn:aws:athena:us-east-1:123456789012:workgroup/*"
        ]
    }
    ]
}
```

### `GetQueryExecution`
<a name="athena-iam-getqueryexecution"></a>

*Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
    {
        "Effect": "Allow",
        "Action": [
            "athena:getQueryExecution"
        ],
        "Resource": [
            "arn:aws:athena:us-east-1:123456789012:workgroup/*"
        ]
    }
    ]
}
```

### `GetQueryResults`
<a name="athena-iam-getqueryresults"></a>

*Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement":[
    {
        "Effect": "Allow",
        "Action": [
            "athena:getQueryResults"
        ],
        "Resource": [
            "arn:aws:athena:us-east-1:123456789012:workgroup/*"
        ]
    },
    {
        "Effect": "Allow",
        "Action": [
            "s3:GetObject"
        ],
        "Resource": [
            "arn:aws:s3:::*"
        ]
    }
    ]
}
```

# AWS BatchWorkloads mit Step Functions ausführen
<a name="connect-batch"></a>

Sie können Step Functions integrierenAWS Batch, um Batch-Computing-Workloads in der AWS Cloud auszuführen. Diese Seite listet die unterstützten Versionen auf AWS Batch APIs und bietet einen `Task` Beispielstatus für die Ausführung einer Batch-Verarbeitungsaufgabe.

Informationen zur Integration mit AWS Diensten in Step Functions finden Sie unter [Integrieren von -Services](integrate-services.md) und[Übergeben von Parametern an eine Service-API in Step Functions](connect-parameters.md).

**Hauptmerkmale der optimierten AWS Batch Integration**  
Das [Ausführen einer Aufgabe (.sync)](connect-to-resource.md#connect-sync) Integrationsmuster ist verfügbar.
Beachten Sie, dass es keine spezifischen Optimierungen für die [Request Response (Antwort anfordern)](connect-to-resource.md#connect-default) [Warten Sie auf einen Rückruf mit Task Token](connect-to-resource.md#connect-wait-token) Integrationsmuster gibt.

Im Folgenden sehen Sie ein Beispiel für einen `Task` Status, in dem ein AWS Batch Auftrag übermittelt und auf dessen Abschluss gewartet wird. Viele der angegebenen Argumente sind optional.

```
"Submit Batch Job": {
    "Type": "Task",
    "Resource": "arn:aws:states:::batch:submitJob.sync",
    "Arguments": {
        "JobName": "BATCH_NAME",
        "JobQueue": "BATCH_QUEUE_ARN",
        "JobDefinition": "BATCH_JOB_DEFINITION_ARN",
        "ArrayProperties": {
        "Size": 10
        },
        "ContainerOverrides": {
        "ResourceRequirements": [
            {
            "Type": "VCPU",
            "Value": "4"
            }
        ]
        },
        "DependsOn": [
        {
            "JobId": "myJobId",
            "Type": "SEQUENTIAL"
        }
        ],
        "PropagateTags": true,
        "Arguments": {
        "Key1": "value1",
        "Key2": 100
        },
        "RetryStrategy": {
        "Attempts": 1
        },
        "Tags": {
        "Tag": "TAG"
        },
        "Timeout": {
        "AttemptDurationSeconds": 10
        }
    }
}
```

## Optimiert AWS BatchAPIs:
<a name="connect-batch-api"></a>
+ [https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitJob.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_SubmitJob.html)

**Die Parameter in Step Functions werden ausgedrückt in PascalCase**  
Auch wenn sich die native Service-API in CamelCase befindet, z. B. die API-Aktion`startSyncExecution`, geben Sie Parameter in an PascalCase, z. B.:. `StateMachineArn`

## IAM-Richtlinien für Anrufe AWS Batch
<a name="batch-iam"></a>

Die folgenden Beispielvorlagen zeigen, wie IAM-Richtlinien auf der Grundlage der Ressourcen in Ihrer State-Machine-Definition AWS Step Functions generiert werden. Weitere Informationen erhalten Sie unter [So generiert Step Functions IAM-Richtlinien für integrierte Dienste](service-integration-iam-templates.md) und [Entdecken Sie Serviceintegrationsmuster in Step Functions](connect-to-resource.md).

Da Job-IDs für `SubmitJob` und generiert `TerminateJob` werden und daher nur zur Laufzeit bekannt sind, können Sie keine Richtlinie erstellen, die den Zugriff auf der Grundlage einer bestimmten Ressource einschränkt. 

**Tipp für einen differenzierten Zugriff**  
Um einen differenzierten Zugriff auf `SubmitJob` und hinzuzufügen, sollten Sie in Erwägung ziehen`TerminateJob`, Tags für Jobs zu verwenden und eine Richtlinie zu erstellen, die den Zugriff auf Grundlage Ihrer Stichwörter einschränkt. Darüber hinaus können die Auftragswarteschlange, die Definition und die verbrauchbaren Ressourcen auf die `SubmitJob` Verwendung bekannter Ressourcen beschränkt werden.

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "batch:SubmitJob",
                "batch:DescribeJobs",
                "batch:TerminateJob"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
               "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForBatchJobsRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "batch:SubmitJob"
            ],
            "Resource": "*"
        }
    ]
}
```

------

# Rufen Sie Amazon Bedrock-Modelle mit Step Functions auf und passen Sie sie an
<a name="connect-bedrock"></a>

Sie können Step Functions in Amazon Bedrock integrieren, um ein bestimmtes Amazon Bedrock-Modell aufzurufen und einen Feinabstimmungsauftrag zur Anpassung eines Modells zu erstellen. Diese Seite listet das optimierte Amazon Bedrock auf APIs und bietet einen `Task` Beispielstatus zum Extrahieren des Ergebnisses eines Modellaufrufs.

Informationen zur Integration mit AWS Diensten in Step Functions finden Sie unter [Integrieren von -Services](integrate-services.md) und[Übergeben von Parametern an eine Service-API in Step Functions](connect-parameters.md).

**Tipp**  
Einen Beispiel-Workflow zur Integration mit Amazon Bedrock finden Sie unter[Führen Sie KI-Prompt-Chaining mit Amazon Bedrock durch](sample-bedrock-prompt-chaining.md).

## Amazon BedrockServiceintegration APIs
<a name="connect-bedrock-custom-apis"></a>

Für die Integration AWS Step Functions mit Amazon Bedrock können Sie Folgendes verwenden APIs. Diese APIs ähneln den entsprechenden Amazon Bedrock APIs, enthalten jedoch *InvokeModel*zusätzliche Anforderungsfelder.

**Amazon Bedrock API - [CreateModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)**  
Erstellt einen Feinabstimmungsauftrag zur Anpassung eines Basismodells. Sie können die Step Functions Functions-Integrations-API mit den **CreateModelCustomizationJob**Integrationsmustern für *Request Response* oder mit den Integrationsmustern **CreateModelCustomizationJob.sync** für *Run a Job (.sync)* aufrufen. Es gibt keine Unterschiede in den Feldern für die API-Aufrufe.

**Amazon Bedrock API - [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)**  
Ruft das angegebene Amazon Bedrock Modell auf, um anhand der Eingabe, die Sie im Hauptteil der Anfrage angeben, eine Inferenz auszuführen. Sie verwenden `InvokeModel` es, um Inferenzen für Textmodelle, Bildmodelle und Einbettungsmodelle auszuführen.

Der Anfragetext der Amazon Bedrock Service-Integrations-API für *InvokeModel*umfasst die folgenden zusätzlichen Parameter.
+ `Body`— Spezifiziert Eingabedaten in dem Format, das im Inhaltstyp-Anforderungsheader angegeben ist. `Body`enthält spezifische Parameter für das Zielmodell.

  Wenn Sie die `InvokeModel` API verwenden, müssen Sie den `Body` Parameter angeben. Step Functionsvalidiert die von Ihnen eingegebene Eingabe nicht`Body`.

  Wenn Sie die `Body` Verwendung der Amazon Bedrock optimierten Integration angeben, können Sie eine Nutzlast von bis zu 256 KiB angeben. Wenn Ihre Nutzlast 256 KiB überschreitet, empfehlen wir Ihnen die Verwendung`Input`.
+ `Input`— Gibt die Quelle an, aus der die Eingabedaten abgerufen werden sollen. Dieses optionale Feld ist spezifisch für die Amazon Bedrock optimierte Integration mitStep Functions. In diesem Feld können Sie eine angeben`S3Uri`.

  Sie können entweder `Body` in den Parametern oder`Input`, aber nicht beide angeben.

  Wenn Sie `Input` ohne Angabe angeben`ContentType`, wird der Inhaltstyp der Eingabedatenquelle zum Wert für`ContentType`.
+ `Output`— Gibt das Ziel an, in das die API-Antwort geschrieben wird. Dieses optionale Feld ist spezifisch für die Amazon Bedrock optimierte Integration mitStep Functions. In diesem Feld können Sie eine angeben`S3Uri`.

  Wenn Sie dieses Feld angeben, wird der API-Antworttext durch einen Verweis auf den Amazon S3 Speicherort der ursprünglichen Ausgabe ersetzt.

Das folgende Beispiel zeigt die Syntax für die InvokeModel API zur Amazon Bedrock Integration.

```
{
    "ModelId": String,  // required
    "Accept": String,  // default: application/json
    "ContentType": String,  // default: application/json
    "Input": {  // not from Bedrock API
        "S3Uri": String
    },  
    "Output": {  // not from Bedrock API
        "S3Uri": String
    } 
}
```

## Definition des Aufgabenstatus für die Amazon Bedrock Integration
<a name="connect-bedrock-task-definition"></a>

Die folgende Aufgabenstatusdefinition zeigt, wie Sie sie Amazon Bedrock in Ihre Zustandsmaschinen integrieren können. Dieses Beispiel zeigt einen Task-Status, der das vollständige Ergebnis eines durch den Pfad, `result_one` angegebenen Modellaufrufs extrahiert. Dies basiert auf [Inferenzparametern für Fundamentmodelle](https://docs.aws.amazon.com/bedrock/latest/userguide/model-parameters.html). In diesem Beispiel wird das Large Language Model (LLM) von Cohere Command verwendet.

```
{
  "Type": "Task",
  "Resource": "arn:aws:states:::bedrock:invokeModel",
  "Arguments": {
    "ModelId": "cohere.command-text-v14",
    "Body": {
      "prompt": "{% states.input.prompt_one %}",
      "max_tokens": 20
    },
    "ContentType": "application/json",
    "Accept": "*/*"
  },
  "End": true
}
```

## IAM policies for calling Amazon Bedrock
<a name="bedrock-iam"></a>

Wenn Sie eine Zustandsmaschine mithilfe der Konsole erstellen, Step Functions wird automatisch eine Ausführungsrolle für Ihre Zustandsmaschine mit den geringsten erforderlichen Rechten erstellt. Diese automatisch generierten IAM Rollen gelten für den, AWS-Region in dem Sie den Zustandsmaschine erstellen.

Wir empfehlen, bei der Erstellung von IAM Richtlinien keine Platzhalter in die Richtlinien aufzunehmen. Aus Sicherheitsgründen sollten Sie Ihre Richtlinien so weit wie möglich einschränken. Sie sollten dynamische Richtlinien nur verwenden, wenn bestimmte Eingabeparameter während der Laufzeit nicht bekannt sind.

Die folgenden Beispielvorlagen zeigen, wie IAM-Richtlinien auf der Grundlage der Ressourcen in Ihrer State-Machine-Definition AWS Step Functions generiert werden. Weitere Informationen erhalten Sie unter [So generiert Step Functions IAM-Richtlinien für integrierte Dienste](service-integration-iam-templates.md) und [Entdecken Sie Serviceintegrationsmuster in Step Functions](connect-to-resource.md).

### IAMRichtlinienbeispiele für die Integration Amazon Bedrock
<a name="bedrock-iam-policy-eg"></a>

Im folgenden Abschnitt werden die IAM Berechtigungen beschrieben, die Sie auf der Grundlage der Amazon Bedrock API benötigen, die Sie für ein bestimmtes Foundation- oder Bereitstellungsmodell verwenden. Dieser Abschnitt enthält auch Beispiele für Richtlinien, die vollen Zugriff gewähren.

Denken Sie daran, den *italicized* Text durch Ihre ressourcenspezifischen Informationen zu ersetzen.
+ [IAMRichtlinienbeispiel für den Zugriff auf ein bestimmtes Foundation-Modell mit InvokeModel](#bedrock-policy-invoke-foundation-model)
+ [IAMRichtlinienbeispiel für den Zugriff auf ein bestimmtes bereitgestelltes Modell mit InvokeModel](#bedrock-policy-invoke-provisioned-model)
+ [Zu verwendendes Beispiel IAM für eine Richtlinie mit vollständigem Zugriff InvokeModel](#bedrock-policy-invokemodel-full-access)
+ [IAMRichtlinienbeispiel für den Zugriff auf ein bestimmtes Foundation-Modell als Basismodell](#bedrock-policy-foundation-model)
+ [IAMRichtlinienbeispiel für den Zugriff auf ein bestimmtes benutzerdefiniertes Modell als Basismodell](#bedrock-policy-custom-model)
+ [Beispiel IAM für eine Richtlinie mit vollständigem Zugriff zur Verwendung von CreateModelCustomizationJob .sync](#bedrock-policy-createmodel-full-access)
+ [IAMRichtlinienbeispiel für den Zugriff auf ein bestimmtes Foundation-Modell mithilfe von CreateModelCustomizationJob .sync](#bedrock-policy-createmodel-sync-foundation-model)
+ [IAMRichtlinienbeispiel für den Zugriff auf ein benutzerdefiniertes Modell mithilfe von .sync CreateModelCustomizationJob](#bedrock-policy-createmodel-sync-custom-model)
+ [Beispiel IAM für eine vollständige Zugriffsrichtlinie zur Verwendung von .sync CreateModelCustomizationJob](#bedrock-policy-createmodel-sync-full-access)

#### IAMRichtlinienbeispiel für den Zugriff auf ein bestimmtes Foundation-Modell mit InvokeModel
<a name="bedrock-policy-invoke-foundation-model"></a>

Im Folgenden finden Sie ein IAM Richtlinienbeispiel für eine Zustandsmaschine, die auf ein bestimmtes Foundation-Modell zugreift, das `amazon.titan-text-express-v1` mithilfe der [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)API-Aktion benannt wurde.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "InvokeModel1",
            "Action": [
                "bedrock:InvokeModel"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-text-express-v1"
            ]
        }
    ]
}
```

#### IAMRichtlinienbeispiel für den Zugriff auf ein bestimmtes bereitgestelltes Modell mit InvokeModel
<a name="bedrock-policy-invoke-provisioned-model"></a>

Im Folgenden finden Sie ein IAM Richtlinienbeispiel für eine Zustandsmaschine, die auf ein bestimmtes bereitgestelltes Modell zugreift, das `c2oi931ulksx` mithilfe der [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)API-Aktion benannt wurde.

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Sid": "InvokeModel1",
      "Action": [
        "bedrock:InvokeModel"
      ],
      "Resource": [
        "arn:aws:bedrock:us-east-1:123456789012:provisioned-model/c2oi931ulksx"
      ]
    }
  ]
}
```

#### Zu verwendendes Beispiel IAM für eine Richtlinie mit vollständigem Zugriff InvokeModel
<a name="bedrock-policy-invokemodel-full-access"></a>

Im Folgenden finden Sie ein IAM Richtlinienbeispiel für eine Zustandsmaschine, die vollen Zugriff gewährt, wenn Sie die [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)API-Aktion verwenden.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "InvokeModel1",
            "Action": [
                "bedrock:InvokeModel"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:provisioned-model/*"
            ]
        }
    ]
}
```

#### IAMRichtlinienbeispiel für den Zugriff auf ein bestimmtes Foundation-Modell als Basismodell
<a name="bedrock-policy-foundation-model"></a>

Im Folgenden finden Sie ein IAM Richtlinienbeispiel für eine Zustandsmaschine, um mithilfe der [CreateModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)API-Aktion auf ein bestimmtes Foundation-Modell zuzugreifen, das `amazon.titan-text-express-v1` als Basismodell bezeichnet wird.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob1",
            "Action": [
                "bedrock:CreateModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-text-express-v1",
                "arn:aws:bedrock:us-east-1:123456789012:custom-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob2",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRole"            
            ]
        }
    ] 
}
```

#### IAMRichtlinienbeispiel für den Zugriff auf ein bestimmtes benutzerdefiniertes Modell als Basismodell
<a name="bedrock-policy-custom-model"></a>

Im Folgenden finden Sie ein IAM Richtlinienbeispiel für eine Zustandsmaschine, um mithilfe der [CreateModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)API-Aktion auf ein bestimmtes benutzerdefiniertes Modell als Basismodell zuzugreifen.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob1",
            "Action": [
                "bedrock:CreateModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:custom-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob2",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRoleName"            
            ]
        }
    ] 
}
```

#### Beispiel IAM für eine Richtlinie mit vollständigem Zugriff zur Verwendung von CreateModelCustomizationJob .sync
<a name="bedrock-policy-createmodel-full-access"></a>

Im Folgenden finden Sie ein IAM Richtlinienbeispiel für eine Zustandsmaschine, die vollen Zugriff gewährt, wenn Sie die [CreateModelCustomizationJob](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)API-Aktion verwenden.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob1",
            "Action": [
                "bedrock:CreateModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:custom-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob2",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRole"            
            ]
        }
    ] 
}
```

#### IAMRichtlinienbeispiel für den Zugriff auf ein bestimmtes Foundation-Modell mithilfe von CreateModelCustomizationJob .sync
<a name="bedrock-policy-createmodel-sync-foundation-model"></a>

Im Folgenden finden Sie ein IAM Richtlinienbeispiel für einen Zustandsmaschine für den Zugriff auf ein bestimmtes Foundation-Modell, das `amazon.titan-text-express-v1` mithilfe der API-Aktion [CreateModelCustomizationJob.sync](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html) benannt wurde.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob1",
            "Action": [
                "bedrock:CreateModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/amazon.titan-text-express-v1",
                "arn:aws:bedrock:us-east-1:123456789012:custom-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob2",
            "Action": [
                "bedrock:GetModelCustomizationJob",
                "bedrock:StopModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob3",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRole"            
            ]
        }
    ]
}
```

#### IAMRichtlinienbeispiel für den Zugriff auf ein benutzerdefiniertes Modell mithilfe von .sync CreateModelCustomizationJob
<a name="bedrock-policy-createmodel-sync-custom-model"></a>

Im Folgenden finden Sie ein IAM Richtlinienbeispiel für einen Zustandsmaschine für den Zugriff auf ein benutzerdefiniertes Modell mithilfe der [CreateModelCustomizationJobAPI-Aktion .sync.](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html)

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob1",
            "Action": [
                "bedrock:CreateModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:custom-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob2",
            "Action": [
                "bedrock:GetModelCustomizationJob",
                "bedrock:StopModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob3",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRole"            
            ]
        }
    ]
}
```

#### Beispiel IAM für eine vollständige Zugriffsrichtlinie zur Verwendung von .sync CreateModelCustomizationJob
<a name="bedrock-policy-createmodel-sync-full-access"></a>

Im Folgenden finden Sie ein IAM Richtlinienbeispiel für eine Zustandsmaschine, die vollen Zugriff gewährt, wenn Sie die API-Aktion [CreateModelCustomizationJob.sync](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_CreateModelCustomizationJob.html) verwenden.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob1",
            "Action": [
                "bedrock:CreateModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1::foundation-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:custom-model/*",
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob2",
            "Action": [
                "bedrock:GetModelCustomizationJob",
                "bedrock:StopModelCustomizationJob"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:model-customization-job/*"
            ]
        },
        {
            "Effect": "Allow",
            "Sid": "CreateModelCustomizationJob3",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRole"            
            ]
        }
    ]
}
```

# AWS CodeBuild Builds mit Step Functions verwalten
<a name="connect-codebuild"></a>

Sie können Step Functions integrieren, AWS CodeBuild um Builds zu starten, zu stoppen und zu verwalten. Auf dieser Seite werden die unterstützten Funktionen aufgeführt, die CodeBuild APIs Sie mit Step verwenden können.

Informationen zur Integration mit AWS Diensten in Step Functions finden Sie unter [Integrieren von -Services](integrate-services.md) und[Übergeben von Parametern an eine Service-API in Step Functions](connect-parameters.md).

Mit der Step Functions-Integration können AWS CodeBuild Sie Step Functions verwenden, um Builds auszulösen, zu stoppen und zu verwalten und Build-Berichte gemeinsam zu nutzen. Mithilfe von Step Functions können Sie Pipelines für die kontinuierliche Integration entwerfen und ausführen, um Ihre Softwareänderungen für Anwendungen zu validieren.

**Hauptmerkmale der optimierten Integration CodeBuild**  
Das [Ausführen einer Aufgabe (.sync)](connect-to-resource.md#connect-sync) Integrationsmuster wird unterstützt.
Nachdem Sie `StopBuild` oder aufgerufen haben`StopBuildBatch`, kann der Build oder der Build-Batch nicht sofort gelöscht werden, bis einige interne Arbeiten abgeschlossen sind, CodeBuild um den Status des Builds oder der Builds abzuschließen.   
Wenn Sie versuchen, `BatchDeleteBuilds` oder `DeleteBuildBatch` während dieses Zeitraums zu verwenden, wird der Build oder der Build-Batch möglicherweise nicht gelöscht.   
Die optimierten Serviceintegrationen `DeleteBuildBatch` bieten einen internen Wiederholungsversuch, um den Anwendungsfall des Löschens unmittelbar nach dem Beenden zu vereinfachen. `BatchDeleteBuilds`

Nicht alle APIs unterstützen alle Integrationsmuster, wie in der folgenden Tabelle dargestellt.


| API | Request Response (Antwort anfordern) | Ausführen einer Aufgabe (.sync) | 
| --- | --- | --- | 
| StartBuild | Unterstützt | Unterstützt | 
| StopBuild | Unterstützt | Wird nicht unterstützt | 
| BatchDeleteBuilds | Unterstützt | Wird nicht unterstützt | 
| BatchGetReports | Unterstützt | Wird nicht unterstützt | 
| StartBuildBatch | Unterstützt | Unterstützt | 
| StopBuildBatch | Unterstützt | Wird nicht unterstützt | 
| RetryBuildBatch | Unterstützt | Unterstützt | 
| DeleteBuildBatch | Unterstützt | Wird nicht unterstützt | 

**Die Parameter in Step Functions werden ausgedrückt in PascalCase**  
Auch wenn sich die native Service-API in CamelCase befindet, z. B. die API-Aktion`startSyncExecution`, geben Sie Parameter in an PascalCase, z. B.:. `StateMachineArn`

## Optimiert CodeBuild APIs
<a name="connect-codebuild-api"></a>
+ [https://docs.aws.amazon.com/codebuild/latest/APIReference/API_StartBuild.html#API_StartBuild_RequestSyntax](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_StartBuild.html#API_StartBuild_RequestSyntax)
+ [https://docs.aws.amazon.com/codebuild/latest/APIReference/API_StopBuild.html](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_StopBuild.html)
+ [https://docs.aws.amazon.com/codebuild/latest/APIReference/API_BatchDeleteBuilds.html](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_BatchDeleteBuilds.html)
+ [https://docs.aws.amazon.com/codebuild/latest/APIReference/API_BatchGetReports.html](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_BatchGetReports.html)
+ [https://docs.aws.amazon.com/codebuild/latest/APIReference/API_StartBuildBatch.html](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_StartBuildBatch.html)
+ [https://docs.aws.amazon.com/codebuild/latest/APIReference/API_StopBuildBatch.html](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_StopBuildBatch.html)
+ [https://docs.aws.amazon.com/codebuild/latest/APIReference/API_RetryBuildBatch.html](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_RetryBuildBatch.html)
+ [https://docs.aws.amazon.com/codebuild/latest/APIReference/API_DeleteBuildBatch.html](https://docs.aws.amazon.com/codebuild/latest/APIReference/API_DeleteBuildBatch.html)

**Anmerkung**  
Bei der Verwendung JSONPath können Sie den rekursiven Abstiegsoperator (`..`) verwenden, um Parameter für `BatchDeleteBuilds` anzugeben. Mit dem zurückgegebenen Array können Sie das `Arn` Feld von `StartBuild` in einen `Ids` Pluralparameter umwandeln, wie im folgenden Beispiel gezeigt.  

```
"BatchDeleteBuilds": {
    "Type": "Task",
    "Resource": "arn:aws:states:::codebuild:batchDeleteBuilds",
    "Arguments": {
        "Ids.$": "$.Build..Arn"
    },
    "Next": "MyNextState"
},
```

## IAM-Richtlinien für Anrufe AWS CodeBuild
<a name="codebuild-iam"></a>

Die folgenden Beispielvorlagen zeigen, wie IAM-Richtlinien auf der Grundlage der Ressourcen in Ihrer State-Machine-Definition AWS Step Functions generiert werden. Weitere Informationen erhalten Sie unter [So generiert Step Functions IAM-Richtlinien für integrierte Dienste](service-integration-iam-templates.md) und [Entdecken Sie Serviceintegrationsmuster in Step Functions](connect-to-resource.md).

*Ressourcen:*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "sns:Publish"
            ],
            "Resource": [
                "arn:aws:sns:us-east-1:123456789012:StepFunctionsSample-CodeBuildExecution1111-2222-3333-wJalrXUtnFEMI-SNSTopic-bPxRfiCYEXAMPLEKEY"
            ],
            "Effect": "Allow"
        },
        {
            "Action": [
                "codebuild:StartBuild",
                "codebuild:StopBuild",
                "codebuild:BatchGetBuilds",
                "codebuild:BatchGetReports"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventForCodeBuildStartBuildRule"
            ],
            "Effect": "Allow"
        }
    ]
}
```

### `StartBuild`
<a name="codebuild-iam-startbuild"></a>

*Statische Ressourcen*

------
#### [ Run a Job (.sync) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:StartBuild",
        "codebuild:StopBuild",
        "codebuild:BatchGetBuilds"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "events:PutTargets",
        "events:PutRule",
        "events:DescribeRule"
      ],
      "Resource": [
        "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventForCodeBuildStartBuildRule"
      ]
    }
  ]
}
```

------
#### [ Request Response ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:StartBuild"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
      ]
    }
  ]
}
```

------

*Dynamische Ressourcen*

------
#### [ Run a Job (.sync) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:StartBuild",
        "codebuild:StopBuild",
        "codebuild:BatchGetBuilds"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:*:project/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "events:PutTargets",
        "events:PutRule",
        "events:DescribeRule"
      ],
      "Resource": [
        "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventForCodeBuildStartBuildRule"
      ]
    }
  ]
}
```

------
#### [ Request Response ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:StartBuild"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:*:project/*"
      ]
    }
  ]
}
```

------

### `StopBuild`
<a name="codebuild-iam-stopbuild"></a>

*Statische Ressourcen*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:StopBuild"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
      ]
    }
  ]
}
```

*Dynamische Ressourcen*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:StopBuild"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:*:project/*"
      ]
    }
  ]
}
```

### `BatchDeleteBuilds`
<a name="codebuild-iam-batchdeletebuilds"></a>

*Statische Ressourcen*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:BatchDeleteBuilds"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
      ]
    }
  ]
}
```

*Dynamische Ressourcen*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:BatchDeleteBuilds"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:*:project/*"
      ]
    }
  ]
}
```

### `BatchGetReports`
<a name="codebuild-iam-batchgetreports"></a>

*Statische Ressourcen*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:BatchGetReports"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:123456789012:report-group/myReportName"
      ]
    }
  ]
}
```

*Dynamische Ressourcen*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "codebuild:BatchGetReports"
      ],
      "Resource": [
        "arn:aws:codebuild:us-east-1:*:report-group/*"
      ]
    }
  ]
}
```

### `StartBuildBatch`
<a name="codebuild-iam-startbuildbatch"></a>

*Statische Ressourcen*

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:StartBuildBatch",
                "codebuild:StopBuildBatch",
                "codebuild:BatchGetBuildBatches"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventForCodeBuildStartBuildBatchRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:StartBuildBatch"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
            ]
        }
    ]
}
```

------

*Dynamische Ressourcen*

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:StartBuildBatch",
                "codebuild:StopBuildBatch",
                "codebuild:BatchGetBuildBatches"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventForCodeBuildStartBuildBatchRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:StartBuildBatch"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/*"
            ]
        }
    ]
}
```

------

### `StopBuildBatch`
<a name="codebuild-iam-stopbuildbatch"></a>

*Statische Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:StopBuildBatch"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
            ]
        }
    ]
}
```

*Dynamische Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:StopBuildBatch"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/*"
            ]
        }
    ]
}
```

### `RetryBuildBatch`
<a name="codebuild-iam-retrybuildbatch"></a>

*Statische Ressourcen*

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:RetryBuildBatch",
                "codebuild:StopBuildBatch",
                "codebuild:BatchGetBuildBatches"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:RetryBuildBatch"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
            ]
        }
    ]
}
```

------

*Dynamische Ressourcen*

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:RetryBuildBatch",
                "codebuild:StopBuildBatch",
                "codebuild:BatchGetBuildBatches"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/*"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:RetryBuildBatch"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/*"
            ]
        }
    ]
}
```

------

### `DeleteBuildBatch`
<a name="codebuild-iam-deletebuildbatch"></a>

*Statische Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:DeleteBuildBatch"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/myProjectName"
            ]
        }
    ]
}
```

*Dynamische Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "codebuild:DeleteBuildBatch"
            ],
            "Resource": [
                "arn:aws:codebuild:us-east-1:123456789012:project/*"
            ]
        }
    ]
}
```

# Führen Sie DynamoDB CRUD-Operationen mit Step Functions durch
<a name="connect-ddb"></a>

Sie können Step Functions in DynamoDB integrieren, um CRUD-Operationen an einer DynamoDB-Tabelle durchzuführen. Diese Seite listet die unterstützten DynamoDB auf APIs und bietet einen `Task` Beispielstatus zum Abrufen eines Elements aus DynamoDB.

Informationen zur Integration mit AWS Diensten in Step Functions finden Sie unter [Integrieren von -Services](integrate-services.md) und[Übergeben von Parametern an eine Service-API in Step Functions](connect-parameters.md).

**Hauptmerkmale der optimierten DynamoDB-Integration**  
Es gibt keine spezifische Optimierung für das [Request Response (Antwort anfordern)](connect-to-resource.md#connect-default) Integrationsmuster.
[Warten Sie auf einen Rückruf mit Task Token](connect-to-resource.md#connect-wait-token)Das Integrationsmuster wird nicht unterstützt.
Nur [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html)API-Aktionen [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html), [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html), und sind im Rahmen der optimierten Integration verfügbar. Andere API-Aktionen, wie sie beispielsweise über die AWS DynamoDB-SDK-Integration verfügbar [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html)sind. 

Im Folgenden finden Sie ein Beispiel für einen `Task` Status, der eine Nachricht von DynamoDB abruft.

```
"Read next Message from DynamoDB": {
    "Type": "Task",
    "Resource": "arn:aws:states:::dynamodb:getItem",
    "Arguments": {
        "TableName": "DYNAMO_DB_TABLE_NAME",
        "Key": {
            "MessageId": {"S": "{% $List[0] %}"}
        }
    }
```

Um diesen Status in einem funktionierenden Beispiel zu sehen, sehen Sie sich die [Datensätze übertragen mit LambdaDynamoDB, und Amazon SQS](sample-project-transfer-data-sqs.md) Startvorlage an.

**Unterschiede zwischen den Ausnahmepräfixen**  
Wenn bei Standard-DynamoDB-Verbindungen ein Fehler auftritt, lautet das Ausnahmepräfix `DynamoDb` (Groß- und Kleinschreibung).  
Für optimierte Integrationen lautet das Ausnahmepräfix `DynamoDB` (Großbuchstaben). `DB` 

**Quote für Eingabe- oder Ergebnisdaten**  
Beim Senden oder Empfangen von Daten zwischen Diensten beträgt die maximale Eingabe oder das maximale Ergebnis für eine Aufgabe 256 KiB an Daten als UTF-8-kodierte Zeichenfolge. Siehe [Kontingente im Zusammenhang mit der Ausführung von Zustandsmaschinen](service-quotas.md#service-limits-state-machine-executions).

## Optimiertes DynamoDB APIs
<a name="connect-dynamodb-api"></a>
+ [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_GetItem.html)
+ [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_PutItem.html)
+ [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_DeleteItem.html)
+ [https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html](https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_UpdateItem.html)

**Die Parameter in Step Functions werden ausgedrückt in PascalCase**  
Auch wenn sich die native Service-API in CamelCase befindet, z. B. die API-Aktion`startSyncExecution`, geben Sie Parameter in an PascalCase, z. B.:. `StateMachineArn`

## IAM-Richtlinien für das Aufrufen von DynamoDB
<a name="dynamo-iam"></a>

Die folgenden Beispielvorlagen zeigen, wie IAM-Richtlinien auf der Grundlage der Ressourcen in Ihrer State-Machine-Definition AWS Step Functions generiert werden. Weitere Informationen erhalten Sie unter [So generiert Step Functions IAM-Richtlinien für integrierte Dienste](service-integration-iam-templates.md) und [Entdecken Sie Serviceintegrationsmuster in Step Functions](connect-to-resource.md).

*Statische Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetItem",
                "dynamodb:PutItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem"
            ],
            "Resource": [
                "arn:aws:dynamodb:us-east-1:123456789012:table/myTableName"
            ]
        }
    ]
}
```

*Dynamische Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "dynamodb:GetItem",
                "dynamodb:PutItem",
                "dynamodb:UpdateItem",
                "dynamodb:DeleteItem"
            ],
            "Resource": "*"
        }
    ]
}
```

*Weitere Informationen zu den IAM-Richtlinien für alle DynamoDB-API-Aktionen finden Sie unter [IAM-Richtlinien mit DynamoDB im Amazon DynamoDB DynamoDB-Entwicklerhandbuch](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/using-identity-based-policies.html).* *Weitere Informationen zu den IAM-Richtlinien für PartiQL for DynamoDB finden Sie unter [IAM-Richtlinien mit PartiQL for DynamoDB im Amazon DynamoDB Developer Guide](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ql-iam.html).*

# Führen Sie Amazon ECS- oder Fargate-Aufgaben mit Step Functions aus
<a name="connect-ecs"></a>

Erfahren Sie, wie Sie Step Functions mit Amazon ECS oder Fargate integrieren, um Aufgaben auszuführen und zu verwalten. In Amazon ECS ist eine Aufgabe die grundlegende Berechnungseinheit. Aufgaben werden durch eine Aufgabendefinition definiert, die festlegt, wie ein Docker-Container ausgeführt werden soll, einschließlich des Container-Images, der CPU- und Speicherlimits, der Netzwerkkonfiguration und anderer Parameter. Diese Seite listet die verfügbaren Amazon ECS-API-Aktionen auf und enthält Anweisungen zur Übergabe von Daten an eine Amazon ECS-Aufgabe mithilfe von Step Functions.

Informationen zur Integration mit AWS Diensten in Step Functions finden Sie unter [Integrieren von -Services](integrate-services.md) und[Übergeben von Parametern an eine Service-API in Step Functions](connect-parameters.md).

**Hauptmerkmale der optimierten ECS/Fargate Amazon-Integration**  
Das [Ausführen einer Aufgabe (.sync)](connect-to-resource.md#connect-sync) Integrationsmuster wird unterstützt.
`ecs:runTask`kann eine HTTP 200-Antwort zurückgeben, hat aber ein nicht leeres `Failures` Feld wie folgt:  
**Antwort anfordern**: Geben Sie die Antwort zurück und scheitern Sie nicht an der Aufgabe. Dies entspricht nicht optimierten Integrationen.
**Einen Job- oder Task-Token ausführen**: Wenn ein nicht leeres `Failures` Feld gefunden wird, schlägt die Aufgabe fehl und es wird ein `AmazonECS.Unknown` Fehler angezeigt.

## Optimiertes Amazon ECS/Fargate APIs
<a name="connect-ecs-api"></a>
+ [https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_RunTask.html) startet eine neue Aufgabe mit der angegebenen Aufgabendefinition.

**Parameter in Step Functions werden ausgedrückt in PascalCase**  
Auch wenn sich die native Service-API in CamelCase befindet, z. B. die API-Aktion`startSyncExecution`, geben Sie Parameter in an PascalCase, z. B.:. `StateMachineArn`

## Daten an eine Amazon ECS-Aufgabe übergeben
<a name="connect-ecs-pass-to"></a>

Informationen zur Integration mit AWS Diensten in Step Functions finden Sie unter [Integrieren von -Services](integrate-services.md) und[Übergeben von Parametern an eine Service-API in Step Functions](connect-parameters.md).

Sie können `overrides` damit den Standardbefehl für einen Container überschreiben und Eingaben an Ihre Amazon ECS-Aufgaben übergeben. Siehe [https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerOverride.html](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerOverride.html). In diesem Beispiel haben wir JsonPath Werte `Task` von der Eingabe an den `Task` Status übergeben.

Im Folgenden wird ein `Task` Status beschrieben, der eine Amazon ECS-Aufgabe ausführt und darauf wartet, dass sie abgeschlossen ist.

```
{
 "StartAt": "Run an ECS Task and wait for it to complete",
 "States": {
   "Run an ECS Task and wait for it to complete": {
     "Type": "Task",
     "Resource": "arn:aws:states:::ecs:runTask.sync",
     "Arguments": {
                "Cluster": "cluster-arn",
                "TaskDefinition": "job-id",
                "Overrides": {
                    "ContainerOverrides": [
                        {
                            "Name": "container-name",
                            "Command": "{% $state.input.commands %}" 
                        }
                    ]
                }
            },
     "End": true
    }
  }
}
```

Die `Command`-Zeile in `ContainerOverrides` gibt die Befehle von der Zustandseingabe an den Container weiter.

Im vorherigen Beispiel für eine Zustandsmaschine würde bei der folgenden Eingabe jeder der Befehle als Container-Override übergeben werden:

```
{
  "commands": [
    "test command 1",
    "test command 2",
    "test command 3"
  ]
}
```

Das Folgende beinhaltet einen `Task` Status, der eine Amazon ECS-Aufgabe ausführt und dann darauf wartet, dass das Task-Token zurückgegeben wird. Siehe [Warten Sie auf einen Rückruf mit Task Token](connect-to-resource.md#connect-wait-token).

```
{  
   "StartAt":"Manage ECS task",
   "States":{  
      "Manage ECS task":{  
         "Type":"Task",
         "Resource":"arn:aws:states:::ecs:runTask.waitForTaskToken",
         "Arguments":{  
            "LaunchType":"FARGATE",
            "Cluster":"cluster-arn",
            "TaskDefinition":"job-id",
            "Overrides":{  
               "ContainerOverrides":[  
                  {  
                     "Name":"container-name",
                     "Environment":[  
                        {  
                           "Name" : "TASK_TOKEN_ENV_VARIABLE",
                           "Value" : "{% $states.context.Task.Token %}"
                        }
                     ]
                  }
               ]
            }
         },
         "End":true
      }
   }
}
```

## IAM-Richtlinien für Anrufe bei Amazon ECS/ AWS Fargate
<a name="ecs-iam"></a>

Die folgenden Beispielvorlagen zeigen, wie IAM-Richtlinien auf der Grundlage der Ressourcen in Ihrer State-Machine-Definition AWS Step Functions generiert werden. Weitere Informationen erhalten Sie unter [So generiert Step Functions IAM-Richtlinien für integrierte Dienste](service-integration-iam-templates.md) und [Entdecken Sie Serviceintegrationsmuster in Step Functions](connect-to-resource.md).

Da der Wert für erst bekannt `TaskId` ist, wenn die Aufgabe gesendet wird, erstellt Step Functions eine `"Resource": "*"` Richtlinie mit mehr Rechten.

**Anmerkung**  
Sie können trotz der `"*"` IAM-Richtlinie nur Amazon Elastic Container Service (Amazon ECS) -Aufgaben beenden, die von Step Functions gestartet wurden.

------
#### [ Run a Job (.sync) ]

*Statische Ressourcen*

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:RunTask"
            ],
            "Resource": [
                "arn:aws:ecs:region:
account-id:task-definition/taskDefinition:revisionNumber"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecs:StopTask",
                "ecs:DescribeTasks"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
               "arn:aws:events:region:
account-id:rule/StepFunctionsGetEventsForECSTaskRule"
            ]
        }
    ]
}
```

*Dynamische Ressourcen*

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:RunTask",
                "ecs:StopTask",
                "ecs:DescribeTasks"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
               "arn:aws:events:region:
account-id:rule/StepFunctionsGetEventsForECSTaskRule"
            ]
        }
    ]
}
```

------
#### [ Request Response and Callback (.waitForTaskToken) ]

*Statische Ressourcen*

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:RunTask"
            ],
            "Resource": [
                "arn:aws:ecs:region:
account-id:task-definition/taskDefinition:revisionNumber"
            ]
        }
    ]
}
```

*Dynamische Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ecs:RunTask"
            ],
            "Resource": "*"
        }
    ]
}
```

------

Wenn Ihre geplanten Amazon ECS-Aufgaben die Verwendung einer Aufgabenausführungsrolle, einer Aufgabenrolle oder einer Aufgabenrollenüberschreibung erfordern, müssen Sie der CloudWatch Events-IAM-Rolle der aufrufenden Entität, in diesem Fall Step Functions, `iam:PassRole` Berechtigungen für jede Aufgabenausführungsrolle, Aufgabenrolle oder Aufgabenrollenüberschreibung hinzufügen.

# Amazon EKS-Cluster mit Step Functions erstellen und verwalten
<a name="connect-eks"></a>

Erfahren Sie, wie Sie Step Functions mit Amazon EKS integrieren, um Kubernetes-Cluster zu verwalten. Step Functions bietet zwei Arten der Serviceintegration APIs für die Integration mit Amazon Elastic Kubernetes Service. Mit einem können Sie Amazon EKS verwenden APIs , um einen Amazon EKS-Cluster zu erstellen und zu verwalten. Mit der anderen können Sie mithilfe der Kubernetes-API mit Ihrem Cluster interagieren und Jobs als Teil des Workflows Ihrer Anwendung ausführen.

 Sie können die Kubernetes-API-Integrationen mit Amazon EKS-Clustern verwenden, die mit Step Functions erstellt wurden, mit Amazon EKS-Clustern, die mit dem **eksctl-Tool** oder der [Amazon EKS-Konsole](https://console.aws.amazon.com/eks/home) erstellt wurden, oder mit ähnlichen Methoden. Weitere Informationen finden Sie unter [Erstellen eines Amazon EKS-Clusters](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html) im Amazon EKS-Benutzerhandbuch.

Informationen zur Integration mit AWS Diensten in Step Functions finden Sie unter [Integrieren von -Services](integrate-services.md) und[Übergeben von Parametern an eine Service-API in Step Functions](connect-parameters.md).

**Hauptmerkmale der optimierten Amazon EKS-Integration**  
Das [Ausführen einer Aufgabe (.sync)](connect-to-resource.md#connect-sync) Integrationsmuster wird unterstützt.
Es gibt keine spezifischen Optimierungen für das [Request Response (Antwort anfordern)](connect-to-resource.md#connect-default) Integrationsmuster.
Das [Warten Sie auf einen Rückruf mit Task Token](connect-to-resource.md#connect-wait-token) Integrationsmuster wird nicht unterstützt.

**Anmerkung**  
Die Step Functions EKS-Integration unterstützt nur Kubernetes APIs mit öffentlichem Endpunktzugriff. Standardmäßig haben API-Serverendpunkte für EKS-Cluster öffentlichen Zugriff. Weitere Informationen finden Sie unter [Amazon EKS-Cluster-Endpunktzugriffskontrolle](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html) im **Amazon EKS-Benutzerhandbuch**.

Step Functions beendet einen Amazon EKS-Cluster nicht automatisch, wenn die Ausführung gestoppt wird. Wenn Ihr State Machine stoppt, bevor Ihr Amazon EKS-Cluster beendet wurde, läuft Ihr Cluster möglicherweise auf unbestimmte Zeit weiter und es können zusätzliche Gebühren anfallen. Um dies zu vermeiden, stellen Sie sicher, dass jeder Amazon EKS-Cluster, den Sie erstellen, ordnungsgemäß beendet wird. Weitere Informationen finden Sie unter:
+ [Löschen eines Clusters](https://docs.aws.amazon.com/eks/latest/userguide/create-cluster.html) im Amazon EKS-Benutzerhandbuch.
+ [Ausführen einer Aufgabe (.sync)](connect-to-resource.md#connect-sync)in Muster der Serviceintegration.

**Quote für Eingabe- oder Ergebnisdaten**  
Beim Senden oder Empfangen von Daten zwischen Diensten beträgt die maximale Eingabe oder das maximale Ergebnis für eine Aufgabe 256 KiB an Daten als UTF-8-kodierte Zeichenfolge. Siehe [Kontingente im Zusammenhang mit der Ausführung von Zustandsmaschinen](service-quotas.md#service-limits-state-machine-executions).

## Kubernetes-API-Integrationen
<a name="connect-eks-kubernetes-apis"></a>

Step Functions unterstützt die folgenden Kubernetes APIs:

### RunJob
<a name="connect-eks-kubernetes-apis-runjob"></a>

Die `eks:runJob` Service-Integration ermöglicht es Ihnen, einen Job auf Ihrem Amazon EKS-Cluster auszuführen. Bei `eks:runJob.sync` dieser Variante können Sie warten, bis der Job abgeschlossen ist, und optional Protokolle abrufen.

Ihr Kubernetes-API-Server muss der von Ihrem Zustandsmaschine verwendeten IAM-Rolle Berechtigungen gewähren. Weitere Informationen finden Sie unter [Berechtigungen](#connect-eks-permissions).

Für das **Run a Job** (`.sync`) -Muster wird der Status des Jobs durch Abfragen bestimmt. Step Functions fragt zunächst mit einer Geschwindigkeit von ungefähr 1 Umfrage pro Minute ab. Diese Rate verlangsamt sich schließlich auf etwa 1 Umfrage alle 5 Minuten. Wenn Sie häufigere Abfragen benötigen oder mehr Kontrolle über die Abfragestrategie benötigen, können Sie die `eks:call` Integration verwenden, um den Status des Jobs abzufragen.

Die `eks:runJob` Integration ist spezifisch für `batch/v1` Kubernetes Jobs. Weitere Informationen finden Sie unter [Jobs](https://kubernetes.io/docs/concepts/workloads/controllers/job/) in der Kubernetes-Dokumentation. Wenn Sie andere Kubernetes-Ressourcen, einschließlich benutzerdefinierter Ressourcen, verwalten möchten, verwenden Sie die Serviceintegration. `eks:call` Sie können Step Functions verwenden, um Abfrageschleifen zu erstellen, wie im [Umfrage zum Jobstatus mit Lambda und AWS Batch](sample-project-job-poller.md) Beispielprojekt gezeigt. 

Zu den unterstützten Parametern gehören:
+ `ClusterName`: Der Name des Amazon EKS-Clusters, den Sie aufrufen möchten.
  + `Type`: `String`
  + Erforderlich: Ja
+ `CertificateAuthority`: Die Base64-codierten Zertifikatsdaten, die für die Kommunikation mit Ihrem Cluster erforderlich sind. Sie können diesen Wert von der [Amazon EKS-Konsole](https://console.aws.amazon.com/eks/home) oder mithilfe der Amazon [DescribeCluster](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html)EKS-API abrufen.
  + `Type`: `String`
  + Erforderlich: Ja
+ `Endpoint`: Die Endpunkt-URL für Ihren Kubernetes-API-Server. Sie können diesen Wert von der [Amazon EKS-Konsole](https://console.aws.amazon.com/eks/home) oder mithilfe der Amazon [DescribeCluster](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html)EKS-API abrufen.
  + `Type`: `String`
  + Erforderlich: Ja
+ `Namespace`: Der Namespace, in dem der Job ausgeführt werden soll. Wenn nicht angegeben, wird der Namespace `default` verwendet.
  + `Type`: `String`
  + Erforderlich: nein
+ `Job`: Die Definition des Kubernetes-Jobs. Siehe [Jobs](https://kubernetes.io/docs/concepts/workloads/controllers/job/) in der Kubernetes-Dokumentation. 
  + `Type`: `JSON` oder `String`
  + Erforderlich: Ja
+ `LogOptions`: Eine Reihe von Optionen zur Steuerung des optionalen Abrufs von Protokollen. Gilt nur, wenn das Dienstintegrationsmuster Run a Job (.sync) verwendet wird, um auf den Abschluss des Jobs zu warten.
  + `Type`: `JSON`
  + Erforderlich: nein
  + Protokolle sind in der Antwort unter dem Schlüssel `logs` enthalten. Der Job kann mehrere Pods mit jeweils mehreren Containern enthalten.

    ```
    { 
      ...
      "logs": { 
        "pods": { 
          "pod1": { 
            "containers": { 
              "container1": { 
                "log": <log> 
              },
              ...
            }
          },
          ...
        }
      }
    ```
  + Der Protokollabruf erfolgt nach bestem Wissen und Gewissen. Wenn beim Abrufen eines Protokolls ein Fehler auftritt, werden anstelle des `log` Felds die Felder und angezeigt. `error` `cause`
+ `LogOptions.RetrieveLogs`: Aktiviert den Protokollabruf nach Abschluss des Jobs. Standardmäßig werden Protokolle nicht abgerufen.
  + `Type`: `Boolean`
  + Erforderlich: nein
+ `LogOptions.RawLogs`: Wenn auf true gesetzt `RawLogs` ist, werden Logs als unformatierte Zeichenketten zurückgegeben, ohne dass versucht wird, sie in JSON zu parsen. Standardmäßig werden Logs nach Möglichkeit in JSON deserialisiert. In einigen Fällen kann eine solche Analyse zu unerwünschten Änderungen führen, z. B. zur Einschränkung der Genauigkeit von Zahlen mit vielen Ziffern.
  + `Type`: `Boolean`
  + Erforderlich: nein
+ `LogOptions.LogParameters`: Die Read Log API der Kubernetes-API unterstützt Abfrageparameter zur Steuerung des Protokollabrufs. Sie können beispielsweise `tailLines` oder verwenden, `limitBytes` um die Größe der abgerufenen Protokolle zu begrenzen und dabei das Datengrößenkontingent von Step Functions einzuhalten. Weitere Informationen finden Sie im Abschnitt „[Protokoll lesen](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.27/#read-log-pod-v1-core)“ der Kubernetes-API-Referenz.
  + `Type: `Karte von bis `String` `List of Strings`
  + Erforderlich: nein
  + Beispiel:

    ```
    "LogParameters": {
      "tailLines": [ "6" ]
    }
    ```

Das folgende Beispiel enthält einen `Task` Status, der einen Job ausführt, auf seinen Abschluss wartet und dann die Logs des Jobs abruft:

```
{
  "StartAt": "Run a job on EKS",
  "States": {
    "Run a job on EKS": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:runJob.sync",
      "Arguments": {
        "ClusterName": "MyCluster",
        "CertificateAuthority": "ANPAJ2UCCR6DPCEXAMPLE",
        "Endpoint": "https://AKIAIOSFODNN7EXAMPLE.yl4.us-east-1.eks.amazonaws.com",
        "LogOptions": {
          "RetrieveLogs": true
        },
        "Job": {
          "apiVersion": "batch/v1",
          "kind": "Job",
          "metadata": {
            "name": "example-job"
          },
          "spec": {
            "backoffLimit": 0,
            "template": {
              "metadata": {
                "name": "example-job"
              },
              "spec": {
                "containers": [
                  {
                    "name": "pi-2000",
                    "image": "perl",
                    "command": [ "perl" ],
                    "args": [
                      "-Mbignum=bpi",
                      "-wle",
                      "print bpi(2000)"
                    ]
                  }
                ],
                "restartPolicy": "Never"
              }
            }
          }
        }
      },
      "End": true
    }
  }
}
```

### `Call`
<a name="connect-eks-kubernetes-apis-call"></a>

Die `eks:call` Serviceintegration ermöglicht es Ihnen, die Kubernetes-API zu verwenden, um Kubernetes-Ressourcenobjekte über einen Kubernetes-API-Endpunkt zu lesen und zu schreiben. 

Ihr Kubernetes-API-Server muss der von Ihrem Zustandsmaschine verwendeten IAM-Rolle Berechtigungen gewähren. Weitere Informationen finden Sie unter [Berechtigungen](#connect-eks-permissions).

Weitere Informationen zu den verfügbaren Vorgängen finden Sie in der [Kubernetes-API-Referenz](https://kubernetes.io/docs/reference/kubernetes-api/).

Zu den unterstützten Parametern für gehören`Call`:
+ `ClusterName`: Der Name des Amazon EKS-Clusters, den Sie aufrufen möchten.
  + `Type`: Zeichenfolge
  + Erforderlich: Ja
+ `CertificateAuthority`: Die Base64-codierten Zertifikatsdaten, die für die Kommunikation mit Ihrem Cluster erforderlich sind. Sie können diesen Wert von der [Amazon EKS-Konsole](https://console.aws.amazon.com/eks/home) oder mithilfe der Amazon [DescribeCluster](https://docs.aws.amazon.com/eks/latest/APIReference/API_DescribeCluster.html)EKS-API abrufen.
  + `Type`: `String`
  + Erforderlich: Ja
+ `Endpoint`: Die Endpunkt-URL für Ihren Kubernetes-API-Server. Sie finden diesen Wert in der [Amazon EKS-Konsole](https://console.aws.amazon.com/eks/home) oder mithilfe der Amazon DescribeCluster EKS-API.
  + `Type`: `String`
  + Erforderlich: Ja
+ `Method`: Die HTTP-Methode Ihrer Anfrage. Eins von: `GET`, `POST`, `PUT`, `DELETE`, `HEAD` oder von `PATCH`.
  + `Type`: `String`
  + Erforderlich: Ja
+ `Path`: Der HTTP-Pfad des Kubernetes-REST-API-Vorgangs.
  + `Type`: `String`
  + Erforderlich: Ja
+ `QueryParameters`: Die HTTP-Abfrageparameter des Kubernetes-REST-API-Vorgangs.
  + `Type: `Karte von bis `String` `List of Strings`
  + Erforderlich: Nein
  + Beispiel:

    ```
    "QueryParameters": {
      "labelSelector": [ "job-name=example-job" ]
    }
    ```
+ `RequestBody`: Der HTTP-Nachrichtentext des Kubernetes-REST-API-Vorgangs.
  + `Type`: `JSON` oder `String`
  + Erforderlich: Nein

Im Folgenden finden Sie einen `Task` Status, der verwendet wird, `eks:call` um die Pods aufzulisten, die zu dem Job gehören. `example-job`

```
{
  "StartAt": "Call EKS",
  "States": {
    "Call EKS": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:call",
      "Arguments": {
        "ClusterName": "MyCluster",
        "CertificateAuthority": "ANPAJ2UCCR6DPCEXAMPLE",
        "Endpoint": "https://444455556666.yl4.us-east-1.eks.amazonaws.com",
        "Method": "GET",
        "Path": "/api/v1/namespaces/default/pods",
        "QueryParameters": {
          "labelSelector": [
            "job-name=example-job"
          ]
        }
      },
      "End": true
    }
  }
}
```

Der folgende Status enthält einen `Task` Status, der `eks:call` zum Löschen des Auftrags verwendet wird`example-job`, und legt den Status fest, `propagationPolicy` um sicherzustellen, dass die Pods des Auftrags ebenfalls gelöscht werden.

```
{
  "StartAt": "Call EKS",
  "States": {
    "Call EKS": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:call",
      "Arguments": {
        "ClusterName": "MyCluster",
        "CertificateAuthority": "ANPAJ2UCCR6DPCEXAMPLE",
        "Endpoint": "https://444455556666.yl4.us-east-1.eks.amazonaws.com",
        "Method": "DELETE",
        "Path": "/apis/batch/v1/namespaces/default/jobs/example-job",
        "QueryParameters": {
          "propagationPolicy": [
            "Foreground"
          ]
        }
      },
      "End": true
    }
  }
}
```

## Optimiertes Amazon EKS APIs
<a name="connect-eks-apis"></a>

Zu den unterstützten Amazon EKS APIs und der Syntax gehören:
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html)
  +  [Erforderliche Syntax](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html#API_CreateCluster_RequestSyntax) 
  +  [Antwortsyntax](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateCluster.html#API_CreateCluster_ResponseSyntax) 

    Wenn ein Amazon EKS-Cluster mithilfe der `eks:createCluster` Service-Integration erstellt wird, wird die IAM-Rolle als Administrator (mit system:masters-Berechtigungen) zur Kubernetes-RBAC-Autorisierungstabelle hinzugefügt. Anfänglich kann nur diese IAM-Entität den Kubernetes-API-Server aufrufen. Weitere Informationen finden Sie unter:
    + [Verwaltung von Benutzern oder IAM-Rollen für Ihren Cluster](https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html) im *Amazon EKS-Benutzerhandbuch* 
    + Der Abschnitt [Berechtigungen](#connect-eks-permissions) 

    Amazon EKS verwendet serviceverknüpfte Rollen, die die Berechtigungen enthalten, die Amazon EKS benötigt, um andere Services in Ihrem Namen aufzurufen. Wenn diese serviceverknüpften Rollen noch nicht in Ihrem Konto vorhanden sind, müssen Sie die `iam:CreateServiceLinkedRole` Berechtigung zu der von Step Functions verwendeten IAM-Rolle hinzufügen. Weitere Informationen finden Sie unter [Verwenden von serviceverknüpften Rollen](https://docs.aws.amazon.com/eks/latest/userguide/using-service-linked-roles.html) im *Amazon EKS-Benutzerhandbuch*.

    Die von Step Functions verwendete IAM-Rolle muss über `iam:PassRole` Berechtigungen verfügen, um die Cluster-IAM-Rolle an Amazon EKS weiterzugeben. Weitere Informationen finden Sie unter [Amazon EKS-Cluster-IAM-Rolle](https://docs.aws.amazon.com/eks/latest/userguide/service_IAM_role.html) im *Amazon EKS-Benutzerhandbuch*. 
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteCluster.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteCluster.html)
  +  [Erforderliche Syntax](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteCluster.html#API_DeleteCluster_RequestSyntax) 
  +  [Antwortsyntax](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteCluster.html#API_DeleteCluster_ResponseSyntax) 

    Sie müssen alle Fargate-Profile oder Knotengruppen löschen, bevor Sie einen Cluster löschen.
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateFargateProfile.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateFargateProfile.html)
  +  [Erforderliche Syntax](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateFargateProfile.html#API_CreateFargateProfile_RequestSyntax) 
  +  [Antwortsyntax](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateFargateProfile.html#API_CreateFargateProfile_ResponseSyntax) 

    Amazon EKS verwendet serviceverknüpfte Rollen, die die Berechtigungen enthalten, die Amazon EKS benötigt, um andere Services in Ihrem Namen aufzurufen. Wenn diese serviceverknüpften Rollen noch nicht in Ihrem Konto vorhanden sind, müssen Sie die `iam:CreateServiceLinkedRole` Berechtigung zu der von Step Functions verwendeten IAM-Rolle hinzufügen. Weitere Informationen finden Sie unter [Verwenden von serviceverknüpften Rollen](https://docs.aws.amazon.com/eks/latest/userguide/using-service-linked-roles.html) im *Amazon EKS-Benutzerhandbuch*.

    Amazon EKS on Fargate ist möglicherweise nicht in allen Regionen verfügbar. Informationen zur regionalen Verfügbarkeit finden Sie im Abschnitt über [Fargate](https://docs.aws.amazon.com/eks/latest/userguide/fargate.html) im *Amazon EKS-Benutzerhandbuch*.

    Die von Step Functions verwendete IAM-Rolle muss über `iam:PassRole` Berechtigungen verfügen, um die IAM-Rolle für die Pod-Ausführung an Amazon EKS weiterzugeben. Weitere Informationen finden Sie unter [Pod-Ausführungsrolle](https://docs.aws.amazon.com/eks/latest/userguide/pod-execution-role.html) im *Amazon EKS-Benutzerhandbuch*. 
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteFargateProfile.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteFargateProfile.html)
  +  [Erforderliche Syntax](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteFargateProfile.html#API_DeleteFargateProfile_RequestSyntax) 
  +  [Antwortsyntax](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteFargateProfile.html#API_DeleteFargateProfile_ResponseSyntax) 
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateNodegroup.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateNodegroup.html)
  +  [Erforderliche Syntax](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateNodegroup.html#API_CreateNodegroup_RequestSyntax) 
  +  [Antwortsyntax](https://docs.aws.amazon.com/eks/latest/APIReference/API_CreateNodegroup.html#API_CreateNodegroup_ResponseSyntax) 

    Amazon EKS verwendet serviceverknüpfte Rollen, die die Berechtigungen enthalten, die Amazon EKS benötigt, um andere Services in Ihrem Namen aufzurufen. Wenn diese serviceverknüpften Rollen noch nicht in Ihrem Konto vorhanden sind, müssen Sie die `iam:CreateServiceLinkedRole` Berechtigung zu der von Step Functions verwendeten IAM-Rolle hinzufügen. Weitere Informationen finden Sie unter [Verwenden von serviceverknüpften Rollen](https://docs.aws.amazon.com/eks/latest/userguide/using-service-linked-roles.html) im *Amazon EKS-Benutzerhandbuch*. 

    Die von Step Functions verwendete IAM-Rolle muss über `iam:PassRole` Berechtigungen verfügen, um die Knoten-IAM-Rolle an Amazon EKS weiterzugeben. Weitere Informationen finden Sie unter [Verwenden von serviceverknüpften Rollen](https://docs.aws.amazon.com/eks/latest/userguide/create-node-role.html) im *Amazon EKS-Benutzerhandbuch*.
+ [https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteNodegroup.html](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteNodegroup.html)
  +  [Erforderliche Syntax](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteNodegroup.html#API_DeleteNodegroup_RequestSyntax) 
  +  [Antwortsyntax](https://docs.aws.amazon.com/eks/latest/APIReference/API_DeleteNodegroup.html#API_DeleteNodegroup_ResponseSyntax) 

Das Folgende beinhaltet einen`Task`, der einen Amazon EKS-Cluster erstellt.

```
{
  "StartAt": "CreateCluster.sync",
  "States": {
    "CreateCluster.sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:createCluster.sync",
      "Arguments": {
        "Name": "MyCluster",
        "ResourcesVpcConfig": {
          "SubnetIds": [
            "subnet-053e7c47012341234",
            "subnet-027cfea4b12341234"
          ]
        },
        "RoleArn": "arn:aws:iam::account-id:role/MyEKSClusterRole"
      },
      "End": true
    }
  }
}
```

Im Folgenden wird ein `Task` Status beschrieben, der einen Amazon EKS-Cluster löscht.

```
{
  "StartAt": "DeleteCluster.sync",
  "States": {
    "DeleteCluster.sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:deleteCluster.sync",
      "Arguments": {
        "Name": "MyCluster"
      },
      "End": true
    }
  }
}
```

Im Folgenden wird ein `Task` Bundesstaat beschrieben, der ein Fargate-Profil erstellt.

```
{
  "StartAt": "CreateFargateProfile.sync",
  "States": {
    "CreateFargateProfile.sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:createFargateProfile.sync",
      "Arguments": {
        "ClusterName": "MyCluster",
        "FargateProfileName": "MyFargateProfile",
        "PodExecutionRoleArn": "arn:aws:iam::account-id:role/MyFargatePodExecutionRole",
        "Selectors": [{
            "Namespace": "my-namespace",
            "Labels": { "my-label": "my-value" }
          }]
      },
      "End": true
    }
  }
}
```

Das Folgende beinhaltet einen `Task` Status, der ein Fargate-Profil löscht.

```
{
  "StartAt": "DeleteFargateProfile.sync",
  "States": {
    "DeleteFargateProfile.sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:deleteFargateProfile.sync",
      "Arguments": {
        "ClusterName": "MyCluster",
        "FargateProfileName": "MyFargateProfile"
      },
      "End": true
    }
  }
}
```

Im Folgenden wird ein `Task` Status beschrieben, der eine Knotengruppe erstellt.

```
{
  "StartAt": "CreateNodegroup.sync",
  "States": {
    "CreateNodegroup.sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:createNodegroup.sync",
      "Arguments": {
        "ClusterName": "MyCluster",
        "NodegroupName": "MyNodegroup",
        "NodeRole": "arn:aws:iam::account-id:role/MyNodeInstanceRole",
        "Subnets": ["subnet-09fb51df01234", "subnet-027cfea4b1234"] 
      },
      "End": true
    }
  }
}
```

Das Folgende beinhaltet einen `Task` Status, der eine Knotengruppe löscht.

```
{
  "StartAt": "DeleteNodegroup.sync",
  "States": {
    "DeleteNodegroup.sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:deleteNodegroup.sync",
      "Arguments": {
        "ClusterName": "MyCluster",
        "NodegroupName": "MyNodegroup"
      },
      "End": true
    }
  }
}
```

## Berechtigungen
<a name="connect-eks-permissions"></a>

Wenn ein Amazon EKS-Cluster mithilfe der `eks:createCluster` Service-Integration erstellt wird, wird die IAM-Rolle als Administrator mit Berechtigungen zur Kubernetes-RBAC-Autorisierungstabelle hinzugefügt. `system:masters` Anfänglich kann nur diese IAM-Entität den Kubernetes-API-Server aufrufen. Beispielsweise können Sie **kubectl nicht verwenden, um mit Ihrem Kubernetes-API-Server** zu interagieren, es sei denn, Sie übernehmen dieselbe Rolle wie Ihre Step Functions Functions-Zustandsmaschine oder wenn Sie Kubernetes so konfigurieren, dass es zusätzlichen IAM-Entitäten Berechtigungen erteilt. Weitere Informationen finden Sie unter [Verwalten von Benutzern oder IAM-Rollen für Ihren Cluster](https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html) im *Amazon EKS-Benutzerhandbuch*. 

Sie können Berechtigungen für zusätzliche IAM-Entitäten wie Benutzer oder Rollen hinzufügen, indem Sie sie dem Namespace `aws-auth` `ConfigMap` in the kube-system hinzufügen. Wenn Sie Ihren Cluster aus Step Functions erstellen, verwenden Sie die `eks:call` Serviceintegration. 

Im Folgenden finden Sie einen `Task` Status, der eine `aws-auth` `ConfigMap` IAM-Rolle `arn:aws:iam::account-id:role/my-role` erstellt `arn:aws:iam::account-id:user/my-user` und dem Benutzer eine `system:masters` entsprechende Berechtigung erteilt.

```
{
  "StartAt": "Add authorized user",
  "States": {
    "Add authorized user": {
      "Type": "Task",
      "Resource": "arn:aws:states:::eks:call",
      "Arguments": {
        "ClusterName": "MyCluster",
        "CertificateAuthority": "LS0tLS1CRUd...UtLS0tLQo=",
        "Endpoint": "https://444455556666.yl4.region.eks.amazonaws.com",
        "Method": "POST",
        "Path": "/api/v1/namespaces/kube-system/configmaps",
        "RequestBody": {
           "apiVersion": "v1",
           "kind": "ConfigMap",
           "metadata": {
              "name": "aws-auth",
              "namespace": "kube-system"
           },
           "data": {
             "mapUsers": "[{ \"userarn\": \"arn:aws:iam::account-id:user/my-user\", \"username\": \"my-user\", \"groups\": [ \"system:masters\" ] } ]",
             "mapRoles": "[{ \"rolearn\": \"arn:aws:iam::account-id:role/my-role\", \"username\": \"my-role\", \"groups\": [ \"system:masters\" ] } ]"
           }
        }
      },
      "End": true
    }
  }
```

**Anmerkung**  
Möglicherweise wird der ARN für eine IAM-Rolle in einem Format angezeigt, das den Pfad **/service-role/** enthält, z. B. `arn:aws:iam::account-id:role/service-role/my-role` Dieses Pfadtoken für die **Dienstrolle** sollte nicht enthalten sein, wenn die Rolle in aufgeführt wird. `aws-auth`

Wenn Ihr Cluster zum ersten Mal erstellt `aws-auth` `ConfigMap` wird, ist er nicht vorhanden, wird aber automatisch hinzugefügt, wenn Sie ein Fargate-Profil erstellen. Sie können den aktuellen Wert von abrufen`aws-auth`, die zusätzlichen Berechtigungen und `PUT` eine neue Version hinzufügen. Es ist normalerweise einfacher, es `aws-auth` vor dem Fargate-Profil zu erstellen.

Wenn Ihr Cluster außerhalb von Step Functions erstellt wurde, können Sie **kubectl so konfigurieren, dass es mit Ihrem Kubernetes-API-Server** kommuniziert. Erstellen Sie dann einen neuen `aws-auth` `ConfigMap` mit `kubectl apply -f aws-auth.yaml` oder bearbeiten Sie einen, der bereits vorhanden ist, mit. `kubectl edit -n kube-system configmap/aws-auth` Weitere Informationen finden Sie unter:
+  [Erstellen Sie im Amazon EKS-Benutzerhandbuch eine kubeconfig für Amazon](https://docs.aws.amazon.com/eks/latest/userguide/create-kubeconfig.html) *EKS*. 
+  [Verwaltung von Benutzern oder IAM-Rollen für Ihren Cluster](https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html) im *Amazon EKS-Benutzerhandbuch*. 

Wenn Ihre IAM-Rolle nicht über ausreichende Berechtigungen in Kubernetes verfügt, schlagen die `eks:call` oder `eks:runJob` Service-Integrationen mit dem folgenden Fehler fehl:

```
Error:
EKS.401

Cause:
{
  "ResponseBody": {
    "kind": "Status",
    "apiVersion": "v1",
    "metadata": {},
    "status": "Failure",
    "message": "Unauthorized",
    "reason": "Unauthorized",
    "code": 401
  },
  "StatusCode": 401,
  "StatusText": "Unauthorized"
}
```

## IAM-Richtlinien für das Aufrufen von Amazon EKS
<a name="eks-iam"></a>

Die folgenden Beispielvorlagen zeigen, wie IAM-Richtlinien auf der Grundlage der Ressourcen in Ihrer State-Machine-Definition AWS Step Functions generiert werden. Weitere Informationen erhalten Sie unter [So generiert Step Functions IAM-Richtlinien für integrierte Dienste](service-integration-iam-templates.md) und [Entdecken Sie Serviceintegrationsmuster in Step Functions](connect-to-resource.md).

### `CreateCluster`
<a name="eks-iam-createcluster"></a>

*Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "eks:CreateCluster"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "eks:DescribeCluster",
                "eks:DeleteCluster"
            ],
            "Resource": "arn:aws:eks:us-east-1:444455556666:cluster/*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::444455556666:role/StepFunctionsSample-EKSClusterManag-EKSServiceRole-ANPAJ2UCCR6DPCEXAMPLE"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "eks.amazonaws.com"
                }
            }
        }
    ]
}
```

```


```

### `CreateNodeGroup`
<a name="eks-iam-createnodegroup"></a>

*Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeSubnets",
                "eks:CreateNodegroup"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "eks:DescribeNodegroup",
                "eks:DeleteNodegroup"
            ],
            "Resource": "arn:aws:eks:us-east-1:444455556666:nodegroup/*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "iam:GetRole",
                "iam:ListAttachedRolePolicies"
            ],
            "Resource": "arn:aws:iam::444455556666:role/*"
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::444455556666:role/StepFunctionsSample-EKSClusterMan-NodeInstanceRole-ANPAJ2UCCR6DPCEXAMPLE"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "eks.amazonaws.com"
                }
            }
        }
    ]
}
```

### `DeleteCluster`
<a name="eks-iam-deletecluster"></a>

*Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "eks:DeleteCluster",
                "eks:DescribeCluster"
            ],
            "Resource": [
                "arn:aws:eks:us-east-1:444455556666:cluster/ExampleCluster"
            ]
        }
    ]
}
```

### `DeleteNodegroup`
<a name="eks-iam-deletenodegroup"></a>

*Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "eks:DeleteNodegroup",
                "eks:DescribeNodegroup"
            ],
            "Resource": [
                "arn:aws:eks:us-east-1:444455556666:nodegroup/ExampleCluster/ExampleNodegroup/*"
            ]
        }
    ]
}
```

Weitere Informationen zur Verwendung von Amazon EKS mit Step Functions finden Sie unter[Amazon EKS-Cluster mit Step Functions erstellen und verwalten](#connect-eks).

# Amazon EMR-Cluster mit Step Functions erstellen und verwalten
<a name="connect-emr"></a>

Erfahren Sie, wie Sie mithilfe der bereitgestellten Amazon EMR-Serviceintegration eine Integration AWS Step Functions mit Amazon EMR durchführen. APIs Die Serviceintegration APIs ähnelt der entsprechenden Amazon EMR APIs, mit einigen Unterschieden in den Feldern, die übergeben werden, und in den Antworten, die zurückgegeben werden.

Informationen zur Integration mit AWS Diensten in Step Functions finden Sie unter [Integrieren von -Services](integrate-services.md) und[Übergeben von Parametern an eine Service-API in Step Functions](connect-parameters.md).

**Hauptmerkmale der optimierten Amazon EMR-Integration**  
Die optimierte Amazon EMR-Serviceintegration umfasst ein benutzerdefiniertes Set APIs , das das zugrunde liegende Amazon EMR umschließt APIs, wie unten beschrieben. Aus diesem Grund unterscheidet es sich erheblich von der Amazon EMR AWS SDK-Serviceintegration.
Das [Ausführen einer Aufgabe (.sync)](connect-to-resource.md#connect-sync) Integrationsmuster wird unterstützt.

Step Functions beendet einen Amazon EMR-Cluster nicht automatisch, wenn die Ausführung gestoppt wird. Wenn Ihr State Machine stoppt, bevor Ihr Amazon EMR-Cluster beendet wurde, läuft Ihr Cluster möglicherweise auf unbestimmte Zeit weiter und es können zusätzliche Gebühren anfallen. Um dies zu vermeiden, stellen Sie sicher, dass jeder Amazon EMR-Cluster, den Sie erstellen, ordnungsgemäß beendet wird. Weitere Informationen finden Sie unter:
+ [Steuern Sie die Clusterbeendigung](https://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-plan-termination.html) im Amazon EMR-Benutzerhandbuch.
+ Der [Ausführen einer Aufgabe (.sync)](connect-to-resource.md#connect-sync) Abschnitt Serviceintegrationsmuster.

**Anmerkung**  
Ab sofort `emr-5.28.0` können Sie den Parameter `StepConcurrencyLevel` beim Erstellen eines Clusters angeben, damit mehrere Schritte parallel auf einem einzelnen Cluster ausgeführt werden können. Sie können die Step-Funktionen `Map` und `Parallel` -Status verwenden, um Arbeiten parallel an den Cluster einzureichen.

Die Verfügbarkeit der Amazon EMR-Serviceintegration hängt von der Verfügbarkeit von Amazon APIs EMR ab. Informationen zu Einschränkungen in speziellen Regionen finden Sie in der [Amazon EMR-Dokumentation](https://docs.aws.amazon.com//govcloud-us/latest/UserGuide/govcloud-emr.html).

**Anmerkung**  
Für die Integration mit Amazon EMR verfügt Step Functions über eine fest codierte Jobabfragefrequenz von 60 Sekunden für die ersten 10 Minuten und danach 300 Sekunden.

## Optimiertes Amazon EMR APIs
<a name="connect-emr-api"></a>

In der folgenden Tabelle werden die Unterschiede zwischen den einzelnen Amazon EMR-Serviceintegrations-APIs und den entsprechenden Amazon APIs EMR-APIs beschrieben.


| API für die Amazon EMR-Serviceintegration | Entsprechende EMR-API | Unterschiede | 
| --- | --- | --- | 
| createCluster Erstellt und startet einen Cluster (Auftragsverlauf).  Amazon EMR ist direkt mit einer speziellen Art von IAM-Rolle verknüpft, die als serviceverknüpfte Rolle bezeichnet wird. Damit `createCluster` und `createCluster.sync` funktionieren, müssen Sie die erforderlichen Berechtigungen zum Erstellen der serviceverknüpften Rolle `AWSServiceRoleForEMRCleanup` konfiguriert haben. Weitere Informationen dazu, einschließlich einer Erklärung, die Sie zu Ihrer IAM-Berechtigungsrichtlinie hinzufügen können, finden Sie unter [Verwenden der serviceverknüpften Rolle für Amazon](https://docs.aws.amazon.com/emr/latest/ManagementGuide/using-service-linked-roles.html) EMR.  | [runJobFlow](https://docs.aws.amazon.com/emr/latest/APIReference/API_RunJobFlow.html) | createClusterverwendet dieselbe Anfragesyntax wie [runJobFlow](https://docs.aws.amazon.com/emr/latest/APIReference/API_RunJobFlow.html), mit Ausnahme der folgenden: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/step-functions/latest/dg/connect-emr.html)Die Antwort lautet: <pre>{<br />  "ClusterId": "string"<br />}</pre> Amazon EMR verwendet Folgendes: <pre>{<br />  "JobFlowId": "string"<br />}</pre>  | 
| createCluster.sync Erstellt und startet einen Cluster (Auftragsverlauf).  | [runJobFlow](https://docs.aws.amazon.com/emr/latest/APIReference/API_RunJobFlow.html) | Entspricht createCluster, wartet aber darauf, dass der Cluster den Zustand WAITING erreicht. | 
| setClusterTerminationSchutz Sperrt einen Cluster (Auftragsablauf), sodass die EC2 Instances im Cluster nicht durch Benutzereingriffe, einen API-Aufruf oder einen Job-Flow-Fehler beendet werden können. | [setTerminationProtection](https://docs.aws.amazon.com/emr/latest/APIReference/API_SetTerminationProtection.html) | Anforderung verwendet Folgendes:<pre>{<br />  "ClusterId": "string"<br />}</pre> Amazon EMR verwendet Folgendes:<pre>{<br />  "JobFlowIds": ["string"]<br />}</pre>  | 
| terminateCluster Beendet einen Cluster (Auftragsverlauf).  | [terminateJobFlows](https://docs.aws.amazon.com/emr/latest/APIReference/API_TerminateJobFlows.html) | Anforderung verwendet Folgendes:<pre>{<br />  "ClusterId": "string"<br />}</pre> Amazon EMR verwendet Folgendes:<pre>{<br />  "JobFlowIds": ["string"]<br />}</pre> | 
| terminateCluster.syncBeendet einen Cluster (Auftragsverlauf). | [terminateJobFlows](https://docs.aws.amazon.com/emr/latest/APIReference/API_TerminateJobFlows.html) | Entspricht terminateCluster, wartet aber auf den Abschluss des Clusters. | 
| addStep Fügt einem ausgeführten Cluster einen neuen Schritt hinzu. Optional können Sie den `[ExecutionRoleArn](https://docs.aws.amazon.com/emr/latest/APIReference/API_AddJobFlowSteps.html#EMR-AddJobFlowSteps-request-ExecutionRoleArn)` Parameter auch angeben, während Sie diese API verwenden. | [addJobFlowSchritte](https://docs.aws.amazon.com/emr/latest/APIReference/API_AddJobFlowSteps.html) | Die Anfrage verwendet den Schlüssel"ClusterId". Amazon EMR verwendet"JobFlowId". Anforderung verwendet einen einzelnen Schritt.<pre>{<br />  "Step": <"StepConfig object"><br />}</pre> Amazon EMR verwendet Folgendes:<pre>{<br />  "Steps": [<StepConfig objects>]<br />}</pre> Die Antwort lautet:<pre>{<br />  "StepId": "string"<br />}</pre> Amazon EMR gibt Folgendes zurück:<pre>{<br />  "StepIds": [<strings>]<br />}</pre>  | 
| addStep.sync Fügt einem ausgeführten Cluster einen neuen Schritt hinzu. Optional können Sie den `[ExecutionRoleArn](https://docs.aws.amazon.com/emr/latest/APIReference/API_AddJobFlowSteps.html#EMR-AddJobFlowSteps-request-ExecutionRoleArn)` Parameter auch angeben, während Sie diese API verwenden. | [addJobFlowSchritte](https://docs.aws.amazon.com/emr/latest/APIReference/API_AddJobFlowSteps.html) | Wie addStep, wartet aber auf den Abschluss des Schrittes. | 
| cancelStep Bricht einen ausstehenden Schritt in einem laufenden Cluster ab. | [cancelSteps](https://docs.aws.amazon.com/emr/latest/APIReference/API_CancelSteps.html) |  Anforderung verwendet Folgendes:<pre>{<br />  "StepId": "string"<br />}</pre> Amazon EMR verwendet Folgendes:<pre>{<br />  "StepIds": [<strings>]<br />}</pre> Die Antwort lautet:<pre>{<br />  "CancelStepsInfo": <CancelStepsInfo object><br />}</pre> Amazon EMR verwendet Folgendes:<pre>{<br />  "CancelStepsInfoList": [<CancelStepsInfo objects>]<br />}</pre>  | 
| modifyInstanceFleetByName Ändert die Ziel-On-Demand- und Ziel-Spot-Kapazitäten für die Instance-Flotte mit dem angegebenen `InstanceFleetName`. | [modifyInstanceFleet](https://docs.aws.amazon.com/emr/latest/APIReference/API_ModifyInstanceFleet.html) | Die Anforderung entspricht der für modifyInstanceFleet, mit Ausnahme von Folgendem: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/step-functions/latest/dg/connect-emr.html)  | 
| modifyInstanceGroupByName Ändert die Anzahl der Knoten und Konfigurationseinstellungen einer Instance-Gruppe. | [modifyInstanceGroups](https://docs.aws.amazon.com/emr/latest/APIReference/API_ModifyInstanceGroups.html) | Anforderung lautet:<pre>{<br />  "ClusterId": "string",<br />  "InstanceGroup": <InstanceGroupModifyConfig object><br />}</pre> Amazon EMR verwendet eine Liste: <pre>{<br />  "ClusterId": ["string"],<br />  "InstanceGroups": [<InstanceGroupModifyConfig objects>]<br />}</pre> Innerhalb des Objekts `InstanceGroupModifyConfig` ist das Feld `InstanceGroupId` nicht zulässig. Das neue Feld `InstanceGroupName` wurde hinzugefügt. Zur Laufzeit wird die `InstanceGroupId` automatisch anhand der Serviceintegration bestimmt, indem `ListInstanceGroups` aufgerufen und das Ergebnis analysiert wird.  | 

## Beispiel für einen Arbeitsablauf
<a name="connect-emr-api-examples"></a>

Im Folgenden finden Sie einen `Task`-Zustand, der einen Cluster erstellt.

```
"Create_Cluster": {
    "Type": "Task",
    "Resource": "arn:aws:states:::elasticmapreduce:createCluster.sync",
    "Arguments": {
        "Name": "MyWorkflowCluster",
        "VisibleToAllUsers": true,
        "ReleaseLabel": "emr-5.28.0",
        "Applications": [
            {
                "Name": "Hive"
            }
        ],
        "ServiceRole": "EMR_DefaultRole",
        "JobFlowRole": "EMR_EC2_DefaultRole",
        "LogUri": "s3n://aws-logs-account-id-us-east-1/elasticmapreduce/",
        "Instances": {
            "KeepJobFlowAliveWhenNoSteps": true,
            "InstanceFleets": [
                {
                    "InstanceFleetType": "MASTER",
                    "Name": "MASTER",   
                    "TargetOnDemandCapacity": 1,
                    "InstanceTypeConfigs": [
                        {
                            "InstanceType": "m4.xlarge"
                        }
                    ]
                },
                {
                    "InstanceFleetType": "CORE",
                    "Name": "CORE",
                    "TargetOnDemandCapacity": 1,
                    "InstanceTypeConfigs": [
                        {
                            "InstanceType": "m4.xlarge"
                        }
                    ]
                }
            ]
        }
    },
    "End": true
}
```

Im Folgenden finden Sie einen `Task`-Zustand, der den Kündigungsschutz ermöglicht. 

```
"Enable_Termination_Protection": {
    "Type": "Task",
    "Resource": "arn:aws:states:::elasticmapreduce:setClusterTerminationProtection",
    "Arguments": {
        "ClusterId": "{% $ClusterId %}",
        "TerminationProtected": true
    },
    "End": true
}
```

Im Folgenden finden Sie einen `Task`-Zustand, der einen Schritt an einen Cluster sendet. 

```
"Step_One": {
    "Type": "Task",
    "Resource": "arn:aws:states:::elasticmapreduce:addStep.sync",
    "Arguments": {
        "ClusterId": "{% $ClusterId %}",
        "ExecutionRoleArn": "arn:aws:iam::account-id:role/myEMR-execution-role",
        "Step": {
            "Name": "The first step",
            "ActionOnFailure": "TERMINATE_CLUSTER",
            "HadoopJarStep": {
                "Jar": "command-runner.jar",
                "Args": [
                    "hive-script",
                    "--run-hive-script",
                    "--args",
                    "-f",
                    "s3://region.elasticmapreduce.samples/cloudfront/code/Hive_CloudFront.q",
                    "-d",
                    "INPUT=s3://region.elasticmapreduce.samples",
                    "-d",
                    "OUTPUT=s3://<amzn-s3-demo-bucket>/MyHiveQueryResults/"
                ]
            }
        }
    },
    "End": true
}
```

Im Folgenden finden Sie einen `Task`-Zustand, der einen Schritt abbricht. 

```
"Cancel_Step_One": {
    "Type": "Task",
    "Resource": "arn:aws:states:::elasticmapreduce:cancelStep",
    "Arguments": {
        "ClusterId": "{% $ClusterId %}",
        "StepId": "{% $AddStepsResult.StepId %}"
    },
    "End": true
}
```

Im Folgenden finden Sie einen `Task`-Zustand, der einen Cluster beendet. 

```
"Terminate_Cluster": {
    "Type": "Task",
    "Resource": "arn:aws:states:::elasticmapreduce:terminateCluster.sync",
    "Arguments": {
        "ClusterId": "{% $ClusterId %}",
    },
    "End": true
}
```

Im Folgenden finden Sie einen `Task`-Zustand, der einen Cluster für eine Instance-Gruppe nach oben oder unten skaliert.

```
"ModifyInstanceGroupByName": {
    "Type": "Task",
    "Resource": "arn:aws:states:::elasticmapreduce:modifyInstanceGroupByName",
    "Arguments": {
        "ClusterId": "j-account-id3",
        "InstanceGroupName": "MyCoreGroup",
        "InstanceGroup": {
            "InstanceCount": 8
        }
    },
    "End": true
}
```

Im Folgenden finden Sie einen `Task`-Zustand, der einen Cluster für eine Instance-Flotte nach oben oder unten skaliert.

```
"ModifyInstanceFleetByName": {
    "Type": "Task",
    "Resource": "arn:aws:states:::elasticmapreduce:modifyInstanceFleetByName",
    "Arguments": {
        "ClusterId": "j-account-id3",
        "InstanceFleetName": "MyCoreFleet",
        "InstanceFleet": {
            "TargetOnDemandCapacity": 8,
            "TargetSpotCapacity": 0
        }
    },
    "End": true
}
```

## IAM-Richtlinien für das Aufrufen von Amazon EMR
<a name="emr-iam"></a>

Die folgenden Beispielvorlagen zeigen, wie IAM-Richtlinien auf der Grundlage der Ressourcen in Ihrer State-Machine-Definition AWS Step Functions generiert werden. Weitere Informationen erhalten Sie unter [So generiert Step Functions IAM-Richtlinien für integrierte Dienste](service-integration-iam-templates.md) und [Entdecken Sie Serviceintegrationsmuster in Step Functions](connect-to-resource.md).

### `addStep`
<a name="emr-iam-addstep"></a>

*Statische Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "elasticmapreduce:AddJobFlowSteps",
                "elasticmapreduce:DescribeStep",
                "elasticmapreduce:CancelSteps"
            ],
            "Resource": [
                "arn:aws:elasticmapreduce:us-east-1:123456789012:cluster/clusterId"
            ]
        }
    ]
}
```

*Dynamische Ressourcen*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:AddJobFlowSteps",
        "elasticmapreduce:DescribeStep",
        "elasticmapreduce:CancelSteps"
      ],
      "Resource": "arn:aws:elasticmapreduce:*:*:cluster/*"
    }
  ]
}
```

### `cancelStep`
<a name="emr-iam-cancelstep"></a>

*Statische Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "elasticmapreduce:CancelSteps",
            "Resource": [
                "arn:aws:elasticmapreduce:us-east-1:123456789012:cluster/myCluster-id"
            ]
        }
    ]
}
```

*Dynamische Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "elasticmapreduce:CancelSteps",
            "Resource": "arn:aws:elasticmapreduce:*:*:cluster/*"
        }
    ]
}
```

### `createCluster`
<a name="emr-iam-createcluster"></a>

*Statische Ressourcen*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:RunJobFlow",
        "elasticmapreduce:DescribeCluster",
        "elasticmapreduce:TerminateJobFlows"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": "iam:PassRole",
      "Resource": [
        "arn:aws:iam::123456789012:role/myRoleName"
      ]
    }
  ]
}
```

### `setClusterTerminationProtection`
<a name="emr-iam-clusterterminationprotection"></a>

*Statische Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "elasticmapreduce:SetTerminationProtection",
            "Resource": [
                "arn:aws:elasticmapreduce:us-east-1:123456789012:cluster/myCluster-id"
            ]
        }
    ]
}
```

*Dynamische Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "elasticmapreduce:SetTerminationProtection",
            "Resource": "arn:aws:elasticmapreduce:*:*:cluster/*"
        }
    ]
}
```

### `modifyInstanceFleetByName`
<a name="emr-iam-modifyinstancefleetbyname"></a>

*Statische Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "elasticmapreduce:ModifyInstanceFleet",
                "elasticmapreduce:ListInstanceFleets"
            ],
            "Resource": [
                "arn:aws:elasticmapreduce:us-east-1:123456789012:cluster/myCluster-id"
            ]
        }
    ]
}
```

*Dynamische Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "elasticmapreduce:ModifyInstanceFleet",
                "elasticmapreduce:ListInstanceFleets"
            ],
            "Resource": "arn:aws:elasticmapreduce:*:*:cluster/*"
        }
    ]
}
```

### `modifyInstanceGroupByName`
<a name="emr-iam-modifyinstancegroupbyname"></a>

*Statische Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "elasticmapreduce:ModifyInstanceGroups",
                "elasticmapreduce:ListInstanceGroups"
            ],
            "Resource": [
                "arn:aws:elasticmapreduce:us-east-1:123456789012:cluster/myCluster-id"
            ]
        }
    ]
}
```

*Dynamische Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "elasticmapreduce:ModifyInstanceGroups",
                "elasticmapreduce:ListInstanceGroups"
            ],
            "Resource": "*"
        }
    ]
}
```

### `terminateCluster`
<a name="emr-iam-terminatecluster"></a>

*Statische Ressourcen*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:TerminateJobFlows",
        "elasticmapreduce:DescribeCluster"
      ],
      "Resource": [
        "arn:aws:elasticmapreduce:us-east-1:123456789012:cluster/myCluster-id"
      ]
    }
  ]
}
```

*Dynamische Ressourcen*

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticmapreduce:TerminateJobFlows",
        "elasticmapreduce:DescribeCluster"
      ],
      "Resource": "arn:aws:elasticmapreduce:*:*:cluster/*"
    }
  ]
}
```

# Erstellen und verwalten Sie Amazon EMR-Cluster auf EKS mit AWS Step Functions
<a name="connect-emr-eks"></a>

Erfahren Sie, wie Sie mithilfe der Serviceintegration Amazon EMR on EKS eine Integration AWS Step Functions mit Amazon EMR on EKS durchführen. APIs Die Serviceintegration APIs entspricht der entsprechenden Amazon EMR auf EKS APIs, aber nicht alle APIs unterstützen alle Integrationsmuster, wie in der folgenden Tabelle dargestellt.

Informationen zur Integration mit AWS Diensten in Step Functions finden Sie unter [Integrieren von -Services](integrate-services.md) und[Übergeben von Parametern an eine Service-API in Step Functions](connect-parameters.md).

**Wie sich die optimierte Amazon EMR on EKS-Integration von der Amazon EMR on EKS AWS SDK-Integration unterscheidet**  
Das [Ausführen einer Aufgabe (.sync)](connect-to-resource.md#connect-sync) Integrationsmuster wird unterstützt.
Es gibt keine spezifischen Optimierungen für das [Request Response (Antwort anfordern)](connect-to-resource.md#connect-default) Integrationsmuster.
Das [Warten Sie auf einen Rückruf mit Task Token](connect-to-resource.md#connect-wait-token) Integrationsmuster wird nicht unterstützt.

**Anmerkung**  
Für die Integration mit Amazon EMR verfügt Step Functions über eine fest codierte Jobabfragefrequenz von 60 Sekunden für die ersten 10 Minuten und danach 300 Sekunden.


| API | Antwort anfordern | Führen Sie einen Job aus (.sync) | 
| --- | --- | --- | 
| CreateVirtualCluster | Unterstützt | Wird nicht unterstützt | 
| DeleteVirtualCluster | Unterstützt | Unterstützt | 
| StartJobRun | Unterstützt | Unterstützt | 

Unterstütztes Amazon EMR auf EKS APIs:

**Quote für Eingabe- oder Ergebnisdaten**  
Beim Senden oder Empfangen von Daten zwischen Diensten beträgt die maximale Eingabe oder das maximale Ergebnis für eine Aufgabe 256 KiB an Daten als UTF-8-kodierte Zeichenfolge. Siehe [Kontingente im Zusammenhang mit der Ausführung von Zustandsmaschinen](service-quotas.md#service-limits-state-machine-executions).


+ [https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_CreateVirtualCluster.html](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_CreateVirtualCluster.html)
  + [Erforderliche Syntax](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_CreateVirtualCluster.html#API_CreateVirtualCluster_RequestSyntax)
  + [Unterstützte Parameter](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_CreateVirtualCluster.html#API_CreateVirtualCluster_RequestBody)
  + [Antwortsyntax](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_CreateVirtualCluster.html#API_CreateVirtualCluster_ResponseSyntax)
+ [https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_DeleteVirtualCluster.html](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_DeleteVirtualCluster.html)
  + [Erforderliche Syntax](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_DeleteVirtualCluster.html#API_DeleteVirtualCluster_RequestSyntax)
  + [Unterstützte Parameter](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_DeleteVirtualCluster.html#API_DeleteVirtualCluster_RequestParameters)
  + [Antwortsyntax](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_CreateVirtualCluster.html#API_CreateVirtualCluster_ResponseSyntax)
+ [https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_StartJobRun.html](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_StartJobRun.html)
  + [Erforderliche Syntax](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_StartJobRun.html#API_StartJobRun_RequestSyntax)
  + [Unterstützte Parameter](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_StartJobRun.html#API_StartJobRun_RequestParameters)
  + [Antwortsyntax](https://docs.aws.amazon.com/emr-on-eks/latest/APIReference/API_StartJobRun.html#API_StartJobRun_ResponseSyntax)

Im Folgenden wird ein `Task` Status beschrieben, der einen virtuellen Cluster erstellt.

```
"Create_Virtual_Cluster": {
  "Type": "Task",
  "Resource": "arn:aws:states:::emr-containers:createVirtualCluster",
  "Arguments": {
    "Name": "MyVirtualCluster",
    "ContainerProvider": {
      "Id": "EKSClusterName",
      "Type": "EKS",
      "Info": {
        "EksInfo": {
          "Namespace": "Namespace"
        }
      }
    }
  },
  "End": true
}
```

Im Folgenden wird ein `Task` Status beschrieben, der einen Auftrag an einen virtuellen Cluster weiterleitet und auf dessen Abschluss wartet.

```
"Submit_Job": {
    "Type": "Task",
    "Resource": "arn:aws:states:::emr-containers:startJobRun.sync",
    "Arguments": {
      "Name": "MyJobName",
      "VirtualClusterId": "{% $VirtualClusterId %}",
      "ExecutionRoleArn": "arn:aws:iam::<accountId>:role/job-execution-role",
      "ReleaseLabel": "emr-6.2.0-latest",
      "JobDriver": {
        "SparkSubmitJobDriver": {
          "EntryPoint": "s3://<amzn-s3-demo-bucket>/jobs/trip-count.py",
          "EntryPointArguments": [
            "60"
          ],
          "SparkSubmitParameters": "--conf spark.driver.cores=2 --conf spark.executor.instances=10 --conf spark.kubernetes.pyspark.pythonVersion=3 --conf spark.executor.memory=10G --conf spark.driver.memory=10G --conf spark.executor.cores=1 --conf spark.dynamicAllocation.enabled=false"
        }
      },
      "ConfigurationOverrides": {
        "ApplicationConfiguration": [
          {
            "Classification": "spark-defaults",
            "Properties": {
              "spark.executor.instances": "2",
              "spark.executor.memory": "2G"
            }
          }
        ],
        "MonitoringConfiguration": {
          "PersistentAppUI": "ENABLED",
          "CloudWatchMonitoringConfiguration": {
            "LogGroupName": "MyLogGroupName",
            "LogStreamNamePrefix": "MyLogStreamNamePrefix"
          },
          "S3MonitoringConfiguration": {
            "LogUri": "s3://<amzn-s3-demo-logging-bucket1>"
          }
        }
      },
      "Tags": {
        "taskType": "jobName"
      }
    },
    "End": true
}
```

Der folgende Status beinhaltet einen `Task` Status, der einen virtuellen Cluster löscht und darauf wartet, dass der Löschvorgang abgeschlossen ist.

```
"Delete_Virtual_Cluster": {
  "Type": "Task",
  "Resource": "arn:aws:states:::emr-containers:deleteVirtualCluster.sync",
  "Arguments": {
    "Id": "{% $states.input.VirtualClusterId %}",
  },
  "End": true
}
```

Informationen zur Konfiguration von IAM Berechtigungen bei der Verwendung Step Functions mit anderen AWS Diensten finden Sie unter. [So generiert Step Functions IAM-Richtlinien für integrierte Dienste](service-integration-iam-templates.md)

# Amazon EMR ServerlessAnwendungen mit Step Functions erstellen und verwalten
<a name="connect-emr-serverless"></a>

Erfahren Sie, wie Sie mithilfe von Step Functions Anwendungen auf EMR Serverless erstellen, starten, beenden und löschen. Diese Seite listet die unterstützten `Task` Zustände auf APIs und bietet Beispielstatus für allgemeine Anwendungsfälle.

Informationen zur Integration mit AWS Diensten in Step Functions finden Sie unter [Integrieren von -Services](integrate-services.md) und[Übergeben von Parametern an eine Service-API in Step Functions](connect-parameters.md).

**Hauptmerkmale der optimierten EMR Serverless Integration**  
 Die optimierte EMR Serverless Serviceintegration besteht aus einem benutzerdefinierten Satz [APIs](#connect-emr-serverless-custom-apis), der den zugrunde liegenden Teil umschließt EMR Serverless APIs. Aufgrund dieser Anpassung unterscheidet sich die optimierte EMR Serverless Integration erheblich von der AWS SDK-Serviceintegration. 
Darüber hinaus unterstützt die optimierte EMR Serverless Integration das [Ausführen einer Aufgabe (.sync)](connect-to-resource.md#connect-sync) Integrationsmuster.
Das [Warten Sie auf einen Rückruf mit Task Token](connect-to-resource.md#connect-wait-token) Integrationsmuster wird **nicht** unterstützt.

## EMR ServerlessServiceintegration APIs
<a name="connect-emr-serverless-custom-apis"></a>

Für die Integration AWS Step Functions mit EMR Serverless können Sie die folgenden sechs EMR Serverless Serviceintegrationen verwenden APIs. Diese Serviceintegrationen APIs ähneln den entsprechenden EMR Serverless APIs, mit einigen Unterschieden in den Feldern, die übergeben werden, und in den Antworten, die zurückgegeben werden.

In der folgenden Tabelle werden die Unterschiede zwischen den einzelnen EMR Serverless Serviceintegrations-APIs und der entsprechenden EMR Serverless API beschrieben.


| EMR ServerlessAPI zur Serviceintegration | Entsprechende EMR Serverless API | Unterschiede | 
| --- | --- | --- | 
|  *Anwendung erstellen* Erstellt eine Anwendung EMR Serverlessist mit einem eindeutigen Rollentyp verknüpft, der als dienstbezogene IAM Rolle bezeichnet wird. Damit `createApplication` und `createApplication.sync` funktionieren, müssen Sie die erforderlichen Berechtigungen zum Erstellen der serviceverknüpften Rolle `AWSServiceRoleForAmazonEMRServerless` konfiguriert haben. Weitere Informationen dazu, einschließlich einer Erklärung, die Sie zu Ihrer IAM Berechtigungsrichtlinie hinzufügen können, finden Sie unter [Verwenden von dienstbezogenen Rollen](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/using-service-linked-roles.html) für. EMR Serverless  |  [CreateApplication](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_CreateApplication.html)  | Keine | 
|  *CreateApplication.Sync* Erstellt eine Anwendung  |  [CreateApplication](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_CreateApplication.html)  |  Keine Unterschiede zwischen den Anfragen und Antworten der API und der EMR Serverless EMR Serverless Service-Integrations-API. *CreateApplication.Sync* wartet jedoch darauf, dass die Anwendung den Status erreicht. `CREATED`  | 
|  *Anwendung starten* Startet eine angegebene Anwendung und initialisiert die Anfangskapazität der Anwendung, falls sie konfiguriert ist.  |  [StartApplication](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartApplication.html)  |  Die EMR Serverless API-Antwort enthält keine Daten, aber die API-Antwort für die EMR Serverless Serviceintegration enthält die folgenden Daten. <pre>{<br />  "ApplicationId": "string"<br />}</pre>  | 
|  *Starten Sie Application.Sync* Startet eine angegebene Anwendung und initialisiert die Anfangskapazität, falls sie konfiguriert ist.  |  [StartApplication](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartApplication.html)  |  Die EMR Serverless API-Antwort enthält keine Daten, aber die API-Antwort für die EMR Serverless Serviceintegration enthält die folgenden Daten. <pre>{<br />  "ApplicationId": "string"<br />}</pre> Außerdem wartet *StartApplication.Sync* darauf, dass die Anwendung den Status erreicht. `STARTED`  | 
|  *Anwendung beenden* Stoppt eine angegebene Anwendung und gibt die Anfangskapazität frei, falls sie konfiguriert ist. Alle geplanten und laufenden Jobs müssen abgeschlossen oder abgebrochen werden, bevor eine Anwendung gestoppt werden kann.  |  [StopApplication](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StopApplication.html)  |  Die EMR Serverless API-Antwort enthält keine Daten, aber die API-Antwort zur EMR Serverless Serviceintegration enthält die folgenden Daten. <pre>{<br />  "ApplicationId": "string"<br />}</pre>  | 
|  *StopApplication.Sync* Stoppt eine angegebene Anwendung und gibt die Anfangskapazität frei, falls sie konfiguriert ist. Alle geplanten und laufenden Jobs müssen abgeschlossen oder abgebrochen werden, bevor eine Anwendung gestoppt werden kann.  |  [StopApplication](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StopApplication.html)  |  Die EMR Serverless API-Antwort enthält keine Daten, aber die API-Antwort zur EMR Serverless Serviceintegration enthält die folgenden Daten. <pre>{<br />  "ApplicationId": "string"<br />}</pre> Außerdem wartet *StopApplication.Sync* darauf, dass die Anwendung den Status erreicht. `STOPPED`  | 
|  *Anwendung löschen* Löscht eine Anwendung. Eine Anwendung muss sich im `CREATED` Status `STOPPED` oder befinden, um gelöscht zu werden.  |  [DeleteApplication](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_DeleteApplication.html)  |  Die EMR Serverless API-Antwort enthält keine Daten, aber die API-Antwort für die EMR Serverless Serviceintegration enthält die folgenden Daten. <pre>{<br />  "ApplicationId": "string"<br />}</pre>  | 
|  *DeleteApplication.Sync* Löscht eine Anwendung. Eine Anwendung muss sich im `CREATED` Status `STOPPED` oder befinden, um gelöscht zu werden.  |  [DeleteApplication](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_DeleteApplication.html)  |  Die EMR Serverless API-Antwort enthält keine Daten, aber die API-Antwort für die EMR Serverless Serviceintegration enthält die folgenden Daten. <pre>{<br />  "ApplicationId": "string"<br />}</pre> Außerdem wartet *StopApplication.Sync* darauf, dass die Anwendung den Status erreicht. `TERMINATED`  | 
|  *startJobRun* Startet eine Auftragsausführung.  |  [StartJobRun](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartJobRun.html)  | Keine | 
|  *startJobRun.sync* Startet einen Joblauf.  |  [StartJobRun](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartJobRun.html)  |  Keine Unterschiede zwischen den Anfragen und Antworten der EMR Serverless API und der EMR Serverless Service-Integrations-API. *startJobRun.sync* wartet jedoch darauf, dass die Anwendung den Status erreicht. `SUCCESS`  | 
|  *cancelJobRun* Bricht die Ausführung eines Jobs ab.  |  [CancelJobRun](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_CancelJobRun.html)  | Keine | 
|  *cancelJobRun.sync* Bricht einen Joblauf ab.  |  [CancelJobRun](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_CancelJobRun.html)  |  Keine Unterschiede zwischen den Anfragen und Antworten der EMR Serverless API und der EMR Serverless Service-Integrations-API. *cancelJobRun.sync* wartet jedoch darauf, dass die Anwendung den Status erreicht. `CANCELLED`  | 

## Anwendungsfälle für die serverlose EMR-Integration
<a name="connect-emr-serverless-use-cases"></a>

Für die optimierte EMR Serverless Serviceintegration empfehlen wir, dass Sie eine einzelne Anwendung erstellen und diese Anwendung dann verwenden, um mehrere Jobs auszuführen. In einer einzigen Zustandsmaschine können Sie beispielsweise mehrere [startJobRun](https://docs.aws.amazon.com/emr-serverless/latest/APIReference/API_StartJobRun.html)Anfragen einschließen, die alle dieselbe Anwendung verwenden. Die folgenden [Workflow-Status der Aufgabe](state-task.md) Statusbeispiele zeigen Anwendungsfälle, in die eine EMR Serverless APIs Integration möglich istStep Functions. Informationen zu anderen Anwendungsfällen von EMR Serverless finden Sie unter [Was ist Amazon EMR Serverless](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/emr-serverless.html).

**Tipp**  
Ein Beispiel für eine Zustandsmaschine, die EMR Serverless zur Ausführung mehrerer Jobs integriert werden kann, finden Sie unter[Einen EMR Serverless Job ausführen](sample-emr-serverless-job.md).
+ [Erstellen einer Anwendung](#connect-emr-serverless-task-state-createapp)
+ [Starten Sie eine Anwendung](#connect-emr-serverless-task-state-startapp)
+ [Stoppen Sie eine Anwendung](#connect-emr-serverless-task-state-stopapp)
+ [Löschen einer Anwendung](#connect-emr-serverless-task-state-deleteapp)
+ [Starten Sie einen Job in einer Anwendung](#connect-emr-serverless-task-state-startjobrun)
+ [Stornieren Sie einen Job in einer Anwendung](#connect-emr-serverless-task-state-canceljobrun)

Weitere Informationen zur Konfiguration von IAM Berechtigungen bei der Verwendung Step Functions mit anderen AWS Diensten finden Sie unter[So generiert Step Functions IAM-Richtlinien für integrierte Dienste](service-integration-iam-templates.md).

Ersetzen Sie in den Beispielen, die in den folgenden Anwendungsfällen gezeigt werden, den *italicized* Text durch Ihre ressourcenspezifischen Informationen. Ersetzen Sie ihn beispielsweise *yourApplicationId* durch die ID Ihrer EMR Serverless Anwendung, z. B. `00yv7iv71inak893`

### Erstellen einer Anwendung
<a name="connect-emr-serverless-task-state-createapp"></a>

Im folgenden Beispiel für einen Task-Status wird eine Anwendung mithilfe der *CreateApplication.Sync-Dienstintegrations-API* erstellt.

```
"Create_Application": {
    "Type": "Task",
    "Resource": "arn:aws:states:::emr-serverless:createApplication.sync",
    "Arguments": {
        "Name": "MyApplication",
        "ReleaseLabel": "emr-6.9.0",
        "Type": "SPARK"
    },
    "End": true
}
```

### Starten Sie eine Anwendung
<a name="connect-emr-serverless-task-state-startapp"></a>

Im folgenden Beispiel für einen Task-Status wird eine Anwendung mithilfe der Dienstintegrations-API *StartApplication.Sync* gestartet.

```
"Start_Application": {
    "Type": "Task",
    "Resource": "arn:aws:states:::emr-serverless:startApplication.sync",
    "Arguments": {
        "ApplicationId": "yourApplicationId"
    },
    "End": true
}
```

### Stoppen Sie eine Anwendung
<a name="connect-emr-serverless-task-state-stopapp"></a>

Im folgenden Beispiel mit einem Task-Status wird eine Anwendung mithilfe der Service-Integrations-API *StopApplication.Sync* gestoppt.

```
"Stop_Application": {
    "Type": "Task",
    "Resource": "arn:aws:states:::emr-serverless:stopApplication.sync",
    "Arguments": {
        "ApplicationId": "yourApplicationId"
    },
    "End": true
}
```

### Löschen einer Anwendung
<a name="connect-emr-serverless-task-state-deleteapp"></a>

Im folgenden Beispiel für einen Task-Status wird eine Anwendung mithilfe der Serviceintegrations-API DeleteApplication.Sync *gelöscht*.

```
"Delete_Application": {
    "Type": "Task",
    "Resource": "arn:aws:states:::emr-serverless:deleteApplication.sync",
    "Arguments": {
        "ApplicationId": "yourApplicationId"
    },
    "End": true
}
```

### Starten Sie einen Job in einer Anwendung
<a name="connect-emr-serverless-task-state-startjobrun"></a>

Im folgenden Beispiel für den Aufgabenstatus wird ein Job in einer Anwendung mithilfe der Dienstintegrations-API *startJobRun.sync* gestartet.

```
"Start_Job": {
    "Type": "Task",
    "Resource": "arn:aws:states:::emr-serverless:startJobRun.sync",
    "Arguments": {
        "ApplicationId": "yourApplicationId",
        "ExecutionRoleArn": "arn:aws:iam::account-id:role/myEMRServerless-execution-role",
        "JobDriver": {
            "SparkSubmit": {
                "EntryPoint": "s3://<amzn-s3-demo-bucket>/sample.py",
                "EntryPointArguments": ["1"],
                "SparkSubmitParameters": "--conf spark.executor.cores=4 --conf spark.executor.memory=4g --conf spark.driver.cores=2 --conf spark.driver.memory=4g --conf spark.executor.instances=1"
            }
        }
    },
    "End": true
}
```

### Stornieren Sie einen Job in einer Anwendung
<a name="connect-emr-serverless-task-state-canceljobrun"></a>

Im folgenden Beispiel für den Aufgabenstatus wird ein Job in einer Anwendung mithilfe der Dienstintegrations-API für *cancelJobRun.sync* storniert.

```
"Cancel_Job": {
    "Type": "Task",
    "Resource": "arn:aws:states:::emr-serverless:cancelJobRun.sync",
    "Arguments": {
        "ApplicationId": "{% $states.input.ApplicationId %}",
        "JobRunId": "{% $states.input.JobRunId %}"
    },
    "End": true
}
```

## IAM-Richtlinien für Anrufe Amazon EMR Serverless
<a name="emr-serverless-iam"></a>

Wenn Sie eine Zustandsmaschine mithilfe der Konsole erstellen, Step Functions wird automatisch eine Ausführungsrolle für Ihre Zustandsmaschine mit den geringsten erforderlichen Rechten erstellt. Diese automatisch generierten IAM Rollen gelten für den, AWS-Region in dem Sie den Zustandsmaschine erstellen.

Die folgenden Beispielvorlagen zeigen, wie IAM-Richtlinien auf der Grundlage der Ressourcen in Ihrer State-Machine-Definition AWS Step Functions generiert werden. Weitere Informationen erhalten Sie unter [So generiert Step Functions IAM-Richtlinien für integrierte Dienste](service-integration-iam-templates.md) und [Entdecken Sie Serviceintegrationsmuster in Step Functions](connect-to-resource.md).

Wir empfehlen, bei der Erstellung von IAM Richtlinien keine Platzhalter in die Richtlinien aufzunehmen. Aus Sicherheitsgründen sollten Sie Ihre Richtlinien so weit wie möglich einschränken. Sie sollten dynamische Richtlinien nur verwenden, wenn bestimmte Eingabeparameter während der Laufzeit nicht bekannt sind.

Darüber hinaus sollten Administratorbenutzer vorsichtig sein, wenn sie Benutzern, die keine Administratoren sind, Ausführungsrollen für die Ausführung der Zustandsmaschinen zuweisen. Wir empfehlen, dass Sie PassRole-Richtlinien in die Ausführungsrollen aufnehmen, wenn Sie Richtlinien selbst erstellen. Wir empfehlen außerdem, die Kontextschlüssel `aws:SourceARN` und die `aws:SourceAccount` Kontextschlüssel zu den Ausführungsrollen hinzuzufügen.

### Beispiele für IAM-Richtlinien für die serverlose EMR-Integration mit Step Functions
<a name="emr-serverless-iam-policy-eg"></a>
+ [Beispiel für eine IAM-Richtlinie für CreateApplication](#emr-serverless-policy-createapp)
+ [Beispiel für eine IAM-Richtlinie für StartApplication](#emr-serverless-policy-startapp)
+ [Beispiel für eine IAM-Richtlinie für StopApplication](#emr-serverless-policy-stopapp)
+ [Beispiel für eine IAM-Richtlinie für DeleteApplication](#emr-serverless-policy-deleteapp)
+ [Beispiel für eine IAM-Richtlinie für StartJobRun](#emr-serverless-policy-startjobrun)
+ [Beispiel für eine IAM-Richtlinie für CancelJobRun](#emr-serverless-policy-canceljobrun)

#### Beispiel für eine IAM-Richtlinie für CreateApplication
<a name="emr-serverless-policy-createapp"></a>

Im Folgenden finden Sie ein Beispiel für eine IAM-Richtlinie für eine Zustandsmaschine mit einem CreateApplication [Workflow-Status der Aufgabe](state-task.md) Status.

**Anmerkung**  
Sie müssen die CreateServiceLinkedRole Berechtigungen in Ihren IAM-Richtlinien bei der Erstellung der allerersten Anwendung in Ihrem Konto angeben. Danach müssen Sie diese Berechtigung nicht mehr hinzufügen. Weitere Informationen dazu CreateServiceLinkedRole finden Sie [CreateServiceLinkedRole](https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateServiceLinkedRole.html)in der https://docs.aws.amazon.com/IAM/ aktuellsten APIReference Neuheiten/ /.

Statische und dynamische Ressourcen für die folgenden Richtlinien sind identisch.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "emr-serverless:CreateApplication"
            ],
            "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "emr-serverless:GetApplication",
                "emr-serverless:DeleteApplication"
            ],
            "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::123456789012:role/aws-service-role/ops.emr-serverless.amazonaws.com/AWSServiceRoleForAmazonEMRServerless*",
            "Condition": {
                "StringLike": {
                    "iam:AWSServiceName": "ops.emr-serverless.amazonaws.com"
                }
            }
        }
   ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   
   "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "emr-serverless:CreateApplication"
            ],
            "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iam:CreateServiceLinkedRole",
            "Resource": "arn:aws:iam::123456789012:role/aws-service-role/ops.emr-serverless.amazonaws.com/AWSServiceRoleForAmazonEMRServerless*",
            "Condition": {
                "StringLike": {
                    "iam:AWSServiceName": "ops.emr-serverless.amazonaws.com"
                }
            }
        }
    ]
}
```

------

#### Beispiel für eine IAM-Richtlinie für StartApplication
<a name="emr-serverless-policy-startapp"></a>

**Statische Ressourcen**  
Im Folgenden finden Sie Beispiele für IAM-Richtlinien für statische Ressourcen, wenn Sie eine Zustandsmaschine mit einem StartApplication [Workflow-Status der Aufgabe](state-task.md) Status verwenden.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StartApplication",
               "emr-serverless:GetApplication",
               "emr-serverless:StopApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StartApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId"
            ]
        }
    ]
}
```

------

**Dynamische Ressourcen**  
Im Folgenden finden Sie Beispiele für IAM-Richtlinien für dynamische Ressourcen, wenn Sie eine Zustandsmaschine mit einem StartApplication [Workflow-Status der Aufgabe](state-task.md) Status verwenden.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StartApplication",
               "emr-serverless:GetApplication",
               "emr-serverless:StopApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StartApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        }
    ]
}
```

------

#### Beispiel für eine IAM-Richtlinie für StopApplication
<a name="emr-serverless-policy-stopapp"></a>

**Statische Ressourcen**  
Im Folgenden finden Sie Beispiele für IAM-Richtlinien für statische Ressourcen, wenn Sie eine Zustandsmaschine mit einem StopApplication [Workflow-Status der Aufgabe](state-task.md) Status verwenden.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StopApplication",
               "emr-serverless:GetApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StopApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId"
            ]
        }
    ]
}
```

------

**Dynamische Ressourcen**  
Im Folgenden finden Sie Beispiele für IAM-Richtlinien für dynamische Ressourcen, wenn Sie eine Zustandsmaschine mit einem StopApplication [Workflow-Status der Aufgabe](state-task.md) Status verwenden.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StopApplication",
               "emr-serverless:GetApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StopApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        }
    ]
}
```

------

#### Beispiel für eine IAM-Richtlinie für DeleteApplication
<a name="emr-serverless-policy-deleteapp"></a>

**Statische Ressourcen**  
Im Folgenden finden Sie Beispiele für IAM-Richtlinien für statische Ressourcen, wenn Sie eine Zustandsmaschine mit einem DeleteApplication [Workflow-Status der Aufgabe](state-task.md) Status verwenden.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:DeleteApplication",
               "emr-serverless:GetApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:DeleteApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId"
            ]
        }
    ]
}
```

------

**Dynamische Ressourcen**  
Im Folgenden finden Sie Beispiele für IAM-Richtlinien für dynamische Ressourcen, wenn Sie eine Zustandsmaschine mit einem DeleteApplication [Workflow-Status der Aufgabe](state-task.md) Status verwenden.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:DeleteApplication",
               "emr-serverless:GetApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessApplicationRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:DeleteApplication"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        }
    ]
}
```

------

#### Beispiel für eine IAM-Richtlinie für StartJobRun
<a name="emr-serverless-policy-startjobrun"></a>

**Statische Ressourcen**  
Im Folgenden finden Sie Beispiele für IAM-Richtlinien für statische Ressourcen, wenn Sie eine Zustandsmaschine mit einem StartJobRun [Workflow-Status der Aufgabe](state-task.md) Status verwenden.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StartJobRun"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::123456789012:role/jobExecutionRoleArn"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "emr-serverless.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "emr-serverless:GetJobRun",
                "emr-serverless:CancelJobRun"
            ],
            "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId/jobruns/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessJobRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StartJobRun"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::123456789012:role/jobExecutionRoleArn"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "emr-serverless.amazonaws.com"
                }
            }
        }
    ]
}
```

------

**Dynamische Ressourcen**  
Im Folgenden finden Sie Beispiele für IAM-Richtlinien für dynamische Ressourcen, wenn Sie eine Zustandsmaschine mit einem StartJobRun [Workflow-Status der Aufgabe](state-task.md) Status verwenden.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StartJobRun",
               "emr-serverless:GetJobRun",
               "emr-serverless:CancelJobRun"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::123456789012:role/jobExecutionRoleArn"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "emr-serverless.amazonaws.com"
                }
            }
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessJobRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:StartJobRun"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::123456789012:role/jobExecutionRoleArn"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": "emr-serverless.amazonaws.com"
                }
            }
        }
    ]
}
```

------

#### Beispiel für eine IAM-Richtlinie für CancelJobRun
<a name="emr-serverless-policy-canceljobrun"></a>

**Statische Ressourcen**  
Im Folgenden finden Sie Beispiele für IAM-Richtlinien für statische Ressourcen, wenn Sie eine Zustandsmaschine mit einem CancelJobRun [Workflow-Status der Aufgabe](state-task.md) Status verwenden.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:CancelJobRun",
               "emr-serverless:GetJobRun"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId/jobruns/jobRunId"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessJobRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:CancelJobRun"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/applicationId/jobruns/jobRunId"
            ]
        }
    ]
}
```

------

**Dynamische Ressourcen**  
Im Folgenden finden Sie Beispiele für IAM-Richtlinien für dynamische Ressourcen, wenn Sie eine Zustandsmaschine mit einem CancelJobRun [Workflow-Status der Aufgabe](state-task.md) Status verwenden.

------
#### [ Run a Job (.sync) ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:CancelJobRun",
               "emr-serverless:GetJobRun"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForEMRServerlessJobRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement": [
        {
           "Effect": "Allow",
           "Action": [
               "emr-serverless:CancelJobRun"
            ],
           "Resource": [
                "arn:aws:emr-serverless:us-east-1:123456789012:/applications/*"
            ]
        }
    ]
}
```

------

# EventBridge Ereignisse mit Step Functions hinzufügen
<a name="connect-eventbridge"></a>

Step Functions bietet eine Service-Integrations-API für die Integration mit Amazon EventBridge. Erfahren Sie, wie Sie ereignisgesteuerte Anwendungen erstellen, indem Sie benutzerdefinierte Ereignisse direkt aus den Workflows von Step Functions senden.

Informationen zur Integration mit AWS Diensten in Step Functions finden Sie unter [Integrieren von -Services](integrate-services.md) und[Übergeben von Parametern an eine Service-API in Step Functions](connect-parameters.md).

**Hauptmerkmale der optimierten EventBridge Integration**  
Der Ausführungs-ARN und der State-Machine-ARN werden jeweils `PutEventsRequestEntry` automatisch an das jeweilige `Resources` Feld angehängt.
Wenn die Antwort von einen Wert ungleich Null `PutEvents` `FailedEntryCount` enthält, schlägt der `Task` Status mit dem Fehler fehl. `EventBridge.FailedEntry`

 Um die `PutEvents` API verwenden zu können, müssen Sie in Ihrem Konto eine EventBridge Regel erstellen, die dem spezifischen Muster der Ereignisse entspricht, die Sie senden werden. So können Sie beispielsweise: 
+ Erstellen Sie in Ihrem Konto eine Lambda-Funktion, die ein Ereignis empfängt und ausgibt, das einer EventBridge Regel entspricht.
+  Erstellen Sie in Ihrem Konto auf dem Standard-Event-Bus eine EventBridge Regel, die einem bestimmten Ereignismuster entspricht und auf die Lambda-Funktion abzielt. 

 Weitere Informationen finden Sie unter:
+ [Hinzufügen von EventBridge Amazon-Veranstaltungen mit PutEvents](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-putevents.html) im EventBridge Benutzerhandbuch.
+ [Warten Sie auf einen Rückruf mit Task Token](connect-to-resource.md#connect-wait-token)in Muster der Serviceintegration.

Folgendes beinhaltet eine`Task`, die ein benutzerdefiniertes Ereignis sendet:

```
{
  "Type": "Task",
  "Resource": "arn:aws:states:::events:putEvents",
  "Arguments": {
    "Entries": [
      {
        "Detail": {
          "Message": "MyMessage"
        },
        "DetailType": "MyDetailType",
        "EventBusName": "MyEventBus",
        "Source": "my.source"
      }
    ]
  },
  "End": true
}
```

**Quote für Eingabe- oder Ergebnisdaten**  
Beim Senden oder Empfangen von Daten zwischen Diensten beträgt die maximale Eingabe oder das maximale Ergebnis für eine Aufgabe 256 KiB an Daten als UTF-8-kodierte Zeichenfolge. Siehe [Kontingente im Zusammenhang mit der Ausführung von Zustandsmaschinen](service-quotas.md#service-limits-state-machine-executions).

## Optimierte API EventBridge
<a name="connect-eventbridge-apis"></a>

Zu den unterstützten EventBridge APIs und Syntax gehören:
+ [https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutEvents.html](https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_PutEvents.html)

## Fehlerbehandlung
<a name="connect-eventbridge-error"></a>

Die `PutEvents` API akzeptiert ein Array von Einträgen als Eingabe und gibt dann ein Array von Ergebniseinträgen zurück. Solange die `PutEvents` Aktion erfolgreich war, `PutEvents` wird eine HTTP 200-Antwort zurückgegeben, auch wenn ein oder mehrere Einträge fehlgeschlagen sind. `PutEvents`gibt die Anzahl der fehlgeschlagenen Einträge im `FailedEntryCount` Feld zurück.

Step Functions prüft, ob der größer als Null `FailedEntryCount` ist. Wenn es größer als Null ist, schlägt Step Functions den Status mit dem Fehler fehl`EventBridge.FailedEntry`. Auf diese Weise können Sie die integrierte Fehlerbehandlung von Step Functions für Aufgabenstatus verwenden, um fehlgeschlagene Eingaben abzufangen oder erneut zu versuchen, anstatt einen zusätzlichen Status verwenden zu müssen, um die Antwort `FailedEntryCount` anhand der Antwort zu analysieren.

**Anmerkung**  
Wenn Sie Idempotenz implementiert haben und sicher alle Einträge erneut versuchen können, können Sie die Wiederholungslogik von Step Functions verwenden. Step Functions entfernt erfolgreiche Einträge nicht aus dem `PutEvents` Eingabearray, bevor es erneut versucht wird. Stattdessen versucht es erneut mit dem ursprünglichen Array von Einträgen. 

## IAM-Richtlinien für Anrufe EventBridge
<a name="eventbridge-iam"></a>

Die folgenden Beispielvorlagen zeigen, wie IAM-Richtlinien auf der Grundlage der Ressourcen in Ihrer State-Machine-Definition AWS Step Functions generiert werden. Weitere Informationen erhalten Sie unter [So generiert Step Functions IAM-Richtlinien für integrierte Dienste](service-integration-iam-templates.md) und [Entdecken Sie Serviceintegrationsmuster in Step Functions](connect-to-resource.md).

### `PutEvents`
<a name="eventbridge-iam-listconnections"></a>

*Statische Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Action": [
                "events:PutEvents"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:event-bus/my-project-eventbus"
            ],
            "Effect": "Allow"
        }
    ]
}
```

*Dynamische Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "events:PutEvents"
            ],
            "Resource": "arn:aws:events:*:*:event-bus/*"
        }
    ]
}
```

# Starten Sie einen AWS Glue Job mit Step Functions
<a name="connect-glue"></a>

Erfahren Sie, wie Sie Step Functions verwenden, um einen Job zu starten, auf dem ausgeführt wirdAWS Glue. Diese Seite listet die unterstützten API-Aktionen auf und bietet einen `Task` Beispielstatus zum Starten eines AWS Glue Jobs.

Informationen zur Integration mit AWS Diensten in Step Functions finden Sie unter [Integrieren von -Services](integrate-services.md) und[Übergeben von Parametern an eine Service-API in Step Functions](connect-parameters.md).

**Hauptmerkmale der optimierten AWS Glue Integration**  
Das [Ausführen einer Aufgabe (.sync)](connect-to-resource.md#connect-sync) Integrationsmuster ist verfügbar.
Das `JobName` Feld wird aus der Anfrage extrahiert und in die Antwort eingefügt, die normalerweise nur enthält`JobRunID`.

Das Folgende beinhaltet einen `Task` Status, der einen AWS Glue Job startet.

```
"Glue StartJobRun": {
      "Type": "Task",
      "Resource": "arn:aws:states:::glue:startJobRun.sync",
      "Arguments": {
        "JobName": "GlueJob-JTrRO5l98qMG"
      },
      "Next": "ValidateOutput"
    },
```

**Parameter in Step Functions werden ausgedrückt in PascalCase**  
Auch wenn sich die native Service-API in CamelCase befindet, z. B. die API-Aktion`startSyncExecution`, geben Sie Parameter in an PascalCase, z. B.:. `StateMachineArn`

## Optimiert AWS Glue APIs
<a name="connect-glue-api"></a>
+ [https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-runs.html#aws-glue-api-jobs-runs-StartJobRun](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-api-jobs-runs.html#aws-glue-api-jobs-runs-StartJobRun)

## IAM-Richtlinien für Anrufe AWS Glue
<a name="glue-iam"></a>

Die folgenden Beispielvorlagen zeigen, wie IAM-Richtlinien auf der Grundlage der Ressourcen in Ihrer State-Machine-Definition AWS Step Functions generiert werden. Weitere Informationen erhalten Sie unter [So generiert Step Functions IAM-Richtlinien für integrierte Dienste](service-integration-iam-templates.md) und [Entdecken Sie Serviceintegrationsmuster in Step Functions](connect-to-resource.md).

AWS Glueverfügt nicht über eine ressourcenbasierte Steuerung.

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "glue:StartJobRun",
                "glue:GetJobRun",
                "glue:GetJobRuns",
                "glue:BatchStopJobRun"
            ],
            "Resource": "*"
        }
    ]
}
```

------
#### [ Request Response and Callback (.waitForTaskToken) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "glue:StartJobRun"
            ],
            "Resource": "*"
        }
    ]
}
```

------

# AWS Glue DataBrew Jobs mit Step Functions starten
<a name="connect-databrew"></a>

Erfahren Sie, wie Sie die DataBrew Integration nutzen können, um mit Step Functions Schritte zur Datenbereinigung und Datennormalisierung in Ihre Analyse- und Machine-Learning-Workflows aufzunehmen.

Informationen zur Integration mit AWS Diensten in Step Functions finden Sie unter [Integrieren von -Services](integrate-services.md) und[Übergeben von Parametern an eine Service-API in Step Functions](connect-parameters.md).

Im Folgenden wird ein `Task` Status beschrieben, der einen Anforderungs- und Antwortauftrag DataBrew startet.

```
"DataBrew StartJobRun": {
            "Type": "Task",
            "Resource": "arn:aws:states:::databrew:startJobRun",
            "Arguments": {
               "Name": "sample-proj-job-1"
            },
            "Next": "NEXT_STATE"
          },
```

Im Folgenden wird ein `Task` Status beschrieben, der einen DataBrew Synchronisierungsauftrag startet.

```
"DataBrew StartJobRun": {
           "Type": "Task",
           "Resource": "arn:aws:states:::databrew:startJobRun.sync",
           "Arguments": {
              "Name": "sample-proj-job-1"
           },
           "Next": "NEXT_STATE"
          },
```

**Die Parameter in Step Functions werden ausgedrückt in PascalCase**  
Auch wenn sich die native Service-API in CamelCase befindet, z. B. die API-Aktion`startSyncExecution`, geben Sie Parameter in an PascalCase, z. B.:. `StateMachineArn`

## Unterstützt DataBrew APIs
<a name="connect-databrew-api"></a>
+ `[https://docs.aws.amazon.com/databrew/latest/dg/API_StartJobRun.html](https://docs.aws.amazon.com/databrew/latest/dg/API_StartJobRun.html)`

## IAM-Richtlinien für Anrufe DataBrew
<a name="databrew-iam"></a>

Die folgenden Beispielvorlagen zeigen, wie IAM-Richtlinien auf der Grundlage der Ressourcen in Ihrer State-Machine-Definition AWS Step Functions generiert werden. Weitere Informationen erhalten Sie unter [So generiert Step Functions IAM-Richtlinien für integrierte Dienste](service-integration-iam-templates.md) und [Entdecken Sie Serviceintegrationsmuster in Step Functions](connect-to-resource.md).

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "databrew:startJobRun",
                "databrew:listJobRuns",
                "databrew:stopJobRun"
            ],
            "Resource": [
                "arn:aws:databrew:us-east-1:123456789012:job/*"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "databrew:startJobRun"
            ],
            "Resource": [
                "arn:aws:databrew:us-east-1:123456789012:job/*"
            ]
        }
    ]
}
```

------

# Rufen Sie eine AWS Lambda Funktion mit Step Functions auf
<a name="connect-lambda"></a>

Erfahren Sie, wie Sie Step Functions verwenden, um Lambda-Funktionen entweder synchron oder asynchron als Teil einer ereignisgesteuerten serverlosen Anwendung aufzurufen.

Informationen zur Integration mit AWS Diensten in Step Functions finden Sie unter [Integrieren von -Services](integrate-services.md) und[Übergeben von Parametern an eine Service-API in Step Functions](connect-parameters.md).

**Hauptmerkmale der optimierten Lambda-Integration**  
Das `Payload` Feld der Antwort wird von maskiertem Json nach Json analysiert.
Wenn innerhalb der Lambda-Funktion eine Ausnahme ausgelöst wird, schlägt die Aufgabe fehl. Ein praktisches Beispiel finden Sie unter[Behandlung von Fehlerbedingungen in einer Step Functions Functions-Zustandsmaschine](tutorial-handling-error-conditions.md). 

## Optimiertes Lambda APIs
<a name="connect-lambda-api"></a>
+ [https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html](https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html)

## Workflow-Beispiele
<a name="connect-lambda-api-examples"></a>

Das Folgende beinhaltet einen `Task` Zustand, der eine Lambda-Funktion aufruft.

```
{  
   "StartAt":"CallLambda",
   "States":{  
      "CallLambda":{  
         "Type":"Task",
         "Resource":"arn:aws:states:::lambda:invoke",
         "Arguments":{  
            "FunctionName":"arn:aws:lambda:region:account-id:function:MyFunction"
         },
         "End":true
      }
   }
}
```

Das Folgende enthält einen `Task`-Zustand zur Implementierung des [Callback-](connect-to-resource.md#connect-wait-token) Service-Integrationsmusters.

```
{  
   "StartAt":"GetManualReview",
   "States":{  
      "GetManualReview":{  
         "Type":"Task",
         "Resource":"arn:aws:states:::lambda:invoke.waitForTaskToken",
         "Arguments":{  
            "FunctionName":"arn:aws:lambda:region:account-id:function:get-model-review-decision",
            "Payload":{  
               "model":"{% $states.input.my-model %}",
               "TaskToken": "{% $states.context.Task.Token %}"
            },
            "Qualifier":"prod-v1"
         },
         "End":true
      }
   }
}
```

Wenn Sie eine Lambda-Funktion aufrufen, wartet die Ausführung, bis die Funktion abgeschlossen ist. Wenn Sie die Lambda-Funktion mit einer Callback-Aufgabe aufrufen, beginnt das Heartbeat-Timeout erst zu zählen, wenn die Ausführung der Lambda-Funktion abgeschlossen und ein Ergebnis zurückgegeben wurde. Solange die Lambda-Funktion ausgeführt wird, wird das Heartbeat-Timeout nicht erzwungen.

Es ist auch möglich, Lambda asynchron mithilfe des `InvocationType` Parameters aufzurufen, wie im folgenden Beispiel zu sehen ist:

```
{

  "Comment": "A Hello World example of the Amazon States Language using Pass states",
  "StartAt": "Hello",
  "States": {
    "Hello": {
      "Type": "Task",
      "Resource": "arn:aws:states:::lambda:invoke",
      "Arguments": {
        "FunctionName": "arn:aws:lambda:region:account-id:function:echo",
        "InvocationType": "Event"
      },
      "End": true
    }
  }
}
```

**Anmerkung**  
Bei asynchronen Aufrufen von Lambda-Funktionen beginnt die Heartbeat-Timeout-Periode sofort.

 Wenn das `Task` Ergebnis zurückgegeben wird, ist die Funktionsausgabe in einem Metadatenwörterbuch verschachtelt. Beispiel:

```
{

   "ExecutedVersion":"$LATEST",
   "Payload":"FUNCTION OUTPUT",
   "SdkHttpMetadata":{
      "HttpHeaders":{
         "Connection":"keep-alive",
         "Content-Length":"4",
         "Content-Type":"application/json",
         "Date":"Fri, 26 Mar 2021 07:42:02 GMT",
         "X-Amz-Executed-Version":"$LATEST",
         "x-amzn-Remapped-Content-Length":"0",
         "x-amzn-RequestId":"0101aa0101-1111-111a-aa55-1010aaa1010",
         "X-Amzn-Trace-Id":"root=1-1a1a000a2a2-fe0101aa10ab;sampled=0"
      },
      "HttpStatusCode":200
   },
   "SdkResponseMetadata":{
      "RequestId":"6b3bebdb-9251-453a-ae45-512d9e2bf4d3"
   },
   "StatusCode":200
}
```

## Direkt angegebene Funktionsressource
<a name="w2aac33c40c13"></a>

Alternativ können Sie eine Lambda-Funktion aufrufen, indem Sie einen Funktions-ARN direkt im Feld „Resource“ angeben. Wenn Sie eine Lambda-Funktion auf diese Weise aufrufen, können Sie sie nicht angeben`.waitForTaskToken`, und das Aufgabenergebnis enthält nur die Funktionsausgabe.

```
{  
   "StartAt":"CallFunction",
   "States":{  
      "CallFunction": {  
         "Type":"Task",
         "Resource":"arn:aws:lambda:region:account-id:function:HelloFunction",
         "End": true
      }
   }
}
```

Bei dieser Form der Integration könnte die Funktion erfolgreich sein und dennoch eine Antwort senden, die ein Feld enthält. `FunctionError` In diesem Szenario schlägt die Workflow-Aufgabe fehl.

Sie können eine bestimmte Lambda-Funktionsversion oder einen bestimmten Alias aufrufen, indem Sie diese Optionen im ARN im `Resource` Feld angeben. In der Lambda-Dokumentation finden Sie Folgendes:
+ [AWS Lambda-Versioning](https://docs.aws.amazon.com/lambda/latest/dg/versioning-intro.html)
+ [AWS LambdaAliase](https://docs.aws.amazon.com/lambda/latest/dg/aliases-intro.html)

## IAM-Richtlinien für Anrufe AWS Lambda
<a name="lambda-iam"></a>

Die folgenden Beispielvorlagen zeigen, wie IAM-Richtlinien auf der Grundlage der Ressourcen in Ihrer Zustandsmaschinen-Definition AWS Step Functions generiert werden. Weitere Informationen erhalten Sie unter [So generiert Step Functions IAM-Richtlinien für integrierte Dienste](service-integration-iam-templates.md) und [Entdecken Sie Serviceintegrationsmuster in Step Functions](connect-to-resource.md).

Im folgenden Beispiel, einer Zustandsmaschine mit zwei AWS Lambda Aufgabenstatus, die aufrufen `function1` und`function2`, beinhaltet die automatisch generierte Richtlinie `lambda:Invoke` Berechtigungen für beide Funktionen.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "lambda:InvokeFunction"
            ],
            "Resource": [
                "arn:aws:lambda:us-east-1:123456789012:function:myFn1",
                "arn:aws:lambda:us-east-1:123456789012:function:myFn2"
            ]
        }
    ]
}
```

# Einen AWS Elemental MediaConvert Job mit Step Functions erstellen
<a name="connect-mediaconvert"></a>

Erfahren Sie, wie Sie mithilfe von Step Functions einen AWS Elemental MediaConvert Job mithilfe der [https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobspost](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobspost)API erstellen.

**Experimentieren Sie mit Step Functions und MediaConvert**  
Erfahren Sie, wie Sie die MediaConvert optimierte Integration in einem Workflow einsetzen können, der SMTPE-Farbbalken unbekannter Länge am Anfang eines Videoclips erkennt und entfernt. Lesen Sie den Blogbeitrag vom 12. April 2024: [https://aws.amazon.com/blogs/media/low-code-workflows-with-aws-elemental-mediaconvert/](https://aws.amazon.com/blogs/media/low-code-workflows-with-aws-elemental-mediaconvert/)

Informationen zur Integration mit AWS Diensten in Step Functions finden Sie unter [Integrieren von -Services](integrate-services.md) und[Übergeben von Parametern an eine Service-API in Step Functions](connect-parameters.md).

**Hauptmerkmale der optimierten MediaConvert Integration**  
Die Integrationsmuster [Ausführen einer Aufgabe (.sync)](connect-to-resource.md#connect-sync) und die [Request Response (Antwort anfordern)](connect-to-resource.md#connect-default) Integrationsmuster werden unterstützt.
Step Functions fügt MediaConvert Jobs das folgende benutzerdefinierte Tag hinzu: `ManagedByService: AWSStepFunctions`
Es gibt keine spezifische Optimierung für [Warten Sie auf einen Rückruf mit Task Token](connect-to-resource.md#connect-wait-token) Integrationsmuster.

Im Folgenden wird ein `Task` Status beschrieben, in dem ein MediaConvert Auftrag übermittelt und auf dessen Abschluss gewartet wird.

```
{
    "StartAt": "MediaConvert_CreateJob",
    "States": {
        "MediaConvert_CreateJob": {
        "Type": "Task",
        "Resource": "arn:aws:states:::mediaconvert:createJob.sync",
        "Arguments": {
            "Role": "arn:aws:iam::111122223333:role/Admin",
            "Settings": {
            "OutputGroups": [
                {
                "Outputs": [
                    {
                    "ContainerSettings": {
                        "Container": "MP4"
                    },
                    "VideoDescription": {
                        "CodecSettings": {
                        "Codec": "H_264",
                        "H264Settings": {
                            "MaxBitrate": 1000,
                            "RateControlMode": "QVBR",
                            "SceneChangeDetect": "TRANSITION_DETECTION"
                        }
                        }
                    },
                    "AudioDescriptions": [
                        {
                        "CodecSettings": {
                            "Codec": "AAC",
                            "AacSettings": {
                            "Bitrate": 96000,
                            "CodingMode": "CODING_MODE_2_0",
                            "SampleRate": 48000
                            }
                        }
                        }
                    ]
                    }
                ],
                "OutputGroupSettings": {
                    "Type": "FILE_GROUP_SETTINGS",
                    "FileGroupSettings": {
                    "Destination": "s3://amzn-s3-demo-destination-bucket/"
                    }
                }
                }
            ],
            "Inputs": [
                {
                "AudioSelectors": {
                    "Audio Selector 1": {
                    "DefaultSelection": "DEFAULT"
                    }
                },
                "FileInput": "s3://amzn-s3-demo-bucket/DOC-EXAMPLE-SOURCE_FILE"
                }
            ]
            }
        },
        "End": true
        }
    }
}
```

**Die Parameter in Step Functions werden ausgedrückt in PascalCase**  
Auch wenn sich die native Service-API in CamelCase befindet, z. B. die API-Aktion`startSyncExecution`, geben Sie Parameter in an PascalCase, z. B.:. `StateMachineArn`

## Optimiert MediaConvert APIs
<a name="connect-mediaconvert-api"></a>
+ [https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobspost](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobspost)
  + [Erforderliche Syntax](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-request-body-post-example)
  + Unterstützte Parameter:
    + [https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-prop-createjobrequest-role](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-prop-createjobrequest-role) (Erforderlich)
    + [https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-prop-createjobrequest-settings](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-prop-createjobrequest-settings) (Erforderlich)
    + [https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-model-createjobrequest](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-model-createjobrequest) (Optional)
  + [Antwortsyntax](https://docs.aws.amazon.com/mediaconvert/latest/apireference/jobs.html#jobs-response-examples) — siehe **CreateJobResponse Schema**

## IAM-Richtlinien für Anrufe AWS Elemental MediaConvert
<a name="mediaconvert-iam"></a>

Die folgenden Beispielvorlagen zeigen, wie IAM-Richtlinien auf der Grundlage der Ressourcen in Ihrer State-Machine-Definition AWS Step Functions generiert werden. Weitere Informationen erhalten Sie unter [So generiert Step Functions IAM-Richtlinien für integrierte Dienste](service-integration-iam-templates.md) und [Entdecken Sie Serviceintegrationsmuster in Step Functions](connect-to-resource.md).

Die IAM-Richtlinie für `GetJob` und die `CancelJob` Aktionen sind so begrenzt, dass sie nur den Zugriff auf Jobs mit dem Tag zulassen. `ManagedByService: AWSStepFunctions`

**Tag-basierte Richtlinie**  
Die Änderung des automatisch generierten `ManagedByService: AWSStepFunctions` Tags führt dazu, dass die Ausführung von Zustandsmaschinen fehlschlägt.

------
#### [ Run a Job (.sync) ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "MediaConvertCreateJob",
            "Effect": "Allow",
            "Action": [
                "mediaconvert:CreateJob"
            ],
            "Resource": [
                "arn:aws:mediaconvert:us-east-1:123456789012:queues/*",
                "arn:aws:mediaconvert:us-east-1:123456789012:jobTemplates/*",
                "arn:aws:mediaconvert:us-east-1:123456789012:presets/*"
            ]
        },
        {
            "Sid": "MediaConvertManageJob",
            "Effect": "Allow",
            "Action": [
                "mediaconvert:GetJob",
                "mediaconvert:CancelJob"
            ],
            "Resource": "arn:aws:mediaconvert:us-east-1:123456789012:jobs/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/ManagedByService": "AWSStepFunctions"
                }
            }
        },
        {
            "Sid": "IamPassRole",
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRoleName"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": [
                        "mediaconvert.amazonaws.com"
                    ]
                }
            }
        }, 
        {
            "Sid": "EventBridgeManageRule",
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
                "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForMediaConvertJobRule"
            ]
        }
    ]
}
```

------
#### [ Request Response ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "MediaConvertCreateJob",
            "Effect": "Allow",
            "Action": [
                "mediaconvert:CreateJob"
            ],
            "Resource": [
                "arn:aws:mediaconvert:us-east-1:123456789012:queues/*",
                "arn:aws:mediaconvert:us-east-1:123456789012:jobTemplates/*",
                "arn:aws:mediaconvert:us-east-1:123456789012:presets/*"
            ]
        },
        {
            "Sid": "IamPassRole",
            "Effect": "Allow",
            "Action": [
                "iam:PassRole"
            ],
            "Resource": [
                "arn:aws:iam::123456789012:role/myRoleName"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": [
                        "mediaconvert.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

# Amazon SageMaker AI-Jobs mit Step Functions erstellen und verwalten
<a name="connect-sagemaker"></a>

Erfahren Sie, wie Sie Step Functions verwenden, um Jobs auf SageMaker KI zu erstellen und zu verwalten. Diese Seite listet die unterstützten SageMaker KI-API-Aktionen auf und bietet `Task` Beispielstatus für die Erstellung von SageMaker KI-Transform-, Schulungs-, Kennzeichnungs- und Verarbeitungsjobs.

Informationen zur Integration mit AWS Diensten in Step Functions finden Sie unter [Integrieren von -Services](integrate-services.md) und[Übergeben von Parametern an eine Service-API in Step Functions](connect-parameters.md).

**Hauptmerkmale der optimierten SageMaker KI-Integration**  
Das [Ausführen einer Aufgabe (.sync)](connect-to-resource.md#connect-sync) Integrationsmuster wird unterstützt.
Es gibt keine spezifischen Optimierungen für das [Request Response (Antwort anfordern)](connect-to-resource.md#connect-default) Integrationsmuster.
Das [Warten Sie auf einen Rückruf mit Task Token](connect-to-resource.md#connect-wait-token) Integrationsmuster wird nicht unterstützt.

## Optimierte SageMaker KI APIs
<a name="connect-sagemaker-api"></a>
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpoint.html)
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpointConfig.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpointConfig.html)
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateHyperParameterTuningJob.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateHyperParameterTuningJob.html)- Unterstützt das `.sync` Integrationsmuster.
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateLabelingJob.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateLabelingJob.html)- Unterstützt das `.sync` Integrationsmuster.
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateModel.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateModel.html)
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateProcessingJob.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateProcessingJob.html)- Unterstützt das `.sync` Integrationsmuster.
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTrainingJob.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTrainingJob.html)- Unterstützt das `.sync` Integrationsmuster.
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTransformJob.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateTransformJob.html)- Unterstützt das `.sync` Integrationsmuster.
+ [https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpoint.html](https://docs.aws.amazon.com/sagemaker/latest/dg/API_UpdateEndpoint.html)

**Anmerkung**  
AWS Step Functionserstellt nicht automatisch eine Richtlinie für`CreateTransformJob`. Der erstellten Rolle muss eine Inline-Richtlinie zugewiesen werden. Weitere Informationen finden Sie in diesem Beispiel für eine IAM-Richtlinie:[`CreateTrainingJob`](#sagemaker-iam-createtrainingjob).

## SageMaker Beispiel für einen Job im Bereich KI Transform
<a name="sagemaker-example-transform"></a>

Im Folgenden finden Sie einen `Task` Status, der einen Amazon SageMaker AI-Transformationsauftrag erstellt und den Amazon S3 S3-Standort für `DataSource` und angibt`TransformOutput`.

```
{
"SageMaker CreateTransformJob": {
  "Type": "Task",
  "Resource": "arn:aws:states:::sagemaker:createTransformJob.sync",
  "Arguments": {
    "ModelName": "SageMakerCreateTransformJobModel-9iFBKsYti9vr",
    "TransformInput": {
      "CompressionType": "None",
      "ContentType": "text/csv",
      "DataSource": {
        "S3DataSource": {
          "S3DataType": "S3Prefix",
          "S3Uri": "s3://amzn-s3-demo-source-bucket1/TransformJobDataInput.txt"
        }
      }
    },
    "TransformOutput": {
      "S3OutputPath": "s3://amzn-s3-demo-source-bucket1/TransformJobOutputPath"
    },
    "TransformResources": {
      "InstanceCount": 1,
      "InstanceType": "ml.m4.xlarge"
    },
    "TransformJobName": "sfn-binary-classification-prediction"
  },
  "Next": "ValidateOutput"
},
```

## SageMaker Beispiel für einen KI-Trainingsjob
<a name="sagemaker-example-training"></a>

Im Folgenden finden Sie einen `Task` Status, der einen Amazon SageMaker AI-Schulungsjob erstellt.

```
{  
   "SageMaker CreateTrainingJob":{  
      "Type":"Task",
      "Resource":"arn:aws:states:::sagemaker:createTrainingJob.sync",
      "Arguments":{  
         "TrainingJobName":"search-model",
         "ResourceConfig":{  
            "InstanceCount":4,
            "InstanceType":"ml.c4.8xlarge",
            "VolumeSizeInGB":20
         },
         "HyperParameters":{  
            "mode":"batch_skipgram",
            "epochs":"5",
            "min_count":"5",
            "sampling_threshold":"0.0001",
            "learning_rate":"0.025",
            "window_size":"5",
            "vector_dim":"300",
            "negative_samples":"5",
            "batch_size":"11"
         },
         "AlgorithmSpecification":{  
            "TrainingImage":"...",
            "TrainingInputMode":"File"
         },
         "OutputDataConfig":{  
            "S3OutputPath":"s3://amzn-s3-demo-destination-bucket1/doc-search/model"
         },
         "StoppingCondition":{  
            "MaxRuntimeInSeconds":100000
         },
         "RoleArn":"arn:aws:iam::account-id:role/docsearch-stepfunction-iam-role",
         "InputDataConfig":[  
            {  
               "ChannelName":"train",
               "DataSource":{  
                  "S3DataSource":{  
                     "S3DataType":"S3Prefix",
                     "S3Uri":"s3://amzn-s3-demo-destination-bucket1/doc-search/interim-data/training-data/",
                     "S3DataDistributionType":"FullyReplicated"
                  }
               }
            }
         ]
      },
      "Retry":[  
         {  
            "ErrorEquals":[  
               "SageMaker.AmazonSageMakerException"
            ],
            "IntervalSeconds":1,
            "MaxAttempts":100,
            "BackoffRate":1.1
         },
         {  
            "ErrorEquals":[  
               "SageMaker.ResourceLimitExceededException"
            ],
            "IntervalSeconds":60,
            "MaxAttempts":5000,
            "BackoffRate":1
         },
         {  
            "ErrorEquals":[  
               "States.Timeout"
            ],
            "IntervalSeconds":1,
            "MaxAttempts":5,
            "BackoffRate":1
         }
      ],
      "Catch":[  
         {  
            "ErrorEquals":[  
               "States.ALL"
            ],
            "Next":"Sagemaker Training Job Error"
         }
      ],
      "Next":"Delete Interim Data Job"
   }
}
```

## SageMaker Beispiel für einen Job im Bereich KI-Kennzeichnung
<a name="sagemaker-example-labeling"></a>

Im Folgenden finden Sie einen `Task` Status, der einen Amazon SageMaker AI-Labeling-Job erstellt.

```
{
  "StartAt": "SageMaker CreateLabelingJob",
  "TimeoutSeconds": 3600,
  "States": {
    "SageMaker CreateLabelingJob": {
      "Type": "Task",
      "Resource": "arn:aws:states:::sagemaker:createLabelingJob.sync",
      "Arguments": {
        "HumanTaskConfig": {
          "AnnotationConsolidationConfig": {
            "AnnotationConsolidationLambdaArn": "arn:aws:lambda:region:123456789012:function:ACS-TextMultiClass"
          },
          "NumberOfHumanWorkersPerDataObject": 1,
          "PreHumanTaskLambdaArn": "arn:aws:lambda:region:123456789012:function:PRE-TextMultiClass",
          "TaskDescription": "Classify the following text",
          "TaskKeywords": [
            "tc",
            "Labeling"
          ],
          "TaskTimeLimitInSeconds": 300,
          "TaskTitle": "Classify short bits of text",
          "UiConfig": {
            "UiTemplateS3Uri": "s3://amzn-s3-demo-bucket/TextClassification.template"
          },
          "WorkteamArn": "arn:aws:sagemaker:region:123456789012:workteam/private-crowd/ExampleTesting"
        },
        "InputConfig": {
          "DataAttributes": {
            "ContentClassifiers": [
              "FreeOfPersonallyIdentifiableInformation",
              "FreeOfAdultContent"
            ]
          },
          "DataSource": {
            "S3DataSource": {
              "ManifestS3Uri": "s3://amzn-s3-demo-bucket/manifest.json"
            }
          }
        },
        "LabelAttributeName": "Categories",
        "LabelCategoryConfigS3Uri": "s3://amzn-s3-demo-bucket/labelcategories.json",
        "LabelingJobName": "example-job-name",
        "OutputConfig": {
          "S3OutputPath": "s3://amzn-s3-demo-bucket/output"
        },
        "RoleArn": "arn:aws:iam::123456789012:role/service-role/AmazonSageMaker-ExecutionRole",
        "StoppingConditions": {
          "MaxHumanLabeledObjectCount": 10000,
          "MaxPercentageOfInputDatasetLabeled": 100
        }
      },
      "Next": "ValidateOutput"
    },
    "ValidateOutput": {
        "Type": "Choice",
        "Choices": [
            {
                "Next": "Success",
                "Condition": "{% $states.input.LabelingJobArn != '' %}"
            }
        ],
        "Default": "Fail"
        },
        "Success": {
            "Type": "Succeed"
        },
        "Fail": {
            "Type": "Fail",
            "Error": "InvalidOutput",
            "Cause": "Output is not what was expected. This could be due to a service outage or a misconfigured service integration."
        }
    }
}
```

## SageMaker Beispiel für einen KI-Verarbeitungsjob
<a name="sagemaker-example-processing"></a>

Im Folgenden wird ein `Task` Status beschrieben, der einen Amazon SageMaker AI-Verarbeitungsauftrag erstellt.

```
{
  "StartAt": "SageMaker CreateProcessingJob Sync",
  "TimeoutSeconds": 3600,
  "States": {
    "SageMaker CreateProcessingJob Sync": {
      "Type": "Task",
      "Resource": "arn:aws:states:::sagemaker:createProcessingJob.sync",
      "Arguments": {
        "AppSpecification": {
          "ImageUri": "737474898029.dkr.ecr.sa-east-1.amazonaws.com/sagemaker-scikit-learn:0.20.0-cpu-py3"
        },
        "ProcessingResources": {
          "ClusterConfig": {
            "InstanceCount": 1,
            "InstanceType": "ml.t3.medium",
            "VolumeSizeInGB": 10
          }
        },
        "RoleArn": "arn:aws:iam::account-id:role/SM-003-CreateProcessingJobAPIExecutionRole",
        "ProcessingJobName.$": "$.id"
      },
      "Next": "ValidateOutput"
    },
    "ValidateOutput": {
      "Type": "Choice",
      "Choices": [
        {
          "Not": {
            "Variable": "$.ProcessingJobArn",
            "StringEquals": ""
          },
          "Next": "Succeed"
        }
      ],
      "Default": "Fail"
    },
    "Succeed": {
      "Type": "Succeed"
    },
    "Fail": {
      "Type": "Fail",
      "Error": "InvalidConnectorOutput",
      "Cause": "Connector output is not what was expected. This could be due to a service outage or a misconfigured connector."
    }
  }
}
```

## IAM-Richtlinien für das Aufrufen von Amazon AI SageMaker
<a name="sagemaker-iam"></a>

Die folgenden Beispielvorlagen zeigen, wie IAM-Richtlinien auf der Grundlage der Ressourcen in Ihrer State-Machine-Definition AWS Step Functions generiert werden. Weitere Informationen erhalten Sie unter [So generiert Step Functions IAM-Richtlinien für integrierte Dienste](service-integration-iam-templates.md) und [Entdecken Sie Serviceintegrationsmuster in Step Functions](connect-to-resource.md).

**Anmerkung**  
`roleArn`Bezieht sich für diese Beispiele auf den Amazon-Ressourcennamen (ARN) der IAM-Rolle, die SageMaker KI verwendet, um auf Modellartefakte und Docker-Images für die Bereitstellung auf ML-Compute-Instances oder für Batch-Transformationsjobs zuzugreifen. Weitere Informationen finden Sie unter [Amazon SageMaker Roles](https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html).

### `CreateTrainingJob`
<a name="sagemaker-iam-createtrainingjob"></a>

*Statische Ressourcen*

------
#### [ Run a Job (.sync) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateTrainingJob",
        "sagemaker:DescribeTrainingJob",
        "sagemaker:StopTrainingJob"
      ],
      "Resource": [
        "arn:aws:sagemaker:us-east-1:123456789012:training-job/myJobName*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListTags",
        "sagemaker:AddTags"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/MyExampleRole"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "sagemaker.amazonaws.com"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "events:PutTargets",
        "events:PutRule",
        "events:DescribeRule"
      ],
      "Resource": [
        "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForSageMakerTrainingJobsRule"
      ]
    }
  ]
}
```

------
#### [ Request Response and Callback (.waitForTaskToken) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateTrainingJob"
      ],
      "Resource": [
        "arn:aws:sagemaker:us-east-1:123456789012:training-job/myJobName*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListTags",
        "sagemaker:AddTags"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/MyExampleRole"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "sagemaker.amazonaws.com"
        }
      }
    }
  ]
}
```

------

*Dynamische Ressourcen*

------
#### [ .sync or .waitForTaskToken ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateTrainingJob",
        "sagemaker:DescribeTrainingJob",
        "sagemaker:StopTrainingJob"
      ],
      "Resource": [
        "arn:aws:sagemaker:us-east-1:123456789012:training-job/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListTags",
        "sagemaker:AddTags"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/MyExampleRole"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "sagemaker.amazonaws.com"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "events:PutTargets",
        "events:PutRule",
        "events:DescribeRule"
      ],
      "Resource": [
        "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForSageMakerTrainingJobsRule"
      ]
    }
  ]
}
```

------
#### [ Request Response and Callback (.waitForTaskToken) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateTrainingJob"
      ],
      "Resource": [
        "arn:aws:sagemaker:us-east-1:123456789012:training-job/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListTags",
        "sagemaker:AddTags"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/MyExampleRole"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "sagemaker.amazonaws.com"
        }
      }
    }
  ]
}
```

------

### `CreateTransformJob`
<a name="sagemaker-iam-createtransformjob"></a>

**Anmerkung**  
AWS Step Functionserstellt nicht automatisch eine Richtlinie für den Fall`CreateTransformJob`, dass Sie eine Zustandsmaschine erstellen, die in SageMaker KI integriert ist. Sie müssen der erstellten Rolle eine Inline-Richtlinie hinzufügen, die auf einem der folgenden IAM-Beispiele basiert.

*Statische Ressourcen*

------
#### [ Run a Job (.sync) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateTransformJob",
        "sagemaker:DescribeTransformJob",
        "sagemaker:StopTransformJob"
      ],
      "Resource": [
        "arn:aws:sagemaker:us-east-1:123456789012:transform-job/myJobName*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListTags",
        "sagemaker:AddTags"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/MyExampleRole"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "sagemaker.amazonaws.com"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "events:PutTargets",
        "events:PutRule",
        "events:DescribeRule"
      ],
      "Resource": [
        "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForSageMakerTransformJobsRule"
      ]
    }
  ]
}
```

------
#### [ Request Response and Callback (.waitForTaskToken) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateTransformJob"
      ],
      "Resource": [
        "arn:aws:sagemaker:us-east-1:123456789012:transform-job/myJobName*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListTags",
        "sagemaker:AddTags"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/MyExampleRole"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "sagemaker.amazonaws.com"
        }
      }
    }
  ]
}
```

------

*Dynamische Ressourcen*

------
#### [ Run a Job (.sync) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateTransformJob",
        "sagemaker:DescribeTransformJob",
        "sagemaker:StopTransformJob"
      ],
      "Resource": [
        "arn:aws:sagemaker:us-east-1:123456789012:transform-job/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListTags",
        "sagemaker:AddTags"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/MyExampleRole"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "sagemaker.amazonaws.com"
        }
      }
    },
    {
      "Effect": "Allow",
      "Action": [
        "events:PutTargets",
        "events:PutRule",
        "events:DescribeRule"
      ],
      "Resource": [
        "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForSageMakerTransformJobsRule"
      ]
    }
  ]
}
```

------
#### [ Request Response and Callback (.waitForTaskToken) ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:CreateTransformJob"
      ],
      "Resource": [
        "arn:aws:sagemaker:us-east-1:123456789012:transform-job/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "sagemaker:ListTags",
        "sagemaker:AddTags"
      ],
      "Resource": [
        "*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": [
        "arn:aws:iam::123456789012:role/MyExampleRole"
      ],
      "Condition": {
        "StringEquals": {
          "iam:PassedToService": "sagemaker.amazonaws.com"
        }
      }
    }
  ]
}
```

------

# Mit Step Functions Nachrichten zu einem Amazon SNS SNS-Thema veröffentlichen
<a name="connect-sns"></a>

Erfahren Sie, wie Sie Step Functions verwenden, um Nachrichten zu einem Amazon SNS SNS-Thema zu veröffentlichen. Diese Seite listet die unterstützten Amazon SNS-API-Aktionen auf und bietet `Task` Beispielstatus für die Veröffentlichung von Nachrichten in Amazon SNS.

Informationen zur Integration mit AWS Diensten in Step Functions finden Sie unter [Integrieren von -Services](integrate-services.md) und[Übergeben von Parametern an eine Service-API in Step Functions](connect-parameters.md).

**Hauptmerkmale der optimierten Amazon SNS SNS-Integration**  
Es gibt keine spezifischen Optimierungen für die [Request Response (Antwort anfordern)](connect-to-resource.md#connect-default) [Warten Sie auf einen Rückruf mit Task Token](connect-to-resource.md#connect-wait-token) Integrationsmuster.

Im Folgenden finden Sie einen `Task` Status, der zu einem Amazon Simple Notification Service (Amazon SNS) -Thema veröffentlicht.

```
{
 "StartAt": "Publish to SNS",
 "States": {
   "Publish to SNS": {
     "Type": "Task",
     "Resource": "arn:aws:states:::sns:publish",
     "Arguments": {
       "TopicArn": "arn:aws:sns:region:account-id:myTopic",
       "Message": "{% states.input.message %}",
       "MessageAttributes": {
         "my_attribute_no_1": {
           "DataType": "String",
           "StringValue": "value of my_attribute_no_1"
         },
         "my_attribute_no_2": {
           "DataType": "String",
           "StringValue": "value of my_attribute_no_2"
         }
       }
     },
     "End": true
    }
  }
}
```

**Übergabe dynamischer Werte**. Sie können das obige Beispiel ändern, um ein Attribut aus dieser JSON-Payload dynamisch zu übergeben:

```
{
  "message": "Hello world",
  "SNSDetails": {
    "attribute1": "some value",
    "attribute2": "some other value",
  }
}
```

Im Folgenden werden Werte mithilfe von JSONata Ausdrücken für die `StringValue` Felder festgelegt:

```
"MessageAttributes": {
  "my_attribute_no_1": {
      "DataType": "String",
      "StringValue": "{% $states.input.SNSDetails.attribute1 %}"
  },
  "my_attribute_no_2": {
      "DataType": "String",
      "StringValue": "{% $states.input.SNSDetails.attribute2 %}"
  }
```

Im Folgenden wird ein `Task` Status beschrieben, der in einem Amazon SNS SNS-Thema veröffentlicht und dann darauf wartet, dass das Task-Token zurückgegeben wird. Siehe [Warten Sie auf einen Rückruf mit Task Token](connect-to-resource.md#connect-wait-token).

```
{  
   "StartAt":"Send message to SNS",
   "States":{  
      "Send message to SNS":{  
         "Type":"Task",
         "Resource":"arn:aws:states:::sns:publish.waitForTaskToken",
         "Arguments":{  
            "TopicArn":"arn:aws:sns:region:account-id:myTopic",
            "Message":{  
               "Input":"{% states.input.message %}",
               "TaskToken": "{% $states.context.Task.Token %}"
            }
         },
         "End":true
      }
   }
}
```

## Optimiertes Amazon SNS APIs
<a name="connect-sns-api"></a>
+ [https://docs.aws.amazon.com/sns/latest/api/API_Publish.html](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html)

**Die Parameter in Step Functions werden ausgedrückt in PascalCase**  
Auch wenn sich die native Service-API in CamelCase befindet, z. B. die API-Aktion`startSyncExecution`, geben Sie Parameter in an PascalCase, z. B.:. `StateMachineArn`

**Quote für Eingabe- oder Ergebnisdaten**  
Beim Senden oder Empfangen von Daten zwischen Diensten beträgt die maximale Eingabe oder das maximale Ergebnis für eine Aufgabe 256 KiB an Daten als UTF-8-kodierte Zeichenfolge. Siehe [Kontingente im Zusammenhang mit der Ausführung von Zustandsmaschinen](service-quotas.md#service-limits-state-machine-executions).

## IAM-Richtlinien für das Anrufen von Amazon SNS
<a name="sns-iam"></a>

Die folgenden Beispielvorlagen zeigen, wie IAM-Richtlinien auf der Grundlage der Ressourcen in Ihrer State-Machine-Definition AWS Step Functions generiert werden. Weitere Informationen erhalten Sie unter [So generiert Step Functions IAM-Richtlinien für integrierte Dienste](service-integration-iam-templates.md) und [Entdecken Sie Serviceintegrationsmuster in Step Functions](connect-to-resource.md).

*Statische Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sns:Publish"
            ],
            "Resource": [
                "arn:aws:sns:us-east-1:123456789012:myTopicName"
            ]
        }
    ]
}
```

*Ressourcen, die auf einem Pfad basieren oder in `TargetArn` oder `PhoneNumber` veröffentlichen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sns:Publish"
            ],
            "Resource": "*"
        }
    ]
}
```

# Senden Sie Nachrichten mit Step Functions an eine Amazon SQS SQS-Warteschlange
<a name="connect-sqs"></a>

Mithilfe der folgenden Amazon SQS SQS-API-Aktionen und des `Task` Beispielstatuscodes für Step Functions Functions-Workflows können Sie Nachrichten an eine Amazon SQS SQS-Warteschlange senden.

Informationen zur Integration mit AWS Diensten in Step Functions finden Sie unter [Integrieren von -Services](integrate-services.md) und[Übergeben von Parametern an eine Service-API in Step Functions](connect-parameters.md).

Weitere Informationen zum Empfangen von Nachrichten in Amazon SQS finden Sie unter [Empfangen und Löschen Ihrer Nachricht](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/step-receive-delete-message.html) im *Amazon Simple Queue Service Developer Guide*.

Das folgende Beispiel enthält einen `Task` Status (JSONata), der eine Amazon Simple Queue Service (Amazon SQS) -Nachricht mit optionalem **MessageAttributes**Inhalt sendet:

```
{
 "StartAt": "Send to SQS",
 "States": {
   "Send to SQS": {
     "Type": "Task",
     "Resource": "arn:aws:states:::sqs:sendMessage",
     "Arguments": {
       "QueueUrl": "https://sqs.us-east-1.amazonaws.com/account-id/myQueue",
       "MessageBody": "{% $states.input.message %}",
       "MessageAttributes": {
         "my_attribute_no_1": {
           "DataType": "String",
           "StringValue": "attribute1"
         },
         "my_attribute_no_2": {
           "DataType": "String",
           "StringValue": "attribute2"
         }
       }
     },
     "End": true
    }
  }
}
```

Die folgende Zustandsmaschine enthält einen `Task` Status, der in einer Amazon SQS SQS-Warteschlange veröffentlicht und dann darauf wartet, dass das Task-Token zurückgegeben wird. Siehe [Warten Sie auf einen Rückruf mit Task Token](connect-to-resource.md#connect-wait-token).

```
{  
   "StartAt":"Send message to SQS",
   "States":{  
      "Send message to SQS":{  
         "Type":"Task",
         "Resource":"arn:aws:states:::sqs:sendMessage.waitForTaskToken",
         "Arguments":{  
            "QueueUrl":"https://sqs.us-east-1.amazonaws.com/account-id/myQueue",
            "MessageBody":{  
               "Input" : "{% $states.input.message %}",
               "MyTaskToken" : "{% $states.context.Task.Token %}"
            }
         },
         "End":true
      }
   }
}
```

## Optimiertes Amazon SQS APIs
<a name="connect-sqs-api"></a>
+ [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)

**Die Parameter in Step Functions werden ausgedrückt in PascalCase**  
Auch wenn sich die native Service-API in CamelCase befindet, z. B. die API-Aktion`startSyncExecution`, geben Sie Parameter in an PascalCase, z. B.:. `StateMachineArn`

**Quote für Eingabe- oder Ergebnisdaten**  
Beim Senden oder Empfangen von Daten zwischen Diensten beträgt die maximale Eingabe oder das maximale Ergebnis für eine Aufgabe 256 KiB an Daten als UTF-8-kodierte Zeichenfolge. Siehe [Kontingente im Zusammenhang mit der Ausführung von Zustandsmaschinen](service-quotas.md#service-limits-state-machine-executions).

## IAM-Richtlinien für das Aufrufen von Amazon SQS
<a name="sqs-iam"></a>

Die folgenden Beispielvorlagen zeigen, wie IAM-Richtlinien auf der Grundlage der Ressourcen in Ihrer State-Machine-Definition AWS Step Functions generiert werden. Weitere Informationen erhalten Sie unter [So generiert Step Functions IAM-Richtlinien für integrierte Dienste](service-integration-iam-templates.md) und [Entdecken Sie Serviceintegrationsmuster in Step Functions](connect-to-resource.md).

*Statische Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sqs:SendMessage"
            ],
            "Resource": [
                "arn:aws:sqs:us-east-1:123456789012:myQueueName"
            ]
        }
    ]
}
```

*Dynamische Ressourcen*

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sqs:SendMessage"
            ],
            "Resource": "*"
        }
    ]
}
```

# Starten Sie eine neue AWS Step Functions Zustandsmaschine aus einer laufenden Ausführung
<a name="connect-stepfunctions"></a>

Step Functions lässt sich in seine eigene API als Serviceintegration integrieren. Erfahren Sie, wie Sie Step Functions verwenden, um eine neue Ausführung einer Zustandsmaschine direkt aus dem Aufgabenstatus einer laufenden Ausführung heraus zu starten. Verwenden Sie beim Erstellen neuer Workflows [verschachtelte Workflow-Ausführungen](concepts-nested-workflows.md), um die Komplexität Ihrer Haupt-Workflows zu reduzieren und gängige Prozesse wiederzuverwenden.

**Hauptmerkmale der Integration von Optimized Step Functions**  
Das [Ausführen einer Aufgabe (.sync)](connect-to-resource.md#connect-sync) Integrationsmuster ist verfügbar.

Weitere Informationen finden Sie hier:
+ [Beginnen Sie mit einer Aufgabe](concepts-nested-workflows.md)
+ [Integrieren von -Services](integrate-services.md)
+ [Übergeben von Parametern an eine Service-API in Step Functions](connect-parameters.md)

## Optimierte Step Functions APIs
<a name="connect-stepfunctions-api"></a>
+ [https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_StartExecution.html)

## Workflow-Beispiele
<a name="connect-stepfunctions-api-examples"></a>

Das folgende Beispiel enthält einen `Task`-Status, der die Ausführung eines anderen Zustandsautomaten startet und wartet, bis sie abgeschlossen ist.

```
{  
   "Type":"Task",
   "Resource":"arn:aws:states:::states:startExecution.sync:2",
   "Arguments":{  
      "Input":{
        "Comment": "Hello world!"
       },
      "StateMachineArn":"arn:aws:states:region:account-id:stateMachine:HelloWorld",
      "Name":"ExecutionName"
   },
   "End":true
}
```

Das folgende Beispiel enthält einen `Task`-Status, der die Ausführung eines anderen Zustandsautomaten startet.

```
{  
   "Type":"Task",
   "Resource":"arn:aws:states:::states:startExecution",
   "Arguments":{  
      "Input":{
        "Comment": "Hello world!"
       },
      "StateMachineArn":"arn:aws:states:region:account-id:stateMachine:HelloWorld",
      "Name":"ExecutionName"
   },
   "End":true
}
```

Das Folgende enthält einen `Task`-Zustand zur Implementierung des [Callback-](connect-to-resource.md#connect-wait-token) Service-Integrationsmusters.

```
{ 
   "Type":"Task",
   "Resource":"arn:aws:states:::states:startExecution.waitForTaskToken",
   "Arguments":{ 
      "Input":{
        "Comment": "Hello world!",
        "token": "{% $states.context.Task.Token %}"
       },
      "StateMachineArn":"arn:aws:states:region:account-id:stateMachine:HelloWorld",
      "Name":"ExecutionName"
   },
   "End":true
}
```

Um eine verschachtelte Workflow-Ausführung der übergeordneten Ausführung zuzuordnen, mit der sie gestartet wurde, übergeben Sie einen speziell benannten Parameter, der die Ausführungs-ID enthält, die aus dem [Context-Objekt](input-output-contextobject.md) abgerufen wurde. Wenn Sie eine verschachtelte Ausführung starten, verwenden Sie einen Parameter namens `AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID`. Übergeben Sie die Ausführungs-ID und den Verweis auf die ID im Context-Objekt mit. `$states.context.Execution.Id` Weitere Informationen finden Sie unter [Zugreifen auf das Context-Objekt](input-output-contextobject.md#contextobject-access).

```
{  
   "Type":"Task",
   "Resource":"arn:aws:states:::states:startExecution.sync",
   "Arguments":{  
      "Input":{
        "Comment": "Hello world!",
        "AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID": "{% $states.context.Execution.Id %}"
       },
      "StateMachineArn":"arn:aws:states:region:account-id:stateMachine:HelloWorld",
      "Name":"ExecutionName"
   },
   "End":true
}
```

 Verschachtelte Zustandsautomaten geben Folgendes zurück: 


| Ressource | Ausgabe | 
| --- | --- | 
| Startexecution.sync | Zeichenfolge | 
| Startexecution.sync:2 | JSON | 

Beide warten, bis der verschachtelte Zustandsautomat fertig ist, aber sie geben verschiedene `Output`-Formate zurück. Wenn Sie beispielsweise eine Lambda-Funktion erstellen, die das Objekt zurückgibt`{ "MyKey": "MyValue" }`, würden Sie die folgenden Antworten erhalten:

Für startExecution.sync:

```
{
   <other fields>
   "Output": "{ \"MyKey\": \"MyValue\" }" 
}
```

Für startExecution.sync:2:

```
{
   <other fields> 
   "Output": {
      "MyKey": "MyValue"
   }
}
```

### Konfiguration von IAM-Berechtigungen für verschachtelte Zustandsmaschinen
<a name="nested-stepfunctions-iam-permissions"></a>

Ein übergeordneter Zustandsmaschine bestimmt anhand von Abfragen und Ereignissen, ob ein untergeordneter Zustandsmaschine die Ausführung abgeschlossen hat. Für Abfragen ist eine Genehmigung erforderlich, `states:DescribeExecution` während für Ereignisse, die EventBridge an Step Functions gesendet werden, Berechtigungen für `events:PutTargets``events:PutRule`, und `events:DescribeRule` erforderlich sind. Wenn diese Berechtigungen in Ihrer IAM-Rolle fehlen, kann es zu einer Verzögerung kommen, bis ein übergeordneter Zustandsmaschine erfährt, dass die Ausführung des untergeordneten Zustandsmaschinen abgeschlossen ist.

Verwenden Sie für einen Zustandsmaschine, der die Ausführung eines einzelnen verschachtelten Workflows erfordert`StartExecution`, eine IAM-Richtlinie, die die Berechtigungen auf diesen Zustandsmaschine beschränkt. 

## IAM-Richtlinien für den Aufruf verschachtelter Step Functions Functions-Workflows
<a name="stepfunctions-iam"></a>

Verwenden Sie für eine Zustandsmaschine, die die Ausführung eines einzelnen verschachtelten Workflows erfordert`StartExecution`, eine IAM-Richtlinie, die die Berechtigungen auf diese Zustandsmaschine beschränkt. 

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "states:StartExecution"
            ],
            "Resource": [
                "arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachineName"
            ]
        }
    ]
}
```

Weitere Informationen finden Sie hier:
+ [Integration von Diensten mit Step Functions](integrate-services.md)
+ [Übergeben von Parametern an eine Service-API in Step Functions](connect-parameters.md)
+ [Starten Sie eine neue AWS Step Functions Zustandsmaschine aus einer laufenden Ausführung](#connect-stepfunctions)

------
#### [ Synchronous ]<a name="sync-async-iam-policies"></a>

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "states:StartExecution"
            ],
            "Resource": [
                "arn:aws:states:us-east-1:123456789012:stateMachine:stateMachineName"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "states:DescribeExecution",
                "states:StopExecution"
            ],
            "Resource": [
               "arn:aws:states:us-east-1:123456789012:execution:myStateMachineName:*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "events:PutTargets",
                "events:PutRule",
                "events:DescribeRule"
            ],
            "Resource": [
               "arn:aws:events:us-east-1:123456789012:rule/StepFunctionsGetEventsForStepFunctionsExecutionRule"
            ]
        }
    ]
}
```

------
#### [ Asynchronous ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "states:StartExecution"
            ],
            "Resource": [
                "arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachineName"
            ]
        }
    ]
}
```

------

**Erforderliche ARN-Typen**  
Beachten Sie in der Richtlinie für **Synchronous**, dass ein State-Machine-ARN `states:StartExecution` erforderlich ist, wohingegen `states:DescribeExecution` und ein Ausführungs-ARN `states:StopExecution` erforderlich ist.  
Wenn Sie irrtümlicherweise alle drei Aktionen kombinieren, ist der JSON-Code gültig, die IAM-Richtlinie jedoch falsch. Eine falsche Richtlinie kann zu Problemen beim and/or Zugriff auf Workflows während der Workflow-Ausführung führen.

Weitere Informationen zu verschachtelten Workflow-Ausführungen finden Sie unter [Starten Sie Workflow-Ausführungen von einem Aufgabenstatus aus in Step Functions](concepts-nested-workflows.md).