SuperAPI AI 工具集

aws-lambda-durable-functions

部署与运维

查看项目

更新于 10-15 17:22

技能介绍

用途:构建可长时间运行、多步骤的弹性应用与 AI 工作流,最长执行一年,在中断后仍能可靠恢复进度。可配合 AWS MCP server 使用,但非必需;所有 AWS 交互均用标准 AWS CLI,需已配置 AWS 凭证。

主要能力与规则:持久执行必须在创建函数时启用,无法事后加装;函数须用限定 ARN(具体版本、别名或 $LATEST 后缀)调用,非限定函数名会失败。持久操作不可嵌套,步骤回调内不能调用 context.step()、context.wait() 或 context.invoke(),可用 context.runInChildContext() 分组。所有非确定性代码(Date.now()、Math.random()、UUID 生成、API 调用、数据库查询)必须放在步骤内,否则重放时值不同会破坏执行状态。闭包内变量变更在重放时会丢失,应从步骤返回值;步骤外的副作用会重复,日志应使用可感知重放的 context.logger。

用法:TypeScript 用 withDurableExecution 与 DurableContext,Python 用 @durable_execution 装饰器与 DurableContext,步骤用 context.step(...)。Python 与 TS 有差异:步骤可用 @durable_step 装饰器加 context.step(my_step(args)) 或内联 lambda;等待用 context.wait(duration=Duration.from_seconds(n), name='...');异常分 ExecutionError(永久)、InvocationError(瞬时)、CallbackError(回调失败);测试直接用 DurableFunctionTestRunner。调用示例:aws lambda invoke --function-name my-function:1 output.json。执行角色须附带 AWSLambdaBasicDurableExecutionRolePolicy(含 lambda:CheckpointDurableExecution、lambda:GetDurableExecutionState 及 CloudWatch Logs 权限),持久调用需 lambda:InvokeFunction,外部回调需 SendDurableExecutionCallbackSuccess/Failure。

验证与安全:检查非确定性代码是否在步骤外、是否有嵌套持久操作、闭包变更是否丢失、副作用是否重复。测试中所有操作应有描述性名称,按名称而非索引获取操作,并用 LocalDurableTestRunner 做本地测试。可在关联 CloudWatch Log Group 上启用 KMS 加密保护检查点数据;不要在步骤返回值中返回机密、凭证或 PII,改用 Secrets Manager 或 SSM Parameter Store 返回引用;在入口校验 event;非开发环境避免 DEBUG 日志。

限制与参考:资料未提供具体价格、性能数据及完整部署步骤。可参考的参考文件包括 getting-started.md、replay-model-rules.md、step-operations.md、wait-operations.md、concurrent-operations.md、error-handling.md、advanced-error-handling.md、testing-patterns.md、deployment-iac.md、advanced-patterns.md、troubleshooting-executions.md。