Administrar las 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.

Administrar las tareas de Amazon ECS o Fargate con Step Functions

Step Functions puede controlar ciertos AWS servicios directamente desde Lenguaje de estados de Amazon (ASL). Para obtener más información, consulte Trabajo con otros servicios y Cómo pasar parámetros a una API de servicio.

En qué se diferencia la integración optimizada de Amazon ECS/Fargate de la integración de Amazon ECS o Fargate SDK AWS
  • Se admite el patrón de integración Ejecutar un trabajo (.sync).

  • ecs:runTask puede devolver una respuesta HTTP 200, pero tiene un campo Failures 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.

API y sintaxis de ECS/Fargate compatibles:

nota

Los parámetros Step Functions se expresan en PascalCase, incluso si la API de servicio nativa está en CamelCase. Por ejemplo, podría usar la acción de la API de Step Functions startSyncExecution y especificar su parámetro como StateMachineArn.

Pasar datos a una tarea de Amazon ECS

Step Functions puede controlar ciertos AWS servicios directamente desde Lenguaje de estados de Amazon (ASL). Para obtener más información, consulte Trabajo con otros servicios y Cómo pasar parámetros a una API de servicio.

Puede utilizar overrides para anular el comando predeterminado de un contenedor y pasar información de entrada a las tareas de Amazon ECS. Consulte ContainerOverride. En el ejemplo, hemos utilizado JsonPath para pasar valores Task de la entrada al Task estado.

El ejemplo siguiente incluye un estado Task que ejecuta una tarea de Amazon ECS y espera a que finalice.

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

El ejemplo siguiente incluye un estado Task que ejecuta una tarea de Amazon ECS y, a continuación, espera a que se devuelva el token de tarea. Consulte Cómo esperar una devolución de 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 } } }

Para obtener información sobre cómo configurar IAM los permisos cuando se utilizan Step Functions con otros AWS servicios, consultePolíticas de IAM para servicios integrados.