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 máquina de AWS Step Functions estados a partir de una ejecución en ejecución
Step Functions se integra con su propia API como integración de servicios. Aprenda cómo usar Step Functions para iniciar una nueva ejecución de una máquina de estado directamente desde el estado de la tarea de una ejecución en curso. 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 principales de la integración optimizada de Step Functions
El patrón de integración Ejecutar un trabajo (.sync) está disponible.
Tenga en cuenta que no hay optimizaciones para los patrones de integración Respuesta de la solicitud o Cómo esperar una devolución de llamada con el token de tarea.
Para obtener más información, consulte los siguientes temas:
Funciones Step Functions optimizadas APIs
-
-
Parámetros admitidos
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 anidada a la ejecución principal que la inició, pase un parámetro con un nombre especial que incluya el identificador 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
. Para transferir el ID de ejecución, .$
añádalo al nombre del parámetro y haga referencia al ID en el objeto de contexto con él. $$.Execution.Id
Para obtener más información, consulte Acceder al objeto Context.
{
"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 | Output |
---|---|
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 startExecution.sync:
{
<other fields>
"Output": "{ \"MyKey\": \"MyValue\" }"
}
Para startExecution.sync:2:
{
<other fields>
"Output": {
"MyKey": "MyValue"
}
}
Configuración de los permisos de IAM 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:PutTargets
events:PutRule
, yevents:DescribeRule
. Si faltan estos permisos en su rol de IAM, es posible que se produzca un retraso antes de que una máquina de estado principal se dé cuenta de que se ha completado la ejecución de la máquina de estado secundaria.
Para una máquina de estado que llame a StartExecution
para una única ejecución de flujo de trabajo anidado, utilice una política de IAM que limite los permisos a esa máquina de estado.
Políticas de IAM para llamar a flujos de trabajo anidados de Step Functions
Para una máquina de estado que llame a StartExecution
para una única ejecución de flujo de trabajo anidado, utilice una política de IAM que limite los permisos a esa máquina de estado.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"states:StartExecution"
],
"Resource": [
"arn:aws:states:[[region]]
:[[accountId]]
:stateMachine:[[stateMachineName]]
"
]
}
]
}
Para obtener más información, consulte los siguientes temas:
Tipos de ARN necesarios
En la política de Synchronous, tenga en cuenta que states:StartExecution
requiere un ARN de máquina de estado states:StopExecution
y requiere states:DescribeExecution
un ARN de ejecución.
Si combinas las tres acciones por error, el JSON será válido pero la política de IAM será incorrecta. Una política incorrecta puede provocar atascos en los flujos de trabajo o problemas de acceso durante la ejecución del flujo de trabajo.
Para obtener más información acerca de las ejecuciones de flujos de trabajo anidados, consulte Iniciar ejecuciones de flujo de trabajo desde un estado de tarea en Step Functions..