配置 Lambda 持久性函数
要为您的 Lambda 函数启用持久执行,您需要配置特定的设置项,以控制您的函数运行的时长、状态数据的保留时长,以及所需的权限。
启用持久执行
要为您的 Lambda 函数启用持久执行,请在您的函数配置中配置 DurableConfig。此设置将控制执行超时、状态保留和版本控制行为。
配置参数:
ExecutionTimeout:最长执行时间,以秒为单位(一年最多 31536000 秒)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 }