SDK de execução durável
O SDK de execução durável é a base para a criação de funções duráveis. Ele fornece os elementos básicos para verificar o progresso, lidar com novas tentativas e gerenciar o fluxo de execução. O SDK abstrai a complexidade do gerenciamento e da reprodução de pontos de verificação, permitindo que você escreva um código sequencial que automaticamente se torna com tolerância a falhas.
O SDK está disponível para JavaScript, TypeScript, Python e Java. Para ver a documentação completa da API, tutoriais rápidos e guias específicos da linguagem, consulte o Guia do desenvolvedor do SDK de execução durável da AWS.
O que o SDK faz
Gerenciamento de pontos de verificação: o SDK cria pontos de verificação automaticamente à medida que sua função executa operações duráveis. Cada ponto de verificação registra o tipo de operação, as entradas e os resultados. Quando sua função conclui uma etapa, o SDK persiste no ponto de verificação antes de prosseguir. Isso garante que sua função possa ser retomada a partir de qualquer operação concluída, caso seja interrompida.
Coordenação de reprodução: quando sua função é retomada após uma pausa ou interrupção, o SDK executa a reprodução. Ele executa seu código desde o início, mas ignora as operações concluídas, usando resultados de pontos de verificação armazenados em vez de reexecutá-las. O SDK garante que a reprodução seja determinística. Com as mesmas entradas e o mesmo log do ponto de verificação, sua função produz os mesmos resultados.
Isolamento de estado: o SDK mantém o estado de execução separadamente da sua lógica de negócios. Cada execução durável tem seu próprio log de ponto de verificação que outras execuções não podem acessar. O SDK criptografa os dados em repouso do ponto de verificação e garante que o estado permaneça consistente em todas as reproduções.
Para obter uma explicação detalhada de como o ponto de verificação funciona e do comportamento da reprodução, consulte Principais conceitos no Guia do desenvolvedor do SDK de execução durável da AWS.
Operações duráveis
O SDK fornece à sua função um objeto DurableContext. Esse contexto substitui o contexto padrão do Lambda e fornece métodos para a criação de pontos de verificação, gerenciamento do fluxo de execução e coordenação com sistemas externos.
O DurableContext fornece as seguintes operações para criar fluxos de trabalho duráveis:
| Operation | Descrição |
|---|---|
| N.º da etapa | Execute e verifique uma unidade de trabalho com estratégias de repetição configuráveis e semântica de execução. |
| Aguardar | Pause a execução por um período especificado sem consumir recursos computacionais. |
| Aguarde a condição | Faça sondagens para uma condição com verificação automática entre as tentativas. |
| Retorno de chamada | Faça uma pausa na execução e espere que um sistema externo forneça informações por meio da API do Lambda. |
| Invocar | Chame outra função do Lambda e aguarde o resultado com verificação automática. |
| Paralelo | Execute várias operações simultaneamente com políticas de conclusão configuráveis. |
| mapa | Processe cada item em uma coleção simultaneamente com controle de simultaneidade opcional. |
| Contexto secundário | Crie um contexto de execução isolado para o agrupamento de várias operações. |
Cada operação durável cria pontos de verificação automaticamente, garantindo que sua função possa ser retomada a partir de qualquer ponto. Para obter referências detalhadas da API, exemplos de código e uso específico da linguagem, consulte Referência do SDK no Guia do desenvolvedor do SDK de execução durável da AWS.
Como as operações duráveis são medidas
Cada operação durável que você executa por DurableContext cria pontos de verificação para monitorar o progresso da execução e armazenar dados de estado. Essas operações incorrem em cobranças com base em seu uso, e os pontos de verificação podem conter dados que contribuam para seus custos de gravação e retenção de dados. Os dados armazenados incluem dados de eventos de invocação, cargas úteis retornadas das etapas e dados transmitidos ao concluir retornos de chamada. Entender como as operações duráveis são medidas ajuda você a estimar os custos de execução e a otimizar seus fluxos de trabalho. Para obter detalhes de preços, consulte a página de dfinição de preços do Lambda
O tamanho da carga útil se refere ao tamanho dos dados serializados em que uma operação durável persiste. Os dados são medidos em bytes e o tamanho pode variar dependendo do serializador usado pela operação. A carga útil de uma operação pode ser o resultado em si de uma conclusão com êxito ou o objeto de erro serializado se a operação falhar.
Operações básicas
As operações básicas são os blocos de construção fundamentais para funções duráveis:
| Operation | Tempo do ponto de verificação | Número de operações | Dados persistidos |
|---|---|---|---|
| Execução | Started | 1 | Tamanho da carga útil da entrada |
| Execução | Concluído (Com êxito/Falhado/Interrompido) | 0 | Tamanho da carga útil da saída |
| N.º da etapa | Tentativa nova/Com êxito/Falhado | 1 + N novas tentativas | Tamanho da carga útil retornado de cada tentativa |
| Aguardar | Started | 1 | N/D |
| WaitForCondition | Cada tentativa de sondagem | 1 + N sondagens | Tamanho da carga útil retornado de cada tentativa de sondagem |
| Nova tentativa em nível de invocação | Started | 1 | Carga útil para objeto de erro |
Operações de retorno de chamada
Os retornos de retorno de chamada permitem que sua função faça uma pausa e aguarde até que sistemas externos forneçam entrada. Essas operações criam pontos de verificação quando o retorno de chamada é criado e quando é concluído:
| Operation | Tempo do ponto de verificação | Número de operações | Dados persistidos |
|---|---|---|---|
| CreateCallback | Started | 1 | N/D |
| Conclusão do retorno de chamada por meio de chamada de API | Completed | 0 | Carga útil de retorno de chamada |
| WaitForCallback | Started | 3 + N novas tentativas (contexto + retorno de chamada + etapa) | Cargas retornadas pelas tentativas de etapa do remetente, mais duas cópias da carga útil de retorno de chamada |
Operações compostas
As operações compostas combinam várias operações duráveis para lidar com padrões complexos de coordenação, como execução paralela, processamento de matrizes e contextos aninhados:
| Operation | Tempo do ponto de verificação | Número de operações | Dados persistidos |
|---|---|---|---|
| Paralelo | Started | 1 + N ramificações (1 contexto primário + N contextos secundários) | Até duas cópias do tamanho da carga útil retornada de cada ramificação, mais os status de cada ramificação |
| mapa | Started | 1 + N ramificações (1 contexto primário + N contextos secundários) | Até duas cópias do tamanho da carga útil retornada de cada iteração, mais os status de cada iteração |
| Ajudantes de promessas | Completed | 1 | Tamanho da carga útil retornado da promessa |
| RunInChildContext | Com êxito/Falhado | 1 | Tamanho da carga útil retornado do contexto secundário |
Para contextos, como de runInChildContext ou usados internamente por operações compostas, resultados menores que 256 KB são verificados diretamente. Resultados maiores não são armazenados. Em vez disso, eles são reconstruídos durante a reprodução por meio do reprocessamento das operações do contexto.