本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定 Lambda 耐用函數
若要為 Lambda 函數啟用持久性執行,您需要設定特定設定,以控制函數的執行時間、保留狀態資料的時間,以及需要哪些許可。
啟用持久性執行
若要為 Lambda 函數啟用持久性執行,請在函數組態DurableConfig中設定 。此設定控制執行逾時、狀態保留和版本控制行為。
組態參數:
ExecutionTimeout- 最長執行時間,以秒為單位 (一年最多 31,536,000 個)RetentionPeriodInDays- 保留執行狀態和歷史記錄的時間長度 (1-365 天)AllowInvokeLatest- 是否允許調用 $LATEST 版本以進行持久性執行
耐用函數的 IAM 許可
除了標準 Lambda 執行角色之外,耐用函數需要額外的 IAM 許可。函數的執行角色必須包含狀態管理和持久執行 APIs許可。
最低必要許可:
{ "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根據您的偵錯和稽核需求進行設定。較長的保留期會增加儲存成本。 -
在生產環境中使用版本控制 -
false在生產環境中將AllowInvokeLatest設定為 ,並使用特定函數版本或別名進行持久性執行。 -
監控狀態大小 - 大型狀態物件會增加儲存成本,並可能影響效能。將狀態降至最低,並針對大型資料使用外部儲存。
-
設定適當的記錄 - 啟用詳細記錄,以對長時間執行的工作流程進行故障診斷,但請注意日誌磁碟區和成本。
生產組態範例:
{ "ExecutionTimeout": 86400, "RetentionPeriodInDays": 7, "AllowInvokeLatest": false }