Redriving execuções de mapa - 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á.

Redriving execuções de mapa

Você pode reiniciar execuções malsucedidas do fluxo de trabalho secundário em uma Execução de mapa redriving o fluxo de trabalho principal. Um fluxo de trabalho principal redriven redrives todos os estados malsucedidos, incluindo o Mapa distribuído. Um fluxo de trabalho principal vai redirecionar estados malsucedidos se não houver nenhum evento <stateType>Exited correspondente ao evento <stateType>Entered de um estado quando o fluxo de trabalho principal tiver concluído a execução. Por exemplo, se o histórico de eventos não contiver o evento MapStateExited de um evento MapStateEntered, você poderá redrive o fluxo de trabalho principal para redrive todas as execuções malsucedidas do fluxo de trabalho secundário na Execução de mapa.

Uma Execução de mapa não é iniciada ou apresenta falha na tentativa de execução original quando a máquina de estado não tem a permissão necessária para acessar ItemReader, ResultWriter, ou ambas. Se a Execução de mapa não tiver sido iniciada na tentativa de execução original do fluxo de trabalho principal, redriving o fluxo de trabalho principal iniciará a Execução de mapa pela primeira vez. Para resolver isso, adicione as permissões exigidas à sua função de máquina de estado e, em seguida, redrive o fluxo de trabalho principal. Se você redrive o fluxo de trabalho principal sem adicionar as permissões exigidas, haverá uma tentativa de iniciar uma nova Execução de mapa, que falhará novamente. Para obter informações sobre as permissões de que você talvez precise, consulte Políticas do IAM para usar o estado Mapa Distribuído.

Elegibilidade de Redrive para fluxos de trabalho secundários em uma Execução de mapa

Você conseguirá redrive execuções malsucedidas do fluxo de trabalho secundário em uma Execução de mapa se as seguintes condições forem atendidas:

  • Você iniciou a execução do fluxo de trabalho principal em 15 de novembro de 2023 ou após essa data. As execuções iniciadas antes dessa data não têm direito ao redrive.

  • Você não excedeu o limite máximo de mil redrives em uma determinada Execução de mapa. Se você excedeu esse limite, verá o erro States.Runtime.

  • O fluxo de trabalho principal é redrivable. Se o fluxo de trabalho principal não for redrivable, você não conseguirá redrive as execuções do fluxo de trabalho secundário em uma Execução de mapa. Para obter mais informações sobre a elegibilidade de redrive um fluxo de trabalho, consulte Elegibilidade de Redrive para execuções malsucedidas.

  • As execuções do fluxo de trabalho secundário do tipo Padrão em uma Execução de mapa não excederam o limite do histórico de 25 mil eventos de execução. As execuções de fluxo de trabalho secundárias que excederam o limite do histórico de eventos são contabilizadas no limite de falhas tolerado e considera-se que falharam. Para obter mais informações sobre a elegibilidade de redrive de uma execução, consulte Elegibilidade de Redrive para execuções malsucedidas.

Uma nova Execução de mapa é iniciada e a existente não é redriven nos seguintes casos, mesmo que a tentativa original de Execução de mapa tenha falhado:

Uma Execução de mapa pode continuar mesmo após o fluxo de trabalho principal parar ou atingir o tempo limite. Nesses cenários, o redrive isso não acontece imediatamente:

  • A Execução de mapa talvez ainda esteja cancelando execuções em andamento de fluxos de trabalho secundários do tipo Padrão ou aguardando que execuções de fluxos de trabalho secundários do tipo expresso sejam concluídas.

  • A Execução de mapa talvez ainda esteja gravando resultados no ResultWriter, se você a tiver configurado para exportar resultados.

Nesses casos, a Execução de mapa conclui suas operações antes de tentar redrive.

Comportamento do redrive de uma execução de fluxo de trabalho secundário

As execuções do fluxo de trabalho secundário redriven em uma Execução de mapa exibem o comportamento descrito na tabela a seguir.

Fluxo de trabalho expresso secundário Fluxo de trabalho padrão secundário
Todas as execuções do fluxo de trabalho secundário que falharam ou atingiram o tempo limite na tentativa de execução original são iniciadas usando a ação da StartExecutionAPI. O primeiro estado em ItemProcessor é executado primeiro. Todas as execuções de um fluxo de trabalho secundário que tiverem falhado, sido canceladas ou atingirem o tempo limite na tentativa de execução original são redriven usando a ação da API RedriveExecution. Esses fluxos de trabalho secundários são redriven do último estado em ItemProcessor que resultou em sua execução malsucedida.

Execuções malsucedidas sempre podem ser redriven. Isso ocorre porque as execuções do fluxo de trabalho secundário do Express são sempre iniciadas como uma nova execução usando a ação da StartExecution API.

As execuções malsucedidas do fluxo de trabalho padrão secundário nem sempre podem ser redriven. Se a execução não for redrivable, não haverá uma nova tentativa. O último erro ou saída da execução é permanente. Isso pode acontecer quando uma execução excede o limite de 25 mil eventos do histórico ou seu período redrivable ultrapassou 14 dias.

A execução do fluxo de trabalho padrão secundário talvez não seja redrivable se a execução do fluxo de trabalho principal tiver sido encerrada dentro de 14 dias, mas a execução do fluxo de trabalho secundário for encerrada antes de 14 dias.

As execuções do fluxo de trabalho expresso secundário usam o mesmo ARN de execução da tentativa de execução original, mas não é possível identificar claramente os redrives individuais. As execuções do fluxo de trabalho padrão secundário usam o mesmo ARN de execução da tentativa de execução original. Você pode identificar claramente o indivíduo redrives no console e usando APIs, como e. GetExecutionHistoryDescribeExecution Para ter mais informações, consulte Examinar execuções redriven.

Se você tiver uma Execução de mapa redriven e ela tiver atingido seu limite de simultaneidade, as execuções do fluxo de trabalho secundário nela farão a transição para o estado pendente. O status da Execução de mapa também passa para o estado redrive pendente. A execução permanecerá no estado redrive pendente até que o limite de simultaneidade especificado permita a execução de mais execuções de fluxo de trabalho secundário.

Por exemplo, digamos que o limite de simultaneidade de Mapa distribuído em seu fluxo de trabalho seja 3 mil e o número de fluxos de trabalho secundários a serem executados novamente seja de 6 mil. Isso faz com que 3 mil fluxos de trabalho secundários sejam executados em paralelo, enquanto os 3 mil fluxos de trabalho restantes permanecem no estado Redirecionamento pendente. Após a conclusão da execução do primeiro lote de 3 mil fluxos de trabalho secundários, os 3 mil restantes serão executados.

Quando uma Execução de mapa é concluída ou abortada, a contagem de execuções de fluxos de trabalho secundários no estado redrivependente é redefinida para 0.

Cenários de entrada utilizados no redrive de uma Execução de mapa

Dependendo de como você forneceu a entrada para Mapa distribuído na tentativa de execução original, uma Execução de mapa redriven usará a entrada como descrito na tabela a seguir.

Entrada na tentativa de execução original Entrada utilizada no redrive de Execução de mapa
Entrada passada de um estado anterior ou entrada de execução. A Execução de mapa redriven usa a mesma entrada.
A entrada passada usando ItemReader a Execução de mapa não iniciaram as execuções do fluxo de trabalho secundário porque uma das seguintes condições é verdadeira:
  • A Execução do mapa falhou com o erro States.ItemReaderFailed.

  • A Execução do mapa falhou com o erro States.ResultWriterFailed.

  • A execução do fluxo de trabalho principal atingiu o tempo limite ou foi cancelada antes do início da Execução de mapa.

A Execução de mapa redriven usa a entrada no bucket do Amazon S3.
Entrada passada usando ItemReader. A Execução de mapa falhou após o início ou tentativa de iniciar as execuções do fluxo de trabalho secundário. A Execução de mapa redriven usa a mesma entrada fornecida na tentativa de execução original.

Permissão do IAM para redrive uma Execução de mapa

Step Functions precisa da permissão apropriada para redrive uma Execução de mapa. O exemplo de política do IAM a seguir concede o privilégio mínimo necessário à sua máquina de estado para redriving uma Execução de mapa. Lembre-se de substituir o texto em itálico pelas informações específicas do recurso.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:RedriveExecution" ], "Resource": "arn:aws:states:us-east-2:123456789012:execution:myStateMachine/myMapRunLabel:*" } ] }

Redriving uma Execução de mapa no console

A imagem a seguir mostra o gráfico de execução de uma máquina de estado que contém um Mapa distribuído. Essa execução falhou porque a Execução de mapa falhou. Para redrive a Execução de mapa, você deve redrive o fluxo de trabalho principal.

Gráfico de uma falha de execução de uma máquina de estado causada por uma falha de uma Execução de mapa.
Para redrive uma Execução de mapa no console
  1. Abra o console do Step Functions e, em seguida, escolha uma máquina de estado existente que contenha um Mapa distribuído cuja execução tenha falhado.

  2. Na página de detalhes da máquina de estado, em Execuções, escolha uma instância de execução com falha dessa máquina.

  3. Selecione Redrive.

  4. Na caixa de diálogo Redrive, escolha Redrive execução .

    dica

    Você também pode redrive uma Execução de mapa na página Detalhes da execução ou Detalhes da execução de mapa.

    Se você estiver na página Detalhes da execução, faça o seguinte para redrive a execução:

    • Escolha Recuperar e, em seguida, selecione Redrive de uma falha.

    • Escolha Ações e, em seguida, selecione Redrive.

    Se você estiver na página Detalhes da execução de mapa, escolha Recuperar e, em seguida, selecione Redrive de uma falha.

    Observe que redrive usa a mesma definição de máquina de estado e ARN. A execução é retomada a partir da etapa onde houve a falha na tentativa original. Neste exemplo, isso ocorre na etapa de Mapa distribuído chamada Mapa e a etapa de Entrada do processo dentro dela. Depois de reiniciar as execuções malsucedidas do fluxo de trabalho secundário da Execução mapa, o redrive continuará a execução para a etapa Concluído.

  5. Na página Detalhes da execução, escolha Execução de mapa para ver os detalhes da Execução de mapa redriven.

    Nessa página, é possível visualizar os resultados da execução redriven. Por exemplo, na seção Resumo da execução do Map Run, você pode ver a Contagem de Redrive, que representa o número de vezes que uma Execução de mapa foi redriven. Na seção Eventos, você pode ver os eventos relacionados ao redrive de execução anexados aos da tentativa de execução original. Por exemplo, o evento de MapRunRedriven.

Depois de executar redriven um mapa, você pode examinar seus redrive detalhes no console ou usando as ações GetExecutionHistorye DescribeExecutionda API. Para mais informações sobre o exame de uma execução redriven, consulte Examinar execuções redriven.

Redriving Execução de mapa usando a API

Você pode redrive uma Execução de mapa elegível usando a API RedriveExecution no fluxo de trabalho principal. Essa API reinicia as execuções malsucedidas do fluxo de trabalho secundário em uma Execução de mapa.

Na AWS Command Line Interface (AWS CLI), execute o comando a seguir para redrive uma execução malsucedida da máquina de estado. Lembre-se de substituir o texto em itálico pelas informações específicas do recurso.

aws stepfunctions redrive-execution --execution-arn arn:aws:states:us-east-2:123456789012:execution:myStateMachine:foo

Depois de executar redriven um mapa, você pode examinar seus redrive detalhes no console ou usando a ação da DescribeMapRunAPI. Para examinar os redrive detalhes das execuções do fluxo de trabalho padrão em uma execução de mapa, você pode usar a ação GetExecutionHistoryou DescribeExecutionAPI. Para mais informações sobre o exame de uma execução redriven, consulte Examinar execuções redriven.

Você conseguirá examinar os detalhes de redrive das execuções do fluxo de trabalho expresso em uma Execução de mapa no console do Step Functions se tiver ativado o registro no fluxo de trabalho principal. Para ter mais informações, consulte Como registrar usando o CloudWatch Logs.