Lambda 지속성 함수 구성 - AWS Lambda

Lambda 지속성 함수 구성

Lambda 함수에 대해 지속성 실행을 활성화하려면 함수를 실행할 수 있는 기간, 상태 데이터가 유지되는 기간 및 필요한 권한을 제어하는 특정 설정을 구성해야 합니다.

지속성 실행 활성화

Lambda 함수에 대해 지속성 실행을 활성화하려면 함수 구성에서 DurableConfig를 구성합니다. 이 설정은 실행 제한 시간, 상태 보존 및 버전 관리 동작을 제어합니다.

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

구성 파라미터:

  • 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를 설정합니다. 보존 기간이 길수록 스토리지 비용이 증가합니다.

  • 프로덕션 환경에서 버전 관리 사용 - 프로덕션 환경에서 AllowInvokeLatestfalse로 설정하고 지속성 실행에 특정 함수 버전 또는 별칭을 사용합니다.

  • 상태 크기 모니터링 - 상태 객체가 크면 스토리지 비용이 증가하고 성능에 영향을 미칠 수 있습니다. 상태 크기를 최소화하고 대용량 데이터에는 외부 스토리지를 사용하세요.

  • 적절한 로깅 구성 - 장기 실행 워크플로 문제를 해결하기 위해 세부 로깅을 활성화하되, 로그 볼륨과 비용에 유의합니다.

프로덕션 구성 예제:

{ "ExecutionTimeout": 86400, "RetentionPeriodInDays": 7, "AllowInvokeLatest": false }