View a markdown version of this page

Lambda 持久性函数的最佳实践 - AWS Lambda

Lambda 持久性函数的最佳实践

耐用函数使用基于重放的执行模型,该模型需要的编程做法与传统 Lambda 函数不同。有关如何编写和测试耐用工作流程代码的指导,请参阅《AWS 耐用执行 SDK 开发人员指南》中的最佳实践

以下建议是部署、调用和监控 Lambda 耐用函数的最佳实践。

函数版本和别名

通过使用版本号或别名来调用函数,以便将执行操作固定在特定的代码版本上。确保新的代码版本可以处理旧版本的状态。不要以中断重放的方式重命名步骤或更改其行为。

监控

启用带有执行 ID 和步骤名称的结构化日志记录。设置 CloudWatch 警报,以了解错误率和执行持续时间。使用跟踪来识别瓶颈。有关详细指导,请参阅监控和调试

错误处理

除开为暂时性失败配置重试策略外,还可以在持久性函数上配置死信队列(DLQ)来捕获永久失败执行中的事件。当持久性执行在异步调用后达到终了状态(FAILED、STOPPED 或 TIMED_OUT)时,Lambda 会将原始触发事件发送到 DLQ。这使您可以检查、调试以及(可选)重新处理失败的事件,而不会丢失这些事件。

要配置 DLQ,请将函数的 DeadLetterConfig 属性设置为某个 Amazon SQS 队列或 Amazon SNS 主题 ARN。有关更多信息,请参阅死信队列

请遵循以下有关持久性函数错误处理的最佳实践:

  • 为异步调用配置 DLQ:异步调用耐久函数时务必附加死信队列。与标准 Lambda 函数不同,持久性执行不会在失败时自动重试,因此 DLQ 是捕获导致执行永久失败的事件的安全网。

  • 在步骤中使用重试策略:使用恰当的回退机制为暂时性失败配置显式重试策略。有关配置重试的指导,请参阅持久性函数的重试

  • 将 DLQ 与 EventBridge 通知结合使用:使用 EventBridge 规则在出现 FAILED、STOPPED 和 TIMED_OUT 状态变化时发出警报,以实时了解情况,并使用 DLQ 保留原始事件有效载荷以供日后分析或重新处理。

  • 监控 DLQ 深度:根据 ApproximateNumberOfMessagesVisible 指标创建 CloudWatch 警报,以便您的 DLQ 在错误不断积累时检测到问题。

相关资源