

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Esegui attività Amazon ECS o Fargate con Step Functions
<a name="connect-ecs"></a>

Scopri come integrare Step Functions con Amazon ECS o Fargate per eseguire e gestire le attività. In Amazon ECS, un'attività è l'unità di calcolo fondamentale. Le attività sono definite da una definizione di attività che specifica come deve essere eseguito un contenitore Docker, tra cui l'immagine del contenitore, i limiti di CPU e memoria, la configurazione di rete e altri parametri. Questa pagina elenca le azioni API Amazon ECS disponibili e fornisce istruzioni su come trasferire dati a un task Amazon ECS utilizzando Step Functions.

Per ulteriori informazioni sull'integrazione con AWS i servizi in Step Functions, vedere [Integrazione dei servizi ](integrate-services.md) e[Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md).

**Caratteristiche principali dell' ECS/Fargate integrazione ottimizzata con Amazon**  
Il modello di [Esegui un processo (.sync)](connect-to-resource.md#connect-sync) integrazione è supportato.
`ecs:runTask`può restituire una risposta HTTP 200, ma avere un `Failures` campo non vuoto come segue:  
**Richiesta di risposta**: restituisci la risposta e non fallire l'operazione, il che equivale alle integrazioni non ottimizzate.
**Esegui un Job o Task Token**: se viene rilevato un `Failures` campo non vuoto, l'operazione fallisce con un `AmazonECS.Unknown` errore.

## Amazon ottimizzato 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) avvia un nuovo task utilizzando la definizione di task specificata.

**I parametri in Step Functions sono espressi in PascalCase**  
Anche se l'API del servizio nativo è in CamelCase, ad esempio l'`startSyncExecution`azione API, si specificano parametri PascalCase in, ad esempio:. `StateMachineArn`

## Trasferimento di dati a un'attività Amazon ECS
<a name="connect-ecs-pass-to"></a>

Per ulteriori informazioni sull'integrazione con AWS i servizi in Step Functions, vedere [Integrazione dei servizi ](integrate-services.md) e[Passaggio di parametri a un'API di servizio in Step Functions](connect-parameters.md).

Puoi utilizzarlo `overrides` per sovrascrivere il comando predefinito per un contenitore e passare l'input alle tue attività Amazon ECS. Per informazioni, consulta [https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerOverride.html](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerOverride.html). Nell'esempio, abbiamo passato JsonPath i valori `Task` dall'input allo `Task` stato.

Quanto segue include uno `Task` stato che esegue un'attività Amazon ECS e attende che venga completata.

```
{
 "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
    }
  }
}
```

La riga `Command` in `ContainerOverrides` passa i comandi dall'input di stato al container.

Nell'esempio precedente, la macchina a stati, dato il seguente input, ogni comando veniva passato come override del contenitore:

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

Quanto segue include uno `Task` stato che esegue un'attività Amazon ECS e quindi attende la restituzione del token dell'attività. Per informazioni, consulta [Attendi una richiamata con 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
      }
   }
}
```

## Politiche IAM per le chiamate ad Amazon ECS/ AWS Fargate
<a name="ecs-iam"></a>

I seguenti modelli di esempio mostrano come AWS Step Functions generare le politiche IAM in base alle risorse nella definizione della macchina a stati. Per ulteriori informazioni, consultare [In che modo Step Functions genera policy IAM per servizi integrati](service-integration-iam-templates.md) e [Scopri i modelli di integrazione dei servizi in Step Functions](connect-to-resource.md).

Poiché il valore di non `TaskId` è noto fino all'invio dell'attività, Step Functions crea una `"Resource": "*"` politica più privilegiata.

**Nota**  
Puoi interrompere solo le attività di Amazon Elastic Container Service (Amazon ECS) avviate da Step Functions, nonostante `"*"` la policy IAM.

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

*Risorse statiche*

```
{
    "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"
            ]
        }
    ]
}
```

*Risorse dinamiche*

```
{
    "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) ]

*Risorse statiche*

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

*Risorse dinamiche*

****  

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

------

Se le attività pianificate di Amazon ECS richiedono l'uso di un ruolo di esecuzione di attività, un ruolo di attività o un'eccezione di ruolo di attività, è necessario aggiungere `iam:PassRole` le autorizzazioni per ogni ruolo di esecuzione dell'attività, ruolo dell'attività o sovrascrittura del ruolo dell'attività al ruolo IAM CloudWatch Events dell'entità chiamante, che in questo caso è Step Functions.