使用 Amazon CLI 部署和调用 Lambda 持久性函数 - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Amazon CLI 部署和调用 Lambda 持久性函数

使用 Amazon CLI 通过强制性命令创建和部署 Lambda 持久性函数。这种方法能让您直接控制部署过程的每一个步骤。

先决条件

  • 安装和配置 。Amazon CLI有关说明,请参阅安装 Amazon CLI

  • 创建包含函数代码和持久执行 SDK 的部署包。

  • 创建具有检查点权限的 IAM 执行角色。

创建执行角色

创建一个 IAM 角色,赋予其执行基本 Lambda 任务和进行检查点操作的权限。

创建执行角色
  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/AWSLambdaBasicExecutionRole
  4. 为检查点操作创建策略。将其另存为 checkpoint-policy.json

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:CheckpointDurableExecutions", "lambda:GetDurableExecutionState" ], "Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:myDurableFunction" } ] }
  5. 创建并附加检查点策略:

    aws iam create-policy \ --policy-name durable-checkpoint-policy \ --policy-document file://checkpoint-policy.json aws iam attach-role-policy \ --role-name durable-function-role \ --policy-arn arn:aws:iam::ACCOUNT_ID:policy/durable-checkpoint-policy

创建持久性函数

使用 --durable-config 参数创建您的持久性函数。

要创建持久性函数
  1. 将包含依赖项的函数代码打包到 .zip 文件中:

    zip -r function.zip index.mjs node_modules/
  2. 创建启用了持久执行的函数:

    aws lambda create-function \ --function-name myDurableFunction \ --runtime nodejs22.x \ --role arn:aws:iam::ACCOUNT_ID:role/durable-function-role \ --handler index.handler \ --zip-file fileb://function.zip \ --durable-config '{"ExecutionTimeout": 10, "RetentionPeriodInDays":1}'
注意

您只能在创建函数时启用持久执行。您无法对现有函数启用它。

发布版本

持久性函数需要使用限定的 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(版本或别名)调用您的持久性函数。

同步调用

对于在 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 会立即返回。函数将继续在后台执行。

管理持久执行

使用以下命令管理和监控持久性函数执行。

列出执行

列出持久性函数的所有执行情况:

aws lambda list-durable-executions \ --function-name myDurableFunction:prod
获取执行详细信息

获取有关特定执行的详细信息:

aws lambda get-durable-execution \ --function-name myDurableFunction:prod \ --execution-id exec-abc123
获取执行历史记录

查看执行的检查点历史记录:

aws lambda get-durable-execution-history \ --function-name myDurableFunction:prod \ --execution-id exec-abc123
停止执行

停止正在运行的持久执行:

aws lambda stop-durable-execution \ --function-name myDurableFunction:prod \ --execution-id exec-abc123

更新函数代码

更新您的持久性函数代码并发布新版本:

要更新并发布新版本
  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::ACCOUNT_ID:policy/durable-checkpoint-policy aws iam delete-policy \ --policy-arn arn:aws:iam::ACCOUNT_ID:policy/durable-checkpoint-policy # Delete the role aws iam delete-role --role-name durable-function-role

后续步骤

使用 Amazon CLI 命令部署您的持久性函数后:

  • 使用 list-durable-executionsget-durable-execution 命令监控执行情况

  • 查看 Amazon CloudTrail 数据事件中的检查点操作

  • 为执行故障或长时间运行的执行设置 CloudWatch 警报

  • 使用 shell 脚本或 CI/CD 管道自动部署

有关 Lambda 的 Amazon CLI 命令的更多信息,请参阅 Amazon CLI 命令参考