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
Saiba mais sobre como transmitir dados entre estados 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 outras suportadas Serviços da AWS ou invocando uma API HTTPS, como o Stripe.
A 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 endpoint da API HTTPS.
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 seu ARN no campo Resource
da definição do estado Tarefa. O exemplo a seguir mostra a sintaxe do campo Resource
. Todos os tipos de tarefas, exceto aquele que invoca uma API HTTPS, usam a sintaxe a seguir. Para obter informações sobre a sintaxe da tarefa HTTP, consulte Chame HTTPS APIs nos fluxos de trabalho do 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 de recurso registrado (nome da atividade, nome da função do Lambda ou ação de API de 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 CreateActivityação de API 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 do Lambda, use o ARN da função do Lambda no campo Resource
.
Dependendo do tipo de integração (integração otimizada ou integração do SDK da AWS) que você usa para especificar uma função do Lambda, a sintaxe do campo Resource
da função do Lambda varia.
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 integração do AWS SDK 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)
Ao fazer referência a um recurso conectado, o Step Functions chama diretamente as ações de API de um serviço compatível. 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) -
Um URI, especialmente um ARN que identifica exclusivamente a tarefa específica a ser executada.
Arguments
(Opcional, JSONata somente)-
Usado para passar informações para as ações de API de 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 valor JSON (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 ações de API de recursos conectados. Os parâmetros podem usar uma combinação de JSON estático e. JsonPath
Para obter mais informações, consulte Transmitir parâmetros a uma API de serviço no 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 seja resolvida em um ARN de função do IAM 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 obter um exemplo de uso desse campo para acessar um AWS recurso entre contas da sua máquina de estado, consulteAcessando AWS recursos entre contas em Step Functions.nota
Esse campo é suportado pelos 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
O tempo limite da tarefa HTTP tem no máximo sessenta 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 estado
Task
não pode incluirTimeoutSeconds
eTimeoutSecondsPath
. O tempo limite da tarefa HTTP tem no máximo sessenta segundos, mesmo que o valorTimeoutSecondsPath
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
Especificar o ARN do perfil do IAM com codificação rígida
O exemplo a seguir especifica um perfil do IAM de destino que o perfil do IAM de execução de uma máquina de estado deve assumir para acessar uma função do Lambda entre contas chamada Echo
. Neste exemplo, o ARN do perfil de destino é especificado como um valor com codificação rígida.
{
"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 ARN da função do IAM
O exemplo a seguir especifica um JSONPath valor, que será resolvido como um ARN de função do IAM em tempo de execução.
{
"StartAt": "Lambda",
"States": {
"Lambda": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Credentials": {
"RoleArn.$": "$.roleArn"
},
...
}
}
}
Especificar uma função intrínseca como ARN do perfil do IAM
O exemplo a seguir usa a função intrínseca States.Format, que será resolvida em um ARN do perfil do IAM em runtime.
{
"StartAt": "Lambda",
"States": {
"Lambda": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Credentials": {
"RoleArn.$": "States.Format('arn:aws:iam::{}:role/ROLENAME', $.accountId)"
},
...
}
}
}