Iniciar una nueva AWS Step Functions estado de la máquina a partir de una ejecución en ejecución - 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.

Iniciar una nueva AWS Step Functions estado de la máquina a partir de una ejecución en ejecución

Step Functions se integra con su propia integración API como servicio. Aprenda a usar Step Functions para iniciar una nueva ejecución de una máquina de estados directamente desde el estado de la tarea de una ejecución en ejecución. Al crear nuevos flujos de trabajo, utilice las ejecuciones de flujos de trabajo anidados para reducir la complejidad de los flujos de trabajo principales y para reutilizar los procesos comunes.

Características clave de la integración de Optimized Step Functions

Tenga en cuenta que no hay optimizaciones para los patrones de integración Respuesta de la solicitud o Espera a que te devuelvan la llamada con el token de tarea.

Para obtener más información, consulte los siguientes temas:

Funciones Step Functions compatibles APIs

Ejemplos de flujo de trabajo

El ejemplo siguiente incluye un estado Task que inicia una ejecución de otra máquina de estado y espera a que se complete.

{ "Type":"Task", "Resource":"arn:aws:states:::states:startExecution.sync:2", "Parameters":{ "Input":{ "Comment": "Hello world!" }, "StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld", "Name":"ExecutionName" }, "End":true }

El ejemplo siguiente incluye un estado Task que inicia una ejecución de otra máquina de estado.

{ "Type":"Task", "Resource":"arn:aws:states:::states:startExecution", "Parameters":{ "Input":{ "Comment": "Hello world!" }, "StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld", "Name":"ExecutionName" }, "End":true }

El ejemplo siguiente incluye un estado Task que implementa el patrón de integración de servicios de devolución de llamada.

{ "Type":"Task", "Resource":"arn:aws:states:::states:startExecution.waitForTaskToken", "Parameters":{ "Input":{ "Comment": "Hello world!", "token.$": "$$.Task.Token" }, "StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld", "Name":"ExecutionName" }, "End":true }

Para asociar una ejecución de flujo de trabajo anidado a la ejecución principal que la inició, transfiera un parámetro denominado especialmente que incluya el ID de ejecución extraído del objeto context. Al iniciar una ejecución anidada, utilice un parámetro denominado AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID. Transfiera el ID de ejecución añadiendo .$ al nombre del parámetro y haciendo referencia al ID en el objeto context con $$.Execution.Id. Para obtener más información, consulte Acceso al objeto de contexto.

{ "Type":"Task", "Resource":"arn:aws:states:::states:startExecution.sync", "Parameters":{ "Input":{ "Comment": "Hello world!", "AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id" }, "StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld", "Name":"ExecutionName" }, "End":true }

Las máquinas de estado anidadas devuelven lo siguiente:

Recurso Salida
startExecution.sync Cadena
startExecution.sync 2: JSON

Ambos esperarán a que se complete la máquina de estado anidada, pero devuelven diferentes formatos Output. Por ejemplo, si crea una función de Lambda que devuelve el objeto { "MyKey": "MyValue" }, obtendría las siguientes respuestas:

Para .sync: startExecution

{ <other fields> "Output": "{ \"MyKey\": \"MyValue\" }" }

Para startExecution .sync: 2:

{ <other fields> "Output": { "MyKey": "MyValue" } }

Configuración de IAM permisos para máquinas de estado anidadas

Una máquina de estado principal determina si una máquina de estado secundaria ha completado la ejecución mediante sondeos y eventos. Las votaciones requieren permiso states:DescribeExecution mientras que los eventos enviados EventBridge a Step Functions requieren permisos para events:PutTargetsevents:PutRule, yevents:DescribeRule. Si su IAM función no tiene estos permisos, es posible que se produzca un retraso antes de que una máquina de estados principal se dé cuenta de que ha finalizado la ejecución de la máquina de estados secundaria.

En el caso de una máquina de estados que StartExecution requiera la ejecución de un único flujo de trabajo anidado, utilice una IAM política que limite los permisos a esa máquina de estados.

Para obtener más información, consulte IAMlos permisos de Step Functions.

IAMpolíticas para llamar a flujos de trabajo anidados de Step Functions

En el caso de una máquina de estados que StartExecution requiera la ejecución de un único flujo de trabajo anidado, utilice una IAM política que limite los permisos a esa máquina de estados.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:StartExecution" ], "Resource": [ "arn:aws:states:[[region]]:[[accountId]]:stateMachine:[[stateMachineName]]" ] } ] }

Para más información, consulte los siguientes temas:

Synchronous
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:StartExecution" ], "Resource": [ "arn:aws:states:[[region]]:[[accountId]]:stateMachine:[[stateMachineName]]" ] }, { "Effect": "Allow", "Action": [ "states:DescribeExecution", "states:StopExecution" ], "Resource": [ "arn:aws:states:[[region]]:[[accountId]]:execution:[[stateMachineName]]:*" ] }, { "Effect": "Allow", "Action": [ "events:PutTargets", "events:PutRule", "events:DescribeRule" ], "Resource": [ "arn:aws:events:[[region]]:[[accountId]]:rule/StepFunctionsGetEventsForStepFunctionsExecutionRule" ] } ] }
Asynchronous
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:StartExecution" ], "Resource": [ "arn:aws:states:[[region]]:[[accountId]]:stateMachine:[[stateMachineName]]" ] } ] }

Para obtener más información acerca de las ejecuciones de flujos de trabajo anidados, consulte Inicie las ejecuciones de flujos de trabajo desde un estado de tarea en Step Functions.