Inicie uma nova máquina de estado do AWS Step Functions por meio de uma execução em andamento
O Step Functions se integra à sua própria API como uma integração de serviço. Saiba como usar o Step Functions para iniciar uma nova execução de uma máquina de estado diretamente do estado da tarefa de uma execução em andamento. Ao criar novos fluxos de trabalho, use execuções de fluxo de trabalho aninhado para reduzir a complexidade dos fluxos de trabalho principais e reutilizar processos comuns.
Principais recursos da integração otimizada ao Step Functions
O padrão de integração Executar um trabalho (.sync) está disponível.
Para obter mais informações, consulte:
APIs otimizadas do Step Functions
Exemplos de fluxo de trabalho
Veja a seguir um estado Task que inicia uma execução de outra máquina de estado e aguarda até que ela seja concluída.
{
"Type":"Task",
"Resource":"arn:aws:states:::states:startExecution.sync:2",
"Arguments":{
"Input":{
"Comment": "Hello world!"
},
"StateMachineArn":"arn:aws:states:region:account-id:stateMachine:HelloWorld",
"Name":"ExecutionName"
},
"End":true
}
Veja a seguir um estado Task que inicia uma execução de outra máquina de estado.
{
"Type":"Task",
"Resource":"arn:aws:states:::states:startExecution",
"Arguments":{
"Input":{
"Comment": "Hello world!"
},
"StateMachineArn":"arn:aws:states:region:account-id:stateMachine:HelloWorld",
"Name":"ExecutionName"
},
"End":true
}
Veja a seguir um estado Task que implementa o padrão de integração do serviço retorno de chamada.
{
"Type":"Task",
"Resource":"arn:aws:states:::states:startExecution.waitForTaskToken",
"Arguments":{
"Input":{
"Comment": "Hello world!",
"token": "{% $states.context.Task.Token %}"
},
"StateMachineArn":"arn:aws:states:region:account-id:stateMachine:HelloWorld",
"Name":"ExecutionName"
},
"End":true
}
Para associar a execução de um fluxo de trabalho aninhado à execução principal que o iniciou, transmita um parâmetro especialmente nomeado que inclua o ID de execução obtido do objeto de contexto. Ao iniciar uma execução aninhada, use um parâmetro chamado AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID. Transmita o ID de execução anexando .$ ao nome do parâmetro e fazendo referência ao ID no objeto de contexto com $$.Execution.Id. Para obter mais informações, consulte Acessar o objeto de contexto.
{
"Type":"Task",
"Resource":"arn:aws:states:::states:startExecution.sync",
"Arguments":{
"Input":{
"Comment": "Hello world!",
"AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id"
},
"StateMachineArn":"arn:aws:states:region:account-id:stateMachine:HelloWorld",
"Name":"ExecutionName"
},
"End":true
}
Máquinas de estado aninhadas retornam o seguinte:
| Recurso | Resultado |
|---|---|
| startExecution.sync | String |
| startExecution.sync:2 | JSON |
Ambos aguardarão a conclusão da máquina de estado aninhado, mas eles retornam formatos diferentes de Output. Por exemplo, se você criar uma função do Lambda que retorna o objeto { "MyKey": "MyValue" }, você obteria as seguintes respostas:
Para startExecution.sync:
{
<other fields>
"Output": "{ \"MyKey\": \"MyValue\" }"
}
Para startExecution.sync:2:
{
<other fields>
"Output": {
"MyKey": "MyValue"
}
}
Configurando permissões do IAM para máquinas de estado aninhado
Uma máquina de estado principal determina se uma máquina de estado secundária concluiu a execução usando pesquisas e eventos. A enquete requer permissão para states:DescribeExecution, enquanto os eventos enviados pelo EventBridge para o Step Functions exigem permissões para events:PutTargets, events:PutRule e events:DescribeRule. Se essas permissões estiverem ausentes em seu perfil do IAM, pode haver um atraso até que uma máquina de estado principal tome conhecimento da conclusão da execução da máquina de estado secundária.
Para uma máquina de estado que chama StartExecution para uma única execução de fluxo de trabalho aninhado, use uma política do IAM que limita as permissões a essa máquina de estado.
Políticas do IAM para chamar fluxos de trabalho aninhados do Step Functions
Para uma máquina de estado que chama StartExecution para uma única execução de fluxo de trabalho aninhado, use uma política do IAM que limita as permissões a essa máquina de estado.
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:StartExecution" ], "Resource": [ "arn:aws:states:us-east-1:123456789012:stateMachine:myStateMachineName" ] } ] }
Para obter mais informações, consulte:
Tipos de ARN necessários
Na política de Síncrono, observe que states:StartExecution requer um ARN de máquina de estado, enquanto states:DescribeExecution e states:StopExecution exigem um ARN de execução.
Se você combinar as três ações por engano, o JSON será válido, mas a política do IAM estará incorreta. Uma política incorreta pode causar fluxos de trabalho paralisados e/ou problemas de acesso durante a execução do fluxo de trabalho.
Para obter mais informações sobre execuções de fluxos de trabalho aninhados, consulte: Iniciar execuções de fluxo de trabalho usando um estado de tarefa no Step Functions.