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
. -
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 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:-
activity
– Uma atividade. -
function
– Uma função do Lambda. -
– O nome de um serviço conectado compatível (consulte Integrando serviços com 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 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 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 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 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) -
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
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) -
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
. 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) -
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 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)"
},
...
}
}
}