

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.

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