

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Realizar tarefas do ECS ou do Fargate com o Step Functions
<a name="connect-ecs"></a>

Saiba como integrar o Step Functions ao Amazon ECS ou ao Fargate para realizar e gerenciar tarefas. No Amazon ECS, uma tarefa é a unidade fundamental da computação. As tarefas têm uma definição que especifica como um contêiner do Docker deve ser executado, como imagem do contêiner, limites de CPU e de memória, configuração de rede e outros parâmetros. Esta página lista as ações de API do Amazon ECS disponíveis e fornece instruções sobre como transmitir dados para uma tarefa do Amazon ECS usando o Step Functions.

Para saber mais sobre a integração com AWS serviços no Step Functions, consulte [Integração de produtos da ](integrate-services.md) e. [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)

**Principais recursos da ECS/Fargate integração otimizada com a Amazon**  
O padrão de integração [Executar um trabalho (.sync)](connect-to-resource.md#connect-sync) é compatível.
O `ecs:runTask` pode retornar uma resposta HTTP 200, mas ter um campo `Failures` não vazio da seguinte forma:  
**Resposta à solicitação**: retorna a resposta e não falha na tarefa, o mesmo que integrações não otimizadas.
**Executar um trabalho ou um token de tarefa**: se um campo `Failures` não vazio for encontrado, a tarefa falhará com um erro `AmazonECS.Unknown`.

## Amazon otimizada 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) inicia uma nova tarefa usando a definição de tarefa especificada.

**Os parâmetros em Step Functions são expressos em PascalCase**  
Mesmo que a API de serviço nativa esteja no CamelCase, por exemplo, a `startSyncExecution` ação da API, você especifica parâmetros PascalCase em, como:. `StateMachineArn`

## Como transmitir dados para uma tarefa do Amazon ECS
<a name="connect-ecs-pass-to"></a>

Para saber mais sobre a integração com AWS serviços no Step Functions, consulte [Integração de produtos da ](integrate-services.md) e. [Transmitir parâmetros a uma API de serviço no Step Functions](connect-parameters.md)

É possível usar o comando `overrides` para substituir o comando padrão de um contêiner e transmitir a entrada para as tarefas do Amazon ECS. Consulte [https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerOverride.html](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ContainerOverride.html). No exemplo, usamos JsonPath para passar valores para a `Task` da entrada para o `Task` estado.

Veja a seguir um estado `Task` que executa uma tarefa do Amazon ECS e aguarda até que ela seja concluída.

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

A linha `Command` em `ContainerOverrides` transmite os comandos da entrada do estado para o contêiner.

No exemplo anterior da máquina de estado, dada a seguinte entrada, cada um dos comandos seria passado como uma substituição de contêiner:

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

Veja a seguir um estado `Task` que executa uma tarefa do Amazon ECS e aguarda o retorno do token da tarefa. Consulte [Aguardar um retorno de chamada com um token de tarefa](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
      }
   }
}
```

## Políticas do IAM para chamar o Amazon ECS/AWS Fargate
<a name="ecs-iam"></a>

Os modelos de exemplo a seguir mostram como AWS Step Functions gera políticas do IAM com base nos recursos na definição da sua máquina de estado. Para obter mais informações, consulte [Como o Step Functions gera políticas do IAM para serviços integrados](service-integration-iam-templates.md) e [Descobrir padrões de integração de serviços no Step Functions](connect-to-resource.md).

Uma vez que o valor de `TaskId` não é conhecido até que a tarefa seja enviada, o Step Functions cria uma política de `"Resource": "*"` com mais privilégios.

**nota**  
Você só pode interromper tarefas do Amazon Elastic Container Service (Amazon ECS) que foram iniciadas pelo Step Functions, apesar da política do IAM `"*"`.

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

*Recursos estáticos*

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

*Recursos dinâmicos*

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

*Recursos estáticos*

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

*Recursos dinâmicos*

****  

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

------

Se suas tarefas agendadas do Amazon ECS exigirem o uso de uma função de execução de tarefa, uma função de tarefa ou uma substituição de função de tarefa, você deverá adicionar `iam:PassRole` permissões para cada função de execução de tarefa, função de tarefa ou substituição de função de tarefa à função CloudWatch Events IAM da entidade chamadora, que neste caso é Step Functions.