Redriving Map Runs em execuções de Step Functions - 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 Map Runs em execuções de Step Functions

Você pode reiniciar execuções malsucedidas do fluxo de trabalho secundário em um mapa executado por redrivingo fluxo de trabalho de seus pais. A redriven fluxo de trabalho principal redrives todos os estados malsucedidos, incluindo 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 MapStateExited evento de um MapStateEntered evento, você poderá redrive o fluxo de trabalho principal para redrive todas as execuções malsucedidas do fluxo de trabalho infantil no Map Run.

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 (Mapa), ResultWriter (Mapa), ou ambas. Se o Map Run não foi iniciado na tentativa de execução original do fluxo de trabalho principal, redriving o fluxo de trabalho principal inicia o Map Run pela primeira vez. Para resolver isso, adicione as permissões necessárias à 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 necessárias, ele tenta iniciar uma nova execução do Map Run que falhará novamente. Para obter informações sobre as permissões de que você talvez precise, consulte IAMpolíticas para usar estados de mapas distribuídos.

Redrive elegibilidade para fluxos de trabalho secundários em um Map Run

Você pode redrive as 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 que você iniciou antes dessa data não são elegíveis para redrive.

  • Você não excedeu o limite rígido de 1000 redrives de um determinado Map Run. 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 pode redrive as execuções do fluxo de trabalho secundário em um Map Run. Para obter mais informações sobre redrive elegibilidade de um fluxo de trabalho, consulteRedrive elegibilidade 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 o redrive elegibilidade de uma execução, consulteRedrive elegibilidade para execuções malsucedidas.

Uma nova execução de mapa é iniciada e a execução de mapa existente não redriven nos seguintes casos, mesmo se o Map Run falhar na tentativa de execução original:

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 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 (Mapa), se você a tiver configurado para exportar resultados.

Nesses casos, o Map Run em execução conclui suas operações antes de tentar redrive.

Execuções de fluxo de trabalho secundário redrive comportamento

A ferramenta redriven as execuções do fluxo de trabalho secundário em um Map Run exibem o comportamento conforme 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 StartExecutionAPIação. O primeiro estado em ItemProcessor é executado primeiro. Todas as execuções secundárias do fluxo de trabalho que falharam, atingiram o tempo limite ou foram canceladas na tentativa de execução original são redriven usando o RedriveExecutionAPIação. Esses fluxos de trabalho infantis 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 StartExecution API ação.

As execuções malsucedidas do fluxo de trabalho infantil padrão nem sempre podem ser redriven. Se uma execução não for redrivable, não será tentado novamente. O último erro ou saída da execução é permanente. Isso é possível quando uma execução excede 25.000 eventos históricos ou redrivable o período de 14 dias expirou.

A execução de um fluxo de trabalho secundário padrão pode não ser redrivable se a execução do fluxo de trabalho principal tiver sido encerrada em 14 dias, mas a execução do fluxo de trabalho secundário tiver sido encerrada antes de 14 dias.

As execuções expressas do fluxo de trabalho secundário usam a ARN mesma execução da tentativa de execução original, mas você não consegue identificar de forma distinta a pessoa redrives. As execuções padrão do fluxo de trabalho secundário usam a ARN mesma execução da tentativa de execução original. Você pode identificar claramente o indivíduo redrives no console e usandoAPIs, como GetExecutionHistoryDescribeExecutione. Para obter mais informações, consulte Examinando redriven execuções.

Se você tem redriven uma Execução de Mapa, e tendo atingido seu limite de simultaneidade, as execuções do fluxo de trabalho secundário nessa transição de Execução de Mapa para o estado pendente. O status de execução do Map Run também muda para Pendente redriveestado. Até que o limite de simultaneidade especificado possa permitir a execução de mais execuções de fluxo de trabalho secundário, a execução permanece na pasta Pendente redriveestado.

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 conclui sua execução ou é abortada, a contagem de execuções secundárias do fluxo de trabalho no campo Pendente redriveo estado é redefinido para 0.

Cenários de entrada usados no Map Run redrive

Dependendo de como você forneceu informações para o Mapa Distribuído na tentativa de execução original, um redriven O Map Run usará a entrada conforme descrito na tabela a seguir.

Entrada na tentativa de execução original Entrada usada no Map Run redrive
Entrada passada de um estado anterior ou entrada de execução. A ferramenta redriven O Map Run usa a mesma entrada.
A entrada passada usando ItemReader (Mapa) 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 ferramenta redriven O Map Run 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 ferramenta redriven O Map Run usa a mesma entrada fornecida na tentativa de execução original.

IAMpermissão para redrive uma corrida de mapas

Step Functions precisa da permissão apropriada para redrive um Map Run. O exemplo IAM de política a seguir concede o menor privilégio necessário à sua máquina de estado para redriving um Map Run. Lembre-se de substituir o italicized texto com as informações específicas do seu recurso.

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

Redriving Map Run 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 o Map Run, 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 um Map Run a partir do 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. Escolha Redrive.

  4. No Redrivecaixa de diálogo, escolha Redrive execução.

    dica

    Você também pode redrive uma Execução de Mapa a partir da página Detalhes da Execução ou Detalhes da Execução do 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 do fracasso.

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

    Se você estiver na página Detalhes da Execução do Mapa, escolha Recuperar e, em seguida, selecione Redrive do fracasso.

    Observe que redrive usa a mesma definição de máquina de estado ARN e. 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 do Map Run, redrive continuará a execução da etapa Concluído.

  5. Na página Detalhes da Execução, escolha Map Run para ver os detalhes do redriven Map Run.

    Nesta página, você pode ver os resultados do redriven execução. Por exemplo, na Resumo da execução do Map Run seção, você pode ver Redrive contagem, que representa o número de vezes que o Map Run foi executado redriven. Na seção Eventos, você pode ver o redrive eventos de execução relacionados anexados aos eventos da tentativa de execução original. Por exemplo, o evento de MapRunRedriven.

Depois de ter redriven em Map Run, você pode examinar seu redrive detalhes no console ou usando as DescribeExecutionAPIações GetExecutionHistorye. Para obter mais informações sobre como examinar um redriven execução, vejaExaminando redriven execuções.

Redriving Execute o mapa usando API

Você pode redrive um Map Run elegível usando o RedriveExecutionAPIno fluxo de trabalho principal. Isso API reinicia as execuções malsucedidas do fluxo de trabalho secundário em uma execução de mapa.

No painel, AWS Command Line Interface (AWS CLI), execute o seguinte comando para redrive uma execução malsucedida da máquina de estado. Lembre-se de substituir o italicized texto com as informações específicas do seu recurso.

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

Depois de ter redriven em Map Run, você pode examinar seu redrive detalhes no console ou usando a DescribeMapRunAPIação. Para examinar o redrive detalhes das execuções do fluxo de trabalho padrão em uma execução de mapa, você pode usar a DescribeExecutionAPIação GetExecutionHistoryou. Para obter mais informações sobre como examinar um redriven execução, vejaExaminando redriven execuções.

Você pode examinar o redrive detalhes das execuções do fluxo de trabalho Express em um Map Run no console Step Functions se você tiver ativado o registro no fluxo de trabalho principal. Para obter mais informações, consulte Usando CloudWatch Logs para registrar o histórico de execução em Step Functions.