Configuração de funções duráveis do Lambda - AWS Lambda

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.

AWS CLI
aws lambda update-function-configuration \ --function-name my-durable-function \ --durable-config '{ "ExecutionTimeout": 3600, "RetentionPeriodInDays": 30, "AllowInvokeLatest": true }'
CloudFormation
Resources: MyDurableFunction: Type: AWS::Lambda::Function Properties: FunctionName: my-durable-function Runtime: nodejs18.x Handler: index.handler Code: ZipFile: | // Your durable function code DurableConfig: ExecutionTimeout: 3600 RetentionPeriodInDays: 30 AllowInvokeLatest: true

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 ExecutionTimeout com 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 RetentionPeriodInDays com 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 AllowInvokeLatest como false em 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 }