코드형 인프라를 사용하여 Lambda 지속성 함수 배포
AWS CloudFormation, AWS CDK 또는 AWS Serverless Application Model 같은 코드형 인프라(IaC) 도구를 사용하여 Lambda 지속성 함수를 배포할 수 있습니다. 이러한 도구를 사용하면 코드에서 함수, 실행 역할 및 권한을 정의하여 배포를 반복하고 버전을 관리할 수 있습니다.
3가지 도구 모두에서 다음을 수행해야 합니다.
함수에서 지속성 실행 활성화
실행 역할에 체크포인트 권한 부여
버전 게시 또는 별칭 생성(지속성 함수에는 정규화된 ARN 필요)
AWS CloudFormation
CloudFormation을 사용하여 템플릿에서 지속성 함수를 정의합니다. 다음 예제에서는 필요한 권한을 가진 지속성 함수를 생성합니다.
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
템플릿을 배포하려면
aws cloudformation deploy \ --template-file template.yaml \ --stack-name my-durable-function-stack \ --capabilities CAPABILITY_IAM
AWS CDK
AWS CDK를 사용하면 프로그래밍 언어로 인프라를 정의할 수 있습니다. 다음 예제에서는 TypeScript 및 Python을 사용하여 지속성 함수를 생성하는 방법을 보여줍니다.
CDK 스택 배포
cdk deploy
AWS Serverless Application Model
AWS SAM은 서버리스 애플리케이션의 CloudFormation 템플릿을 간소화합니다. 다음 템플릿은 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
SAM 템플릿 배포
sam build sam deploy --guided
일반적인 구성 패턴
사용하는 IaC 도구와 무관하게 지속성 함수에 대해 다음 패턴을 따릅니다.
지속성 실행 활성화
DurableExecution.Enabled 속성 true로 설정합니다. 이 속성은 함수를 생성할 때만 사용할 수 있습니다. 기존 함수에서는 지속성 실행을 활성화할 수 없습니다.
체크포인트 권한 부여
실행 역할에 lambda:CheckpointDurableExecutions 및 lambda:GetDurableExecutionState를 추가합니다. 이러한 권한의 범위를 특정 함수 ARN으로 지정합니다.
정규화된 ARN 사용
함수의 버전 또는 별칭을 생성합니다. 지속성 함수는 간접 호출에 정규화된 ARN(버전 또는 별칭 포함)이 필요합니다. AWS SAM에서 AutoPublishAlias를 사용하거나 CloudFormation 및 AWS CDK에서 명시적 버전을 생성합니다.
패키지 종속성
배포 패키지에 지속성 실행 SDK를 포함합니다. Node.js의 경우 @aws/durable-execution-sdk-js를 설치합니다. Python의 경우 aws-durable-execution-sdk-python을 설치합니다.
다음 단계
지속성 함수 배포 후에 다음을 진행합니다.
-
정규화된 ARN(버전 또는 별칭)을 사용하여 함수 테스트
-
Lambda 콘솔의 지속성 실행 탭에서 실행 진행 상황 모니터링
-
AWS CloudTrail 데이터 이벤트에서 체크포인트 작업 보기
-
CloudWatch Logs에서 함수 출력 및 재생 동작 검토
IaC 도구를 사용하여 Lambda 함수를 배포하는 방법에 대한 자세한 내용은 다음 항목을 참조하세요.