使用 Amazon CLI 部署和调用 Lambda 持久性函数
使用 Amazon CLI 通过强制性命令创建和部署 Lambda 持久性函数。这种方法能让您直接控制部署过程的每一个步骤。
先决条件
安装和配置 。Amazon CLI有关说明,请参阅安装 Amazon CLI。
创建包含函数代码和持久执行 SDK 的部署包。
创建具有检查点权限的 IAM 执行角色。
创建执行角色
创建一个 IAM 角色,赋予其执行基本 Lambda 任务和进行检查点操作的权限。
创建执行角色
-
创建一个信任策略文档,该文档允许 Lambda 代入该角色。将其另存为
trust-policy.json:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } -
创建该角色:
aws iam create-role \ --role-name durable-function-role \ --assume-role-policy-document file://trust-policy.json -
附上基本执行策略:
aws iam attach-role-policy \ --role-name durable-function-role \ --policy-arn arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole -
为检查点操作创建策略。将其另存为
checkpoint-policy.json:{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "lambda:CheckpointDurableExecutions", "lambda:GetDurableExecutionState" ], "Resource": "arn:aws:lambda:REGION:ACCOUNT_ID:function:myDurableFunction" } ] } -
创建并附加检查点策略:
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 参数创建您的持久性函数。
要创建持久性函数
-
将包含依赖项的函数代码打包到 .zip 文件中:
zip -r function.zip index.mjs node_modules/ -
创建启用了持久执行的函数:
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
更新函数代码
更新您的持久性函数代码并发布新版本:
要更新并发布新版本
-
更新函数代码:
aws lambda update-function-code \ --function-name myDurableFunction \ --zip-file fileb://function.zip -
等待更新完成:
aws lambda wait function-updated \ --function-name myDurableFunction -
发布新版本:
aws lambda publish-version \ --function-name myDurableFunction \ --description "Updated order processing logic" -
更新别名以指向新版本:
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-executions和get-durable-execution命令监控执行情况查看 Amazon CloudTrail 数据事件中的检查点操作
为执行故障或长时间运行的执行设置 CloudWatch 警报
使用 shell 脚本或 CI/CD 管道自动部署
有关 Lambda 的 Amazon CLI 命令的更多信息,请参阅 Amazon CLI 命令参考。