Ejecuta tareas de Amazon ECS o Fargate con Step Functions - AWS Step Functions

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Ejecuta tareas de Amazon ECS o Fargate con Step Functions

Aprenda a integrar Step Functions con Amazon ECS o Fargate para ejecutar y gestionar tareas. En AmazonECS, una tarea es la unidad de cálculo fundamental. Las tareas se definen mediante una definición de tareas que especifica cómo debe ejecutarse un contenedor Docker, incluida la imagen del contenedor, los límites de memoria, CPU la configuración de la red y otros parámetros. En esta página se enumeran las ECS API acciones de Amazon disponibles y se proporcionan instrucciones sobre cómo pasar datos a una ECS tarea de Amazon mediante Step Functions.

Para obtener información sobre la integración con AWS servicios en Step Functions, consulte Integración de los servicios de yPasar parámetros a un servicio API en Step Functions.

Características clave de la integración optimizada de ECS Amazon/Fargate
  • Se admite el patrón de integración Ejecutar un trabajo (.sync).

  • ecs:runTaskpuede devolver una respuesta de HTTP 200, pero tener un Failures campo que no esté vacío de la siguiente manera:

    • Respuesta de solicitud: devuelve la respuesta y no se producen errores en la tarea. Esto es lo mismo que no realizar ninguna optimización.

    • Ejecutar un trabajo o un token de tarea: si se encuentra un campo Failures que no está vacío, se produce un error AmazonECS.Unknown en la tarea.

Compatible con ECS Amazon/Fargate APIs

Parámetros en Step Functions se expresan en PascalCase

Incluso si el servicio nativo API está encamelCase, por ejemplo, la API acciónstartSyncExecution, se especifican parámetros en PascalCase, como:StateMachineArn.

Transferencia de datos a una ECS tarea de Amazon

Para obtener información sobre la integración con AWS servicios en Step Functions, consulte Integración de los servicios de yPasar parámetros a un servicio API en Step Functions.

Puedes usarlo overrides para anular el comando predeterminado de un contenedor y pasar la entrada a tus ECS tareas de Amazon. Consulte ContainerOverride. En el ejemplo, hemos utilizado JsonPath para pasar valores Task desde la entrada hasta el Task estado.

A continuación se incluye un Task estado que ejecuta una ECS tarea de Amazon y espera a que se complete.

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

La línea "Command.$": "$.commands" en ContainerOverrides pasa los comandos de la entrada de estado al contenedor.

En el ejemplo anterior, cada uno de los comandos se transferirá como una anulación del contenedor si la entrada de la ejecución es la siguiente.

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

A continuación se incluye un Task estado en el que se ejecuta una ECS tarea de Amazon y, a continuación, se espera a que se devuelva el token de la tarea. Consulte Espera a que te devuelvan la llamada con el token de tarea.

{ "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 llamar a AmazonECS/AWS Fargate

En las siguientes plantillas de ejemplo se muestra cómo AWS Step Functions genera IAM políticas en función de los recursos de la definición de su máquina de estados. Para obtener más información, consulte Cómo Step Functions genera IAM políticas para servicios integrados y Descubra los patrones de integración de servicios en Step Functions.

Dado que el valor de TaskId no se conoce hasta que se envía la tarea, Step Functions crea una política de "Resource": "*" con más privilegios.

nota

A pesar de la "*" IAM política, solo puede detener las tareas de Amazon Elastic Container Service (AmazonECS) iniciadas por Step Functions.

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": "*" } ] }

Si ECS las tareas programadas de Amazon requieren el uso de una función de ejecución de tareas, una función de tarea o una anulación de funciones de tarea, debe añadir iam:PassRole permisos para cada función de ejecución de tareas, función de tarea o anulación de función de tarea a la IAM función CloudWatch Eventos de la entidad que realiza la llamada, que en este caso es Step Functions.