Conceitos básicos
O SDK de execução durável da AWS é a base para a criação de funções duráveis, fornecendo os elementos básicos de que você precisa para verificar o andamento, lidar com novas tentativas e gerenciar o fluxo de execução. O SDK está disponível para JavaScript/TypeScript, Python e Java. Para ver a documentação completa do SDK, incluindo a referência 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.
Execução durável
Uma execução durável representa o ciclo de vida completo de uma função durável do Lambda, usando um mecanismo de ponto de verificação e reprodução para acompanhar o progresso da lógica de negócios, suspender a execução e recuperar as falhas. Quando as funções são retomadas após suspensões ou interrupções, os pontos de verificação concluídos anteriormente são repetidos e a função continua em execução.
O ciclo de vida pode incluir várias invocações de uma função do Lambda para concluir a execução, especialmente após suspensões ou recuperação de falhas. Essa abordagem permite que sua função funcione por longos períodos (até um ano), mantendo um progresso confiável apesar das interrupções.
Como a reprodução funciona
O Lambda mantém um log em execução de todas as operações duráveis (etapas, esperas e outras operações) à medida que sua função é executada. Quando sua função precisa fazer uma pausa ou encontra uma interrupção, o Lambda salva esse log de ponto de verificação e interrompe a execução. Quando chega a hora de retomar, o Lambda invoca sua função novamente desde o início e reproduz o log do ponto de verificação, substituindo os valores armazenados pelas operações concluídas. Isso significa que seu código é executado novamente, mas as etapas concluídas anteriormente não são reexecutadas. Seus resultados armazenados são usados em vez disso.
Esse mecanismo de reprodução é fundamental para entender as funções duráveis. Seu código deve ser determinístico durante a reprodução, o que significa que ele produz os mesmos resultados com as mesmas entradas. Evite operações com efeitos colaterais (como a geração de números aleatórios ou a obtenção da hora atual) fora das etapas, pois elas podem produzir valores diferentes durante a reprodução e causar um comportamento não determinístico.
DurableContext
DurableContext é o objeto de contexto que sua função durável recebe. Ele fornece métodos para operações duráveis, como etapas e esperas, que criam pontos de verificação e gerenciam o fluxo de execução.
Sua função durável recebe um DurableContext em vez do contexto do Lambda padrão:
Por meio do DurableContext, sua função tem acesso a operações duráveis que verificam o andamento e coordenam o trabalho:
As Etapas executam a lógica de negócios com novas tentativas integradas e pontos de verificação automáticos. Cada etapa salva seu respectivo resultado e, portanto, sua função é retomada a partir da última etapa concluída após uma interrupção.
As Esperas são pausas planejadas em que sua função para de funcionar e para de carregar até a hora de continuar. Use-as para períodos, retornos de chamada externos ou sondagem de uma condição.
Invocar chama outras funções do Lambda e verifica o resultado. A função invocada pode ser uma função durável ou padrão. Não há suporte a invocações entre contas.
Para obter a referência de linguagem completa de todas as operações duráveis disponíveis, consulte Referência do SDK no Guia do desenvolvedor do SDK de execução durável da AWS.
Configuração de função durável
As funções duráveis têm configurações específicas que controlam o comportamento de execução e a retenção de dados. Essas configurações são separadas da configuração padrão da função do Lambda e se aplicam a todo o ciclo de vida de execução durável.
O objeto DurableConfig define a configuração para as funções duráveis:
{ "ExecutionTimeout": Integer, "RetentionPeriodInDays": Integer }
Execution timeout (Tempo limite de execução)
O tempo limite de execução controla por quanto tempo uma execução durável pode ser executada do início à conclusão. Isso é diferente do tempo limite da função do Lambda, que controla por quanto tempo uma única invocação de função pode ser executada.
Uma execução durável pode abranger várias invocações de função do Lambda à medida que avança nos pontos de verificação, esperas e repetições. O tempo limite de execução se aplica ao tempo total decorrido da execução durável, não às invocações de funções individuais.
Como compreender as diferenças
O tempo limite da função do Lambda (máximo de 15 minutos) limita cada invocação individual de sua função. O tempo limite de execução durável (máximo de 1 ano) limita o tempo total desde o início da execução até sua conclusão, falha ou tempo limite. Durante esse período, sua função pode ser invocada várias vezes enquanto processa etapas, espera e se recupera de falhas.
Por exemplo, se você definir um tempo limite de execução durável de 24 horas e um tempo limite da função do Lambda de 5 minutos:
Cada invocação de função deve ser concluída em 5 minutos
Toda a execução durável pode ser executada por até 24 horas
Sua função pode ser invocada várias vezes durante essas 24 horas
As operações de espera não contam para o tempo limite da função do Lambda, mas contam para o tempo limite de execução
É possível configurar o tempo limite de execução ao criar uma função durável usando o console do Lambda, a AWS CLI ou o AWS SAM. No console do Lambda, escolha sua função e, em seguida, Configuração, Execução durável. Defina o valor do tempo limite de execução em segundos (padrão: 86400 segundos/24 horas, mínimo: 60 segundos, máximo: 31536000 segundos/ 1 ano).
nota
O tempo limite de execução e o tempo limite da função do Lambda são configurações diferentes. O tempo limite da função do Lambda controla por quanto tempo cada invocação individual pode ser executada (máximo de 15 minutos). O tempo limite de execução controla o tempo total decorrido para toda a execução durável (máximo de 1 ano).
Período de retenção
O período de retenção controla por quanto tempo o Lambda retém o histórico de execução e os dados do ponto de verificação após a conclusão de uma execução durável. Esses dados incluem resultados da etapa, estado de execução e o log completo dos pontos de verificação.
Depois que o período de retenção expira, o Lambda exclui o histórico de execução e os dados do ponto de verificação. Não será possível mais recuperar os detalhes da execução nem repetir a execução. O período de retenção começa quando a execução atinge um estado terminal (SUCCEEDED, FAILED, STOPPED ou TIMED_OUT).
É possível configurar o período de retenção ao criar uma função durável usando o console do Lambda, a AWS CLI ou o AWS SAM. No console do Lambda, escolha sua função e, em seguida, Configuração, Execução durável. Defina o valor do período de retenção em dias (padrão: 14 dias, mínimo: 1 dia, máximo: 90 dias).
Escolha um período de retenção com base em seus requisitos de conformidade, necessidades de depuração e considerações de custo. Períodos de retenção mais longos fornecem mais tempo para depuração e auditoria, mas aumentam os custos de armazenamento.
Consulte também
Guia do desenvolvedor do SDK de execução durável da AWS – Referência completa do SDK, tutoriais rápidos, estrutura de testes e guias específicos da linguagem.
Funções duráveis ou Step Functions: compare funções duráveis com o Step Functions para entender quando cada abordagem é mais eficaz.