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á.
Usar tempos limite para evitar travar execuções
Por padrão, a Amazon States Language não especifica tempos limite para definições de máquinas de estado. Sem um tempo limite explícito, o Step Functions frequentemente se baseia somente em uma resposta de um operador de atividade para saber que uma tarefa foi concluída. Se algo der errado e o campo TimeoutSeconds
não estiver especificado para um estado Activity
ou Task
, uma execução ficará travada, aguardando uma resposta que nunca chegará.
Para evitar essa situação, ao criar uma Task
em sua máquina de estado, especifique um tempo limite razoável. Por exemplo:
"ActivityState": { "Type": "Task", "Resource": "arn:aws:states:us-east-1:123456789012:activity:HelloWorld", "TimeoutSeconds": 300, "Next": "NextState" }
Se você usar um retorno de chamada com um token de tarefa (.waitForTaskToken), recomendamos usar pulsações e adicionar o campo HeartbeatSeconds
à definição do estado Task
. Você pode definir HeartbeatSeconds
para ser menor que o tempo limite da tarefa, de modo que, se o seu fluxo de trabalho falhar com um erro de heartbeat, você saberá que isso se deve à falha da tarefa, e não ao fato de a tarefa demorar muito para ser concluída.
{ "StartAt": "Push to SQS", "States": { "Push to SQS": { "Type": "Task", "Resource": "arn:aws:states:::sqs:sendMessage.waitForTaskToken", "HeartbeatSeconds": 600, "Parameters": { "MessageBody": { "myTaskToken.$": "$$.Task.Token" }, "QueueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/push-based-queue" }, "ResultPath": "$.SQS", "End": true } } }
Para ver mais informações, consulte Estado da tarefa na documentação da Amazon States Language.
nota
Você pode definir um tempo limite para sua máquina de estado usando o campo TimeoutSeconds
na definição da Amazon States Language. Para obter mais informações, consulte Estrutura da máquina de estado.