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á.
Estado de tarefa do fluxo de trabalho
Gerenciando o estado e transformando dados
Recentemente, o Step Functions adicionou variáveis JSONata para gerenciar dados de estado e transformação.
Saiba mais sobre como transmitir dados com variáveis e transformar dados com JSONata.
Um estado Task
("Type": "Task"
) representa uma unidade de trabalho específica executada por uma máquina de estado. Uma tarefa executa o trabalho usando uma atividade ou AWS Lambda função, integrando-se a outros suportados ou invocando uma Serviços da AWS HTTPSAPI, como o Stripe.
O Amazon States Language representa tarefas definindo o tipo de estado Task
e fornecendo à tarefa o Amazon Resource Name (ARN) da atividade, da função Lambda ou do HTTPS API endpoint.
Invocar uma função com argumentos JSONata
A definição de estado da tarefa a seguir (JSONata) invoca uma função Lambda chamada. priceWatcher
Observe o uso de JSONata expressões para consultar dados de entrada para usar em Argumentos e o resultado da tarefa no campo de atribuição.
"Get Current Price": {
"Type": "Task",
"QueryLanguage" : "JSONata",
"Resource": "arn:aws:states:::lambda:invoke",
"Next": "Check Price",
"Arguments": {
"Payload": {
"product": "{% $states.context.Execution.Input.product %}"
},
"FunctionName": "arn:aws:lambda:<region>:123456789012:function:priceWatcher:$LATEST"
},
"Assign": {
"currentPrice": "{% $states.result.Payload.current_price %}"
}
}
Invocar uma função com parâmetros JSONPath
A definição de estado da tarefa a seguir (JSONPath) invoca uma função Lambda chamada. HelloFunction
"Lambda Invoke": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"Payload.$": "$",
"FunctionName": "arn:aws:lambda:us-east-2
:123456789012
:function:HelloFunction
:$LATEST"
},
"End": true
}
Tipos de tarefa
O Step Functions é compatível com os seguintes tipos de tarefa que você pode especificar em uma definição de estado Tarefa.
Você especifica um tipo de tarefa fornecendo-o ARN no Resource
campo de uma definição de estado da tarefa. O exemplo a seguir mostra a sintaxe do campo Resource
. Todos os tipos de tarefas, exceto aquele que invoca um HTTPSAPI, usam a sintaxe a seguir. Para obter informações sobre a sintaxe da HTTP tarefa, consulteFluxos de trabalho HTTPS APIs do Call in Step Functions.
Na definição do estado da tarefa, substitua o texto em itálico na sintaxe a seguir pelas informações específicas do AWS recurso.
arn:partition
:service
:region
:account
:task_type
:name
A lista a seguir explica os componentes individuais dessa sintaxe.
-
partition
é a AWS Step Functions partição a ser usada, mais comumenteaws
. -
service
indica o AWS service (Serviço da AWS) usado para executar a tarefa e pode ser um dos seguintes valores:-
states
para uma atividade. -
lambda
para uma função do Lambda. Se você se integrar com outros Serviços da AWS, por exemplo, Amazon SNS ou Amazon DynamoDB, use ou.sns
dynamodb
-
-
region
é o código da AWS região em que a atividade Step Functions ou o tipo de máquina de estado, a função Lambda ou qualquer outro AWS recurso foi criado. -
account
é o Conta da AWS ID no qual você definiu o recurso. -
task_type
é o tipo de tarefa a ser executada. Pode ter um dos valores a seguir:-
activity
– Uma atividade. -
function
– Uma função do Lambda. -
– O nome de um serviço conectado compatível (consulte Integrar serviços ao Step Functions).servicename
-
-
name
é o nome do recurso registrado (nome da atividade, nome da função Lambda ou API ação do serviço).
nota
O Step Functions não suporta referências ARNs entre partições ou regiões. Por exemplo, aws-cn
não consegue invocar tarefas na partição da aws
e vice-versa.
As seções a seguir oferecem mais detalhes sobre cada tipo de tarefa.
Atividade
As atividades representam operadores (processos ou threads), implementados e hospedados por você, que executam uma tarefa específica. Eles oferecem suporte apenas de fluxos de trabalho padrão, não de expressos.
A atividade Resource
ARNs usa a seguinte sintaxe.
arn:partition
:states:region
:account
:activity:name
nota
Você deve criar atividades com Step Functions (usando uma CreateActivityAPIação ou o console Step Functions
Para obter mais informações sobre a criação de uma atividade e a implementação de operadores, consulte Atividades.
Funções do Lambda
As tarefas Lambda executam uma função usando o. AWS Lambda Para especificar uma função Lambda, use a função ARN Lambda no campo. Resource
Dependendo do tipo de integração (integração otimizada ou AWS SDKintegração) que você usa para especificar uma função Lambda, a sintaxe do campo da função Lambda varia. Resource
A seguinte sintaxe do campo Resource
é um exemplo de uma integração otimizada com uma função do Lambda.
"arn:aws:states:::lambda:invoke"
A sintaxe de Resource
campo a seguir é um exemplo de AWS SDK integração com uma função Lambda.
"arn:aws:states:::aws-sdk:lambda:invoke"
A definição de estado Task
a seguir mostra um exemplo de uma integração otimizada com uma função do Lambda chamada
.HelloWorld
"LambdaState": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"OutputPath": "$.Payload",
"Parameters": {
"Payload.$": "$",
"FunctionName": "arn:aws:lambda:us-east-1:function:HelloWorld:$LATEST
"
},
"Next": "NextState"
}
Depois que a função Lambda especificada no Resource
campo for concluída, sua saída será enviada para o estado identificado no Next
campo (” “). NextState
Um suportado AWS service (Serviço da AWS)
Quando você faz referência a um recurso conectado, o Step Functions chama diretamente as API ações de um serviço suportado. Especifique o serviço e a ação no campo Resource
.
O serviço conectado Resource
ARNs usa a seguinte sintaxe.
arn:partition
:states:region
:account
:servicename
:APIname
nota
Para criar uma conexão síncrona com um recurso conectado, anexe .sync
à APIname
entrada no. ARN Para obter mais informações, consulte Integração de produtos da .
Por exemplo:
{
"StartAt": "BATCH_JOB",
"States": {
"BATCH_JOB": {
"Type": "Task",
"Resource": "arn:aws:states:::batch:submitJob.sync",
"Parameters": {
"JobDefinition": "preprocessing",
"JobName": "PreprocessingBatchJob",
"JobQueue": "SecondaryQueue",
"Parameters.$": "$.batchjob.parameters",
"RetryStrategy": {
"attempts": 5
}
},
"End": true
}
}
}
Campos do estado Tarefa
Além dos campos de estado comuns, os estados Task
têm os campos a seguir.
-
Resource
(obrigatório) -
AURI, especialmente uma ARN que identifica de forma exclusiva a tarefa específica a ser executada.
Arguments
(Opcional, JSONata somente)-
Usado para passar informações para as API ações dos recursos conectados. Os valores podem incluir JSONata expressões. Para obter mais informações, consulte Transformando dados com Step JSONata Functions.
Output
(Opcional, JSONata somente)-
Usado para especificar e transformar a saída do estado. Quando especificado, o valor substitui o padrão de saída de estado.
O campo de saída aceita qualquer JSON valor (objeto, matriz, string, número, booleano, nulo). Qualquer valor de string, incluindo aqueles dentro de objetos ou matrizes, será avaliado como JSONata se estivesse cercado por {%%} caracteres.
A saída também aceita uma JSONata expressão diretamente, por exemplo: “Output”: “{% jsonata expression%}”
Para obter mais informações, consulte Processamento de entrada e saída.
Parameters
(Opcional, JSONPath somente)-
Usado para passar informações para as API ações dos recursos conectados. Os parâmetros podem usar uma mistura de estática JSON JsonPath
e. Para obter mais informações, consulte Passando parâmetros para um serviço API em Step Functions. Credentials
(opcional)-
Especifica um perfil de destino que o perfil de execução da máquina de estado deve assumir antes de invocar o
Resource
especificado. Como alternativa, você também pode especificar um JSONPath valor ou uma função intrínseca que se transforma em uma IAM função ARN em tempo de execução com base na entrada de execução. Se você especificar um JSONPath valor, deverá prefixá-lo com a$.
notação.Para obter exemplos de uso desse campo no estado
Task
, consulteExemplos do campo Credenciais do estado Tarefa. Para ver um exemplo de como usar esse campo para acessar um AWS recurso entre contas a partir de sua máquina de estado, consulteAcessar recursos da AWS entre contas no Step Functions.nota
Esse campo é suportado por aqueles Tipos de tarefa que usam funções Lambda e um serviço compatível AWS.
-
ResultPath
(Opcional, JSONPath somente) -
Especifica onde (na entrada) inserir os resultados da execução da tarefa que é especificada em
Resource
. A entrada é então filtrada conforme especificado pelo campoOutputPath
(se houver) antes de ser usada como a saída do estado. Para obter mais informações, consulte Processamento de entrada e saída. -
ResultSelector
(Opcional, JSONPath somente) -
Transmitir um conjunto de pares de valores-chave, em que os valores são estáticos ou selecionados a partir do resultado. Para obter mais informações, consulte ResultSelector.
-
Retry
(opcional) -
Uma matriz de objetos, chamados Retriers, que definem uma política de novas tentativas caso o estado encontre erros de tempo de execução. Para obter mais informações, consulte Exemplos de máquina de estado usando repetição e captura.
-
Catch
(opcional) -
Uma matriz de objetos, chamados Catchers, que definem um estado de fallback. Esse estado é executado caso o estado encontre erros de tempo de execução e sua política de novas tentativas esteja esgotada ou não tenha sido definida. Para obter mais informações, consulte Estados de fallback.
-
TimeoutSeconds
(opcional) -
Especifica o tempo máximo que uma atividade ou tarefa pode ser executada antes que ela atinja o tempo limite com o erro States.Timeout e falhe. O valor do tempo limite deve ser um número inteiro positivo e diferente de zero. O valor padrão é
99999999
.A contagem do tempo limite começa após uma tarefa ser iniciada, por exemplo, quando eventos
ActivityStarted
ouLambdaFunctionStarted
são registrados no histórico de eventos de execução. Para as atividades, a contagem começa quandoGetActivityTask
recebe um token eActivityStarted
é registrado no histórico de eventos de execução.Quando uma tarefa é iniciada, o Step Functions espera por uma resposta de conclusão ou falha do operário da tarefa ou atividade dentro da duração de
TimeoutSeconds
especificada. Se o operário da tarefa ou da atividade não responder dentro desse período, o Step Functions marcará a execução do fluxo de trabalho como com falha.nota
HTTPo tempo limite da tarefa tem no máximo 60 segundos, mesmo que
TimeoutSeconds
exceda esse limite. Consulte Cotas relacionadas à tarefa HTTP -
TimeoutSecondsPath
(Opcional, JSONPath somente) -
Para fornecer dinamicamente um valor de tempo limite a partir da entrada de estado usando um caminho de referência, use
TimeoutSecondsPath
. Quando resolvido, o caminho de referência deve selecionar campos cujos valores sejam números inteiros positivos.nota
Um
Task
estado não pode incluir ambosTimeoutSeconds
TimeoutSecondsPath
e. HTTPo tempo limite da tarefa tem no máximo 60 segundos, mesmo que oTimeoutSecondsPath
valor exceda esse limite. -
HeartbeatSeconds
(opcional) -
Determina a frequência dos sinais de pulsação que um operário da atividade envia durante a execução de uma tarefa. As pulsações indicam que uma tarefa ainda está em execução e precisa de mais tempo para ser concluída. As pulsações evitam que uma atividade ou tarefa atinja o tempo limite durante o tempo de
TimeoutSeconds
.HeartbeatSeconds
deve ser um valor inteiro positivo, diferente de zero, menor que o valor do campoTimeoutSeconds
. O valor padrão é99999999
. Se decorrer um tempo maior do que os segundos especificados entre as pulsações da tarefa, o estado Tarefa apresentará uma falha com o erro States.Timeout.Para as atividades, a contagem começa quando
GetActivityTask
recebe um token eActivityStarted
é registrado no histórico de eventos de execução. -
HeartbeatSecondsPath
(Opcional, JSONPath somente) -
Para fornecer dinamicamente um valor de pulsação a partir da entrada de estado usando um caminho de referência, use
HeartbeatSecondsPath
. Quando resolvido, o caminho de referência deve selecionar campos cujos valores sejam números inteiros positivos.nota
Um estado
Task
não pode incluirHeartbeatSeconds
eHeartbeatSecondsPath
.
Um estado Task
deverá definir o campo End
como true
se o estado encerrar a execução, ou deverá fornecer um estado no campo Next
que será executado quando o estado Task
for concluído.
Exemplos de definição de estado Tarefa
Os exemplos a seguir mostram como especificar a definição do estado Tarefa com base na sua necessidade.
Tempos limite e intervalos de pulsação do estado Tarefa
É recomendável definir um valor de tempo limite e um intervalo de pulsação para atividades de longa duração. Isso pode ser feito especificando os valores de tempo limite e pulsação ou definindo-os dinamicamente.
Exemplo de tempo limite estático e notificação de pulsação
Quando HelloWorld
for concluída, o próximo estado (chamado aqui de NextState
) será executado.
Se essa tarefa não for concluída em 300 segundos ou não enviar notificações de pulsação em intervalos de 60 segundos, ela será marcada como failed
.
"ActivityState": {
"Type": "Task",
"Resource": "arn:aws:states:us-east-1:123456789012:activity:HelloWorld",
"TimeoutSeconds": 300,
"HeartbeatSeconds": 60,
"Next": "NextState"
}
Exemplo de tempo limite de tarefa dinâmica e notificação de pulsação
Neste exemplo, quando o AWS Glue trabalho for concluído, o próximo estado será executado.
Se essa tarefa não for concluída dentro do intervalo definido dinamicamente pelo trabalho AWS Glue
, a tarefa será marcada como failed
.
"GlueJobTask": {
"Type": "Task",
"Resource": "arn:aws:states:::glue:startJobRun.sync",
"Parameters": {
"JobName": "myGlueJob"
},
"TimeoutSecondsPath": "$.params.maxTime",
"Next": "NextState"
}
Exemplos do campo Credenciais do estado Tarefa
Especificando uma função IAM codificada ARN
O exemplo a seguir especifica uma função de destino que a IAM função de execução de uma máquina de estado deve assumir para acessar uma função Lambda entre contas chamada. Echo
Neste exemplo, a função de destino ARN é especificada como um valor codificado.
{
"StartAt": "Cross-account call",
"States": {
"Cross-account call": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Credentials": {
"RoleArn": "arn:aws:iam::111122223333:role/LambdaRole"
},
"Parameters": {
"FunctionName": "arn:aws:lambda:us-east-2:111122223333:function:Echo
"
},
"End": true
}
}
}
Especificando JSONPath como função IAM ARN
O exemplo a seguir especifica um JSONPath valor, que será resolvido em uma IAM função ARN em tempo de execução.
{
"StartAt": "Lambda",
"States": {
"Lambda": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Credentials": {
"RoleArn.$": "$.roleArn"
},
...
}
}
}
Especificando uma função intrínseca como função IAM ARN
O exemplo a seguir usa a função States.Formatintrínseca, que se transforma em uma IAM função ARN em tempo de execução.
{
"StartAt": "Lambda",
"States": {
"Lambda": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Credentials": {
"RoleArn.$": "States.Format('arn:aws:iam::{}:role/ROLENAME', $.accountId)"
},
...
}
}
}