Lambda 지속성 함수 구성
Lambda 함수에 대해 지속성 실행을 활성화하려면 함수를 실행할 수 있는 기간, 상태 데이터가 유지되는 기간 및 필요한 권한을 제어하는 특정 설정을 구성해야 합니다.
지속성 실행 활성화
Lambda 함수에 대해 지속성 실행을 활성화하려면 함수 구성에서 DurableConfig를 구성합니다. 이 설정은 실행 제한 시간, 상태 보존 및 버전 관리 동작을 제어합니다.
구성 파라미터:
ExecutionTimeout- 초 단위의 최대 실행 시간(최대 31,536,000(1년))RetentionPeriodInDays- 실행 상태 및 내역을 유지하는 기간(1~365일)AllowInvokeLatest- 지속성 실행을 위해 $LATEST 버전의 간접 호출을 허용하는지 여부
지속성 함수에 대한 IAM 권한
지속성 함수에는 표준 Lambda 실행 역할 이외의 추가 IAM 권한이 필요합니다. 함수의 실행 역할에는 상태 관리 및 지속성 실행 API에 대한 권한이 포함되어야 합니다.
최소 필수 권한:
{ "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:*:*:*" } ] }
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: '*'
구성 모범 사례
프로덕션용으로 지속성 함수 구성 시 다음 모범 사례를 따릅니다.
-
적절한 실행 제한 시간 설정 - 워크플로의 최대 예상 기간에 따라
ExecutionTimeout을 구성합니다. 제한 시간이 불필요하게 길면 비용 및 리소스 할당에 영향을 미치므로, 너무 길게 설정하지 마세요. -
보존과 스토리지 비용의 균형 유지 - 디버깅 및 감사 요구 사항에 따라
RetentionPeriodInDays를 설정합니다. 보존 기간이 길수록 스토리지 비용이 증가합니다. -
프로덕션 환경에서 버전 관리 사용 - 프로덕션 환경에서
AllowInvokeLatest를false로 설정하고 지속성 실행에 특정 함수 버전 또는 별칭을 사용합니다. -
상태 크기 모니터링 - 상태 객체가 크면 스토리지 비용이 증가하고 성능에 영향을 미칠 수 있습니다. 상태 크기를 최소화하고 대용량 데이터에는 외부 스토리지를 사용하세요.
-
적절한 로깅 구성 - 장기 실행 워크플로 문제를 해결하기 위해 세부 로깅을 활성화하되, 로그 볼륨과 비용에 유의합니다.
프로덕션 구성 예제:
{ "ExecutionTimeout": 86400, "RetentionPeriodInDays": 7, "AllowInvokeLatest": false }