View a markdown version of this page

使用 部署和叫用 Lambda 耐用函數 AWS CLI - AWS Lambda

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 部署和叫用 Lambda 耐用函數 AWS CLI

使用 AWS CLI 以使用命令建立和部署 Lambda 耐用函數。此方法可讓您直接控制部署程序的每個步驟。

先決條件

  • 安裝及設定 AWS CLI。如需說明,請參閱安裝 AWS CLI

  • 使用函數程式碼和耐用的執行 SDK 建立部署套件。

  • 建立具有檢查點許可的 IAM 執行角色。

建立執行角色

建立具有基本 Lambda 執行和檢查點操作許可的 IAM 角色。

建立執行角色
  1. 建立允許 Lambda 擔任角色的信任政策文件。將此儲存為 trust-policy.json

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
  2. 建立角色:

    aws iam create-role \ --role-name durable-function-role \ --assume-role-policy-document file://trust-policy.json
  3. 連接檢查點操作和基本執行的耐久執行政策:

    aws iam attach-role-policy \ --role-name durable-function-role \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicDurableExecutionRolePolicy

AWSLambdaBasicDurableExecutionRolePolicy 受管政策包含檢查點操作 (lambda:CheckpointDurableExecutionlambda:GetDurableExecutionState) 和基本 Lambda 執行所需的許可。

建立耐用的 函數

使用 --durable-config 參數建立您的耐用函數。

建立耐用的函數
  1. 將具有相依性的函數程式碼封裝至 .zip 檔案:

    zip -r function.zip index.mjs node_modules/
    注意

    對於以 Java 為基礎的耐用函數,您需要將函數程式碼和相依性編譯為單一 .zip 檔案或 Java Archive (JAR) 檔案。如需詳細資訊,請參閱使用 .zip 或 JAR 檔案封存部署 Java Lambda 函數

  2. 建立已啟用持久性執行的函數:

    aws lambda create-function \ --function-name myDurableFunction \ --runtime nodejs22.x \ --role arn: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-name myDurableFunction \ --description "Initial version"

命令會傳回版本 ARN。請注意 ARN 結尾的版本編號 (例如 :1)。

或者,建立指向 版本的別名:

aws lambda create-alias \ --function-name myDurableFunction \ --name prod \ --function-version 1

叫用耐久函數

使用合格的 ARN (版本或別名) 叫用您的耐用函數。

注意

等冪叫用:若要防止重試失敗叫用時重複執行,您可以提供執行名稱,確保at-most-once。如需詳細資訊,請參閱等冪性

同步調用

對於在 15 分鐘內完成的執行,請使用同步調用:

aws lambda invoke \ --function-name myDurableFunction:1 \ --payload '{"orderId": "order-12345"}' \ --cli-binary-format raw-in-base64-out \ response.json

或使用別名:

aws lambda invoke \ --function-name myDurableFunction:prod \ --payload '{"orderId": "order-12345"}' \ --cli-binary-format raw-in-base64-out \ response.json
非同步調用

對於長時間執行的執行,請使用非同步調用:

aws lambda invoke \ --function-name myDurableFunction: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-name myDurableFunction
取得執行詳細資訊

取得特定執行的詳細資訊:

aws lambda get-durable-execution \ --durable-execution-arn arn: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-arn arn: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-arn arn:aws:lambda:us-east-1:123456789012:function:myDurableFunction:my-function-version/durable-execution/my-execution-name/my-execution-id

更新函數程式碼

更新您的耐用函數程式碼並發佈新版本:

更新和發佈新版本
  1. 更新函數程式碼:

    aws lambda update-function-code \ --function-name myDurableFunction \ --zip-file fileb://function.zip
  2. 等待更新完成:

    aws lambda wait function-updated \ --function-name myDurableFunction
  3. 發佈新版本:

    aws lambda publish-version \ --function-name myDurableFunction \ --description "Updated order processing logic"
  4. 更新別名以指向新版本:

    aws lambda update-alias \ --function-name myDurableFunction \ --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-name myDurableFunction # Delete the IAM role policies aws iam detach-role-policy \ --role-name durable-function-role \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole aws iam detach-role-policy \ --role-name durable-function-role \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicDurableExecutionRolePolicy # Delete the role aws iam delete-role --role-name durable-function-role

後續步驟

使用 部署您的耐用函數之後 AWS CLI:

  • 使用 list-durable-executions-by-functionget-durable-execution命令監控執行

  • 檢視 AWS CloudTrail 資料事件中的檢查點操作

  • 針對執行失敗或長時間執行的執行設定 CloudWatch 警示

  • 使用 shell 指令碼或 CI/CD 管道自動化部署

如需 Lambda AWS CLI 命令的詳細資訊,請參閱 AWS CLI 命令參考