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:runTask
pode retornar uma resposta HTTP 200, mas ter umFailures
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 erroAmazonECS.Unknown
.
ECSAmazon/Fargate compatível APIs
-
RunTask
inicia uma nova tarefa usando a definição de tarefa especificada.
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.
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.