Execute tarefas da Amazon ECS ou do Fargate com Step Functions - AWS Step Functions

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

Execute tarefas da Amazon ECS ou do Fargate com Step Functions

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

Para saber mais sobre a integração com AWS serviços em Step Functions, consulte e. Integração de produtos da Passando parâmetros para um serviço API em Step Functions

Principais recursos da integração otimizada entre Amazon e ECS Fargate
  • O padrão de integração Executar um trabalho (.sync) é compatível.

  • ecs:runTaskpode retornar uma resposta HTTP 200, mas ter um Failures campo não vazio da seguinte forma:

    • Solicitar resposta: retorne a resposta e não falhe na tarefa. Isso é o mesmo que não haver otimização.

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

ECSAmazon/Fargate compatível APIs

Parâmetros em Step Functions são expressos em PascalCase

Mesmo se o serviço nativo API estiver ativadocamelCase, por exemplo, a API açãostartSyncExecution, você especifica parâmetros em PascalCase, como:StateMachineArn.

Transferência de dados para uma ECS tarefa da Amazon

Para saber mais sobre a integração com AWS serviços em Step Functions, consulte e. Integração de produtos da Passando parâmetros para um serviço API em Step Functions

Você pode usar overrides para substituir o comando padrão de um contêiner e passar a entrada para suas ECS tarefas da Amazon. Consulte ContainerOverride. No exemplo, usamos JsonPath para passar valores para a Task da entrada para o Task estado.

O seguinte inclui um Task estado que executa uma ECS tarefa da Amazon e espera 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", "Parameters": { "Cluster": "cluster-arn", "TaskDefinition": "job-id", "Overrides": { "ContainerOverrides": [ { "Name": "container-name", "Command.$": "$.commands" } ] } }, "End": true } } }

A linha "Command.$": "$.commands" em ContainerOverrides transmite os comandos da entrada do estado para o contêiner.

Para o exemplo anterior, cada um dos comandos será transmitido como uma substituição de contêiner se a entrada para a execução for a seguinte.

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

O seguinte inclui um Task estado que executa uma ECS tarefa da Amazon e, em seguida, espera que o token da tarefa seja retornado. Consulte Aguarde um retorno de chamada com o token de tarefa.

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

IAMpolíticas para ligar para a AmazonECS/AWS Fargate

Os modelos de exemplo a seguir mostram como AWS Step Functions gera IAM políticas com base nos recursos em sua definição de máquina de estado. Para ter mais informações, consulte Como o Step Functions gera IAM políticas para serviços integrados e Descubra padrões de integração de serviços em Step Functions.

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 (AmazonECS) que foram iniciadas pelo Step Functions, apesar da "*" IAM política.

Run a Job (.sync)

Recursos estáticos

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:RunTask" ], "Resource": [ "arn:aws:ecs:[[region]]: [[accountId]]: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]]: [[accountId]]: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]]: [[accountId]]: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]]: [[accountId]]:task-definition/[[taskDefinition]]:[[revisionNumber]]" ] } ] }

Recursos dinâmicos

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

Se suas ECS tarefas agendadas da Amazon 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 à IAM função de CloudWatch Eventos da entidade chamadora, que neste caso é Step Functions.