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
Gerenciar estados e transformar 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 uma função do AWS Lambda, integrando-se a outros Serviços da AWS compatíveis ou invocando uma API HTTPS, como o Stripe.
A Amazon States Language representa tarefas definindo o tipo de um estado como Task e fornecendo à tarefa o nome do recurso da Amazon (ARN) da atividade, a função do Lambda ou o endpoint da API HTTPS.
Invocar uma função com argumentos JSONata
A definição de estado de tarefa (JSONata) a seguir invoca uma função do Lambda chamada .priceWatcher
Observe o uso de expressões JSONata para consultar os 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>:account-id:function:priceWatcher:$LATEST"
},
"Assign": {
"currentPrice": "{% $states.result.Payload.current_price %}"
}
}Invocar uma função com parâmetros JSONPath
A definição de estado de tarefa (JSONPath) a seguir invoca uma função do Lambda chamada .HelloFunction
"Lambda Invoke": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"Payload.$": "$",
"FunctionName": "arn:aws:lambda:region:account-id: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 tarefa, exceto o 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 Tarefa, substitua o texto em itálico na seguinte sintaxe pelas informações específicas do recurso da AWS.
arn:partition:service:region:account:task_type:name
A lista a seguir explica os componentes individuais dessa sintaxe.
-
partitioné a partição do AWS Step Functions a ser usada, geralmenteaws. -
serviceindica o AWS service (Serviço da AWS) usado para executar a tarefa e pode ser um dos seguintes valores:-
statespara uma atividade. -
lambdapara uma função do Lambda. Se você se integrar a outros Serviços da AWS, como Amazon SNS ou Amazon DynamoDB, usesnsoudynamodb.
-
-
regioné o código da região da AWS na qual a atividade do Step Functions ou o tipo de máquina de estado, a função do Lambda ou qualquer outro recurso da AWS foi criado. -
accounté o ID da Conta da AWS 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 é compatível com a referência de 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.
Os ARNS de Resource de atividade usam a sintaxe a seguir.
arn:partition:states:region:account:activity:name
nota
É necessário criar atividades com o Step Functions (usando CreateActivity, ação de API ou o console do 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 do 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.
A forma do campo Resource da função do Lambda varia conforme o tipo de integração.
Para uma integração padrão do AWS SDK com uma função do Lambda, o campo Resource conterá o seguinte valor:
"arn:aws:states:::aws-sdk:lambda:invoke"
Recomendamos usar a integração otimizada para suas funções do Lambda, usando o seguinte valor para o campo Resource:
"arn:aws:states:::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 usando JSONata.HelloWorld
"Optimized call to Lambda function (JSONata)": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Output": "{% $states.result.Payload %}",
"Arguments": {
"FunctionName": "arn:aws:lambda:region:account-id:function:HelloWorld:$LATEST",
"Payload": {
"key": "{% $states.input.myKey %}"
}
},
"Next": "NextState"
}
Um AWS service (Serviço da AWS) compatível
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.
Os ARNS de Resource do serviço conectado usam a sintaxe a seguir.
arn:partition:states:region:account-id:servicename:APIname
nota
Para criar uma conexão síncrona com um recurso conectado, acrescente .sync à entrada APIname 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, somente JSONata)-
Usado para passar informações para as ações de API de recursos conectados. Os valores podem incluir expressões JSONata. Para obter mais informações, consulte Transformando dados com Step JSONata Functions.
Output(opcional, somente JSONata)-
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 em objetos ou matrizes, será avaliado como JSONata se estiver entre caracteres {% %}.
A saída também aceita uma expressão JSONata direta, por exemplo: “Output”: “{% jsonata expression %}”
Para obter mais informações, consulte Processamento de entrada e saída.
Parameters(opcional, somente JSONPath)-
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
Resourceespecificado. Como alternativa, você também pode especificar um valor JSONPath ou uma função intrínseca que se resolve como um ARN de perfil do IAM no runtime com base na entrada de execução. Se você especificar um valor JSONPath, será necessário 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 recurso da AWS entre contas a partir da máquina de estado, consulte Acessando AWS recursos entre contas em Step Functions.nota
Esse campo é compatível com o Tipos de tarefa que usa as funções do Lambda e um serviço da AWS compatível.
-
ResultPath(opcional, somente JSONPath) -
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, somente JSONPath) -
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 quando o evento inicial é executado, como quando eventos
TaskStarted,ActivityStartedouLambdaFunctionStartedsão registrados no histórico de eventos de execução. Para as atividades, a contagem começa quandoGetActivityTaskrecebe 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
TimeoutSecondsespecificada. 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
TimeoutSecondsexceda esse limite. Consulte Cotas relacionadas à tarefa HTTP -
TimeoutSecondsPath(opcional, somente JSONPath) -
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
Tasknão pode incluirTimeoutSecondseTimeoutSecondsPath. O tempo limite da tarefa HTTP tem no máximo sessenta segundos, mesmo que o valorTimeoutSecondsPathexceda 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.HeartbeatSecondsdeve 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
GetActivityTaskrecebe um token eActivityStartedé registrado no histórico de eventos de execução. -
HeartbeatSecondsPath(opcional, somente JSONPath) -
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
Tasknão pode incluirHeartbeatSecondseHeartbeatSecondsPath.
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:region: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 trabalho AWS Glue 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
}
}
}
Especificar o JSONPath como ARN do perfil do IAM
O exemplo a seguir especifica um valor JSONPath, que será resolvido em um ARN do perfil do IAM em runtime.
{
"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)"
},
...
}
}
}