Configuração de funções duráveis do Lambda
Para permitir a execução durável da sua função do Lambda, é necessário definir configurações específicas que controlem por quanto tempo sua função pode ser executada, por quanto tempo os dados de estado são retidos e quais permissões são necessárias.
Habilitação da execução durável
Para permitir a execução durável da sua função do Lambda, configure DurableConfig na definição da sua função. Essa configuração controla o tempo limite de execução, a retenção de estado e o comportamento do versionamento.
Parâmetros de configuração:
ExecutionTimeout: tempo máximo de execução em segundos (até 31.536.000 por um ano)RetentionPeriodInDays: por quanto tempo manter o estado e o histórico de execução (1-365 dias)AllowInvokeLatest: se deve permitir a invocação da versão $LATEST para execução durável
Permissões do IAM para funções duráveis
As funções duráveis exigem permissões adicionais do IAM além dos perfis de execução padrão do Lambda. O perfil de execução da sua função precisa incluir permissões para gerenciamento de estado e APIs de execução durável.
Permissões mínimas necessárias:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:InvokeFunction", "lambda:GetFunction", "lambda:ManageDurableState", "lambda:GetDurableExecution", "lambda:ListDurableExecutions" ], "Resource": "arn:aws:lambda:*:*:function:*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:*:*:*" } ] }
Exemplo de perfil de execução do CloudFormation
DurableFunctionRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: lambda.amazonaws.com Action: sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole Policies: - PolicyName: DurableFunctionPolicy PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - lambda:ManageDurableState - lambda:GetDurableExecution - lambda:ListDurableExecutions Resource: '*'
Práticas recomendadas para configuração
Siga estas práticas recomendadas ao configurar funções duráveis para uso em produção:
-
Defina tempos limite de execução adequados: configure
ExecutionTimeoutcom base na duração máxima esperada do seu fluxo de trabalho. Não defina prazos desnecessariamente longos, pois eles afetam a alocação de custos e recursos. -
Equilibre a retenção com os custos de armazenamento: defina
RetentionPeriodInDayscom base em seus requisitos de depuração e auditoria. Períodos de retenção mais longos aumentam os custos de armazenamento. -
Use o versionamento na produção: configure
AllowInvokeLatestcomofalseem ambientes de produção e use versões ou aliases de funções específicas para execuções duráveis. -
Monitore o tamanho do estado: objetos de estado grandes aumentam os custos de armazenamento e podem afetar a performance. Mantenha o estado mínimo e use armazenamento externo para grandes volumes de dados.
-
Configure o registro em log apropriado: habilite o registro em log detalhado para solucionar problemas de fluxos de trabalho de longa duração, mas esteja atento ao volume e aos custos dos logs.
Exemplo de configuração de produção:
{ "ExecutionTimeout": 86400, "RetentionPeriodInDays": 7, "AllowInvokeLatest": false }