本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 部署和叫用 Lambda 耐用函數 AWS CLI
使用 AWS CLI 以使用命令建立和部署 Lambda 耐用函數。此方法可讓您直接控制部署程序的每個步驟。
先決條件
安裝及設定 AWS CLI。如需說明,請參閱安裝 AWS CLI。
使用函數程式碼和耐用的執行 SDK 建立部署套件。
建立具有檢查點許可的 IAM 執行角色。
建立執行角色
建立具有基本 Lambda 執行和檢查點操作許可的 IAM 角色。
建立執行角色
-
建立允許 Lambda 擔任角色的信任政策文件。將此儲存為
trust-policy.json:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } -
建立角色:
aws iam create-role \ --role-namedurable-function-role\ --assume-role-policy-document file://trust-policy.json -
連接檢查點操作和基本執行的耐久執行政策:
aws iam attach-role-policy \ --role-namedurable-function-role\ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicDurableExecutionRolePolicy
AWSLambdaBasicDurableExecutionRolePolicy 受管政策包含檢查點操作 (lambda:CheckpointDurableExecution 和 lambda:GetDurableExecutionState) 和基本 Lambda 執行所需的許可。
建立耐用的 函數
使用 --durable-config 參數建立您的耐用函數。
建立耐用的函數
-
將具有相依性的函數程式碼封裝至 .zip 檔案:
zip -r function.zip index.mjs node_modules/注意
對於以 Java 為基礎的耐用函數,您需要將函數程式碼和相依性編譯為單一 .zip 檔案或 Java Archive (JAR) 檔案。如需詳細資訊,請參閱使用 .zip 或 JAR 檔案封存部署 Java Lambda 函數。
-
建立已啟用持久性執行的函數:
aws lambda create-function \ --function-namemyDurableFunction\ --runtime nodejs22.x \ --rolearn:aws:iam::123456789012:role/durable-function-role\ --handler index.handler \ --zip-file fileb://function.zip \ --durable-config '{"ExecutionTimeout": 3600, "RetentionPeriodInDays": 7}'
注意
您只能在建立函數時啟用持久性執行。您無法在現有函數上啟用它。
發佈版本
雖然可以使用$LATEST版本限定詞叫用持久性函數,但您必須一律使用指向穩定版本的合格 ARN,以確保確定性執行程式碼。
aws lambda publish-version \ --function-namemyDurableFunction\ --description "Initial version"
命令會傳回版本 ARN。請注意 ARN 結尾的版本編號 (例如 :1)。
或者,建立指向 版本的別名:
aws lambda create-alias \ --function-namemyDurableFunction\ --name prod \ --function-version 1
叫用耐久函數
使用合格的 ARN (版本或別名) 叫用您的耐用函數。
注意
等冪叫用:若要防止重試失敗叫用時重複執行,您可以提供執行名稱,確保at-most-once。如需詳細資訊,請參閱等冪性。
同步調用
對於在 15 分鐘內完成的執行,請使用同步調用:
aws lambda invoke \ --function-namemyDurableFunction:1\ --payload '{"orderId": "order-12345"}' \ --cli-binary-format raw-in-base64-out \ response.json
或使用別名:
aws lambda invoke \ --function-namemyDurableFunction:prod\ --payload '{"orderId": "order-12345"}' \ --cli-binary-format raw-in-base64-out \ response.json
非同步調用
對於長時間執行的執行,請使用非同步調用:
aws lambda invoke \ --function-namemyDurableFunction:prod\ --invocation-type Event \ --payload '{"orderId": "order-12345"}' \ --cli-binary-format raw-in-base64-out \ response.json
使用非同步調用時,Lambda 會立即傳回 。函數會繼續在背景執行。
注意
您可以在 主控台中使用 $LATEST進行原型設計和測試。對於生產工作負載,請使用發佈的版本或別名。
管理持久的執行
使用下列命令來管理和監控持久的函數執行。
列出執行
列出耐用函數的所有執行:
aws lambda list-durable-executions-by-function \ --function-namemyDurableFunction
取得執行詳細資訊
取得特定執行的詳細資訊:
aws lambda get-durable-execution \ --durable-execution-arnarn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:my-function-version/durable-execution/my-execution-name/my-execution-id
取得執行歷史記錄
檢視執行的檢查點歷史記錄:
aws lambda get-durable-execution-history \ --durable-execution-arnarn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:my-function-version/durable-execution/my-execution-name/my-execution-id
停止執行
停止執行中的耐久執行:
aws lambda stop-durable-execution \ --durable-execution-arnarn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:my-function-version/durable-execution/my-execution-name/my-execution-id
更新函數程式碼
更新您的耐用函數程式碼並發佈新版本:
更新和發佈新版本
-
更新函數程式碼:
aws lambda update-function-code \ --function-namemyDurableFunction\ --zip-file fileb://function.zip -
等待更新完成:
aws lambda wait function-updated \ --function-namemyDurableFunction -
發佈新版本:
aws lambda publish-version \ --function-namemyDurableFunction\ --description "Updated order processing logic" -
更新別名以指向新版本:
aws lambda update-alias \ --function-namemyDurableFunction\ --name prod \ --function-version 2
重要
執行中的執行會繼續使用其啟動的版本。新的調用使用更新的別名版本。
檢視函數日誌
在 CloudWatch Logs 中檢視耐用函數的日誌:
aws logs tail /aws/lambda/myDurableFunction --follow
篩選特定執行的日誌:
aws logs filter-log-events \ --log-group-name /aws/lambda/myDurableFunction \ --filter-pattern "exec-abc123"
清除資源
刪除您的耐用函數和相關聯的資源:
# Delete the function aws lambda delete-function --function-namemyDurableFunction# Delete the IAM role policies aws iam detach-role-policy \ --role-namedurable-function-role\ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole aws iam detach-role-policy \ --role-namedurable-function-role\ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicDurableExecutionRolePolicy # Delete the role aws iam delete-role --role-namedurable-function-role
後續步驟
使用 部署您的耐用函數之後 AWS CLI:
使用
list-durable-executions-by-function和get-durable-execution命令監控執行檢視 AWS CloudTrail 資料事件中的檢查點操作
針對執行失敗或長時間執行的執行設定 CloudWatch 警示
使用 shell 指令碼或 CI/CD 管道自動化部署
如需 Lambda AWS CLI 命令的詳細資訊,請參閱 AWS CLI 命令參考。