Implementación de funciones duraderas de Lambda con la infraestructura como código
Puede implementar funciones duraderas de Lambda mediante herramientas de Infraestructura como código (IaC) como AWS CloudFormation, AWS CDK o AWS Serverless Application Model. Estas herramientas le permiten definir la función, el rol de ejecución y los permisos en el código, lo que permite que las implementaciones sean repetibles y estén controladas por versiones.
Las tres herramientas requieren que haga lo siguiente:
Permita una ejecución duradera de la función.
Conceda permiso para pasar el rol de ejecución.
Publique una versión o cree un alias (las funciones duraderas requieren ARN calificados).
AWS CloudFormation
Utilice CloudFormation para definir la función duradera en una plantilla. En el siguiente ejemplo, se crea una función duradera con los permisos necesarios.
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 implementar la plantilla
aws cloudformation deploy \ --template-file template.yaml \ --stack-name my-durable-function-stack \ --capabilities CAPABILITY_IAM
AWS CDK
AWS CDK permite definir la infraestructura mediante lenguajes de programación. En los siguientes ejemplos, se muestra cómo crear una función duradera con TypeScript y Python.
Cómo implementar la pila de CDK
cdk deploy
AWS Serverless Application Model
AWS SAM simplifica las plantillas de CloudFormation para aplicaciones sin servidor. La siguiente plantilla crea una función duradera con 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
Cómo implementar la plantilla de SAM
sam build sam deploy --guided
Patrones de configuración frecuentes
Independientemente de la herramienta de IaC que utilice, siga estos patrones para ejecutar funciones duraderas:
Habilitación de la ejecución duradera
Establezca la propiedad DurableExecution.Enabled en true. Esta propiedad solo está disponible cuando crea la función; no se puede habilitar la ejecución duradera en las funciones existentes.
Concesión de permisos de puntos de control
Agregue lambda:CheckpointDurableExecutions y lambda:GetDurableExecutionState al rol de ejecución. Delimite estos permisos al ARN de la función específica.
Uso de ARN calificados
Cree una versión o un alias para la función. Las funciones duraderas requieren ARN calificados (con versión o alias) para su invocación. Utilice AutoPublishAlias en AWS SAM o cree versiones explícitas en CloudFormation y AWS CDK.
Dependencias del paquete
Incluya el SDK de ejecución duradera en su paquete de implementación. En el caso de Node.js, instale @aws/durable-execution-sdk-js. En el caso de Python, instale aws-durable-execution-sdk-python.
Siguientes pasos
Tras implementar la función duradera:
-
Pruebe su función con el ARN calificado (versión o alias).
-
Supervise el progreso de la ejecución en la consola Lambda en la pestaña Ejecuciones duraderas.
-
Vea las operaciones de los puntos de control en los eventos de datos de AWS CloudTrail.
-
Revise Registros de CloudWatch para ver el rendimiento de las funciones y el comportamiento de reproducción.
Para obtener más información acerca de cómo implementar funciones de Lambda con herramientas de IaC, consulte: