Estado do fluxo de trabalho da tarefa - AWS Step Functions

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 do fluxo de trabalho da tarefa

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 um AWS Lambda função, por meio da integração com outros suportados Serviços da AWS, ou invocando um terceiroAPI, 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 endpoint de terceirosAPI. A seguinte definição de estado Tarefa invoca uma função do 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 terceiroAPI, usam a sintaxe a seguir. Para obter informações sobre a sintaxe da HTTP tarefa, consulteChame terceiros 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 pelo AWS informações específicas do recurso.

arn:partition:service:region:account:task_type:name

A lista a seguir explica os componentes individuais dessa sintaxe.

  • partitioné o AWS Step Functions partição a ser usada, mais comumenteaws.

  • serviceindica 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 AWS Código de região em que a atividade Step Functions ou o tipo de máquina de estado, a função Lambda ou qualquer outra AWS o recurso foi criado.

  • accounté o Conta da AWS ID na qual você definiu o recurso.

  • task_type é o tipo de tarefa a ser executada. Pode ter um dos valores a seguir:

  • 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) antes de usá-las pela primeira vez.

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 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 sua 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 SDKintegraçã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, .sync anexe ao APIname entrada noARN. 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.

Parameters (opcional)

Usado para passar informações para as API ações dos recursos conectados. Os parâmetros podem usar uma mistura de estática JSON JsonPathe. 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 uma conta cruzada AWS recurso de sua máquina de estado, consulteAcessando várias contas AWS recursos em Step Functions.

nota

Esse campo é suportado por aqueles Tipos de tarefa que usam funções Lambda e um AWS serviço.

ResultPath (opcional)

Especifica onde (na entrada) inserir os resultados da execução da tarefa que é especificada em Resource. A entrada é então filtrada conforme especificado pelo campo OutputPath (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)

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áquinas de estado usando Retry e usando Catch.

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 ou LambdaFunctionStarted são registrados no histórico de eventos de execução. Para as atividades, a contagem começa quando GetActivityTask recebe um token e ActivityStarted é 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)

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 incluir TimeoutSeconds e TimeoutSecondsPath. HTTPo tempo limite da tarefa tem no máximo 60 segundos, mesmo que o TimeoutSecondsPath 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 campo TimeoutSeconds. 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 e ActivityStarted é registrado no histórico de eventos de execução.

HeartbeatSecondsPath (opcional)

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 incluir HeartbeatSeconds e HeartbeatSecondsPath.

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 o trabalho é concluído, o próximo estado será executado.

Se essa tarefa não for concluída dentro do intervalo definido dinamicamente pelo AWS Glue trabalho, a tarefa é marcada comofailed.

"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)" }, ... } } }