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á.
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 e. Transmitir parâmetros a uma API de serviço no Step Functions
Principais recursos da integração otimizada entre o Amazon ECS e o Fargate
-
O padrão de integração Executar um trabalho (.sync) é compatível.
O
ecs:runTask
pode retornar uma resposta HTTP 200, mas ter um campoFailures
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
.
Amazon ECS/Fargate otimizado APIs
-
RunTask
inicia uma nova tarefa usando a definição de tarefa especificada.
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
Para saber mais sobre a integração com AWS serviços no Step Functions, consulte Integração de produtos da e. Transmitir parâmetros a uma API de serviço no Step Functions
É 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 ContainerOverride
. 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",
"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"
]
}
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.
{
"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
}
}
}
Políticas do IAM para chamar o Amazon ECS/AWS Fargate
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 ter mais informações, consulte Como o Step Functions gera políticas do IAM para serviços integrados e Descobrir padrões de integração de serviços no 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 (Amazon ECS) que foram iniciadas pelo Step Functions, apesar da política do IAM "*"
.
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"
]
}
]
}
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.