As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
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.
Observe que não há otimizações para os padrões de integração Resposta de solicitação ou Aguardar um retorno de chamada com um token de tarefa.
Para obter mais informações, consulte:
Step Functions otimizadas APIs
-
-
Parâmetros compatíveis
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",
"Parameters":{
"Input":{
"Comment": "Hello world!"
},
"StateMachineArn":"arn:aws:states:us-east-1:123456789012: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",
"Parameters":{
"Input":{
"Comment": "Hello world!"
},
"StateMachineArn":"arn:aws:states:us-east-1:123456789012: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",
"Parameters":{
"Input":{
"Comment": "Hello world!",
"token.$": "$$.Task.Token"
},
"StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld",
"Name":"ExecutionName"
},
"End":true
}
Para associar uma execução de fluxo de trabalho aninhada à execução principal que a iniciou, passe um parâmetro com nome especial que inclua o ID de execução extraído do objeto Context. Ao iniciar uma execução aninhada, use um parâmetro chamado AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID
. Passe o ID de execução anexando .$
ao nome do parâmetro e referenciando o ID no objeto Context com. $$.Execution.Id
Para obter mais informações, consulte Acessando o 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
}
Máquinas de estado aninhadas retornam o seguinte:
Recurso | Saída |
---|---|
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, states:DescribeExecution
enquanto os eventos enviados 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:[[region]]
:[[accountId]]
:stateMachine:[[stateMachineName]]
"
]
}
]
}
Para obter mais informações, consulte:
{
"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"
]
}
]
}
Tipos de ARN necessários
Na política para Synchronous, observe que states:StartExecution
requer um ARN de máquina de estado, states:DescribeExecution
enquanto que exige um ARN states:StopExecution
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.