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
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 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
-
-
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 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:PutTargets
events: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:
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.