Implemente funções duráveis do Lambda com infraestrutura como código
É possível implantar funções duráveis do Lambda usando ferramentas de infraestrutura como código (IaC) como AWS CloudFormation, AWS CDK ou AWS Serverless Application Model. Essas ferramentas permitem que você defina sua função, perfil de execução e permissões no código, tornando as implantações repetíveis e controladas por versão.
Todas as três ferramentas exigem que você:
Habilite a execução durável da função
Conceda permissões de ponto de verifica';cão para o perfil de execução
Publique uma versão ou crie um alias (funções duráveis exigem ARNs qualificados)
AWS CloudFormation
Use CloudFormation para definir sua função durável em um modelo. O exemplo a seguir cria uma função durável com as permissões necessárias.
AWSTemplateFormatVersion: '2010-09-09' Description: Lambda durable function example Resources: 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: DurableExecutionPolicy PolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Action: - lambda:CheckpointDurableExecutions - lambda:GetDurableExecutionState Resource: !GetAtt DurableFunction.Arn DurableFunction: Type: AWS::Lambda::Function Properties: FunctionName: myDurableFunction Runtime: nodejs22.x Handler: index.handler Role: !GetAtt DurableFunctionRole.Arn Code: ZipFile: | // Your durable function code here export const handler = async (event, context) => { return { statusCode: 200 }; }; DurableConfig: ExecutionTimeout: 10 RetentionPeriodInDays: 1 DurableFunctionVersion: Type: AWS::Lambda::Version Properties: FunctionName: !Ref DurableFunction Description: Initial version DurableFunctionAlias: Type: AWS::Lambda::Alias Properties: FunctionName: !Ref DurableFunction FunctionVersion: !GetAtt DurableFunctionVersion.Version Name: prod Outputs: FunctionArn: Description: Durable function ARN Value: !GetAtt DurableFunction.Arn AliasArn: Description: Function alias ARN (use this for invocations) Value: !Ref DurableFunctionAlias
Para implantar o modelo
aws cloudformation deploy \ --template-file template.yaml \ --stack-name my-durable-function-stack \ --capabilities CAPABILITY_IAM
AWS CDK
AWS CDK permite definir a infraestrutura usando linguagens de programação. Os exemplos a seguir mostram como criar uma função durável usando TypeScript e Python.
Para implantar a pilha do CDK
cdk deploy
AWS Serverless Application Model
O AWS SAM simplifica os modelos do CloudFormation para aplicações com tecnologia sem servidor. O modelo a seguir cria uma função durável com o AWS SAM.
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: Lambda durable function with SAM Resources: DurableFunction: Type: AWS::Serverless::Function Properties: FunctionName: myDurableFunction Runtime: nodejs22.x Handler: index.handler CodeUri: ./src DurableConfig: ExecutionTimeout: 10 RetentionPeriodInDays: 1 Policies: - Version: '2012-10-17' Statement: - Effect: Allow Action: - lambda:CheckpointDurableExecutions - lambda:GetDurableExecutionState Resource: !Sub 'arn:aws:lambda:${AWS::Region}:${AWS::AccountId}:function:${DurableFunction}' AutoPublishAlias: prod Outputs: FunctionArn: Description: Durable function ARN Value: !GetAtt DurableFunction.Arn AliasArn: Description: Function alias ARN (use this for invocations) Value: !Ref DurableFunction.Alias
Para implantar o modelo do SAM
sam build sam deploy --guided
Padrões de configuração comuns
Independentemente de qual ferramenta de IaC você usar, siga estes padrões para funções duráveis:
Habilitação da execução durável
Defina a propriedade DurableExecution.Enabled como true. Essa propriedade só estará disponível ao criar a função, não será possível habilitar a execução durável em funções existentes.
Concessão de permissões de ponto de verificação
Adicione lambda:CheckpointDurableExecutions e lambda:GetDurableExecutionState ao perfil de execução. Defina o escopo dessas permissões para o ARN da função específica.
Use ARNs qualificados
Crie um uma versão ou alias para a sua função. As funções duráveis exigem ARNs qualificados (com versão ou alias) para invocação. Use AutoPublishAlias no AWS SAM ou crie versões explícitas no CloudFormation e no AWS CDK.
Dependências de pacotes
Inclua o SDK de execução durável em seu pacote de implantação. Para o Node.js, instale @aws/durable-execution-sdk-js. Para Python, instale aws-durable-execution-sdk-python.
Próximas etapas
Depois de implantar sua função durável:
-
Teste sua função usando o ARN qualificado (versão ou alias)
-
Monitore o progresso da execução no console do Lambda, na guia Execuções duráveis
-
Visualize as operações de ponto de verificação em eventos de dados do AWS CloudTrail
-
Analise o CloudWatch Logs para analisar a saída da função e o comportamento de reprodução
Para obter mais informações sobre como implantar funções do Lambda com ferramentas de IaC, consulte: