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:runTask
puede devolver una respuesta de HTTP 200, pero tener unFailures
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 errorAmazonECS.Unknown
en la tarea.
Compatible con ECS Amazon/Fargate APIs
-
RunTask
comienza una tarea nueva utilizando la definición de tarea especificada.
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.
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.