【问题标题】:Getting exponential backoff in AWS SNS with AWS Lambda使用 AWS Lambda 在 AWS SNS 中获得指数回退
【发布时间】:2017-09-20 16:43:14
【问题描述】:

就目前而言,AWS SNS 通过 HTTP/HTTPS 端点提供重试(线性、几何和指数退避)功能,以防端点返回 5XX 响应。

因此,我的应用程序架构发生了变化,我强烈需要在我的 SNS 和 Lambda 之间插入一个 API 网关,以便在发生故障时我可以从 API 网关返回 5XX 状态并利用 SNS 的重试功能。

但是没有提到 AWS lambda 的重试机制。有什么方法可以将 SNS 重试工具用于非基于 HTTP 的订阅?

谢谢

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-sns serverless-framework


    【解决方案1】:

    经过几个小时的调试和浏览 AWS 文档后,似乎目前除了 HTTP/HTTPS 源之外,没有办法从 AWS SNS 获得指数级回报。

    您可以查看this

    如文档中所引用:

    当用户针对您的 Lambda 的主题调用 SNS 发布 API 时 函数被订阅,Amazon SNS 将调用 Lambda 来调用您的 异步运行。然后 Lambda 将返回一个交付状态。如果 调用 Lambda 时出错,Amazon SNS 将重试调用 Lambda 函数最多 3 次。尝试 3 次后,如果 Amazon SNS 仍然无法成功调用 Lambda 函数,然后亚马逊 SNS 将向 CloudWatch 发送传递状态失败消息。

    由于 Lambda 存在异步调用,因此 SNS 不会关心 lambda 的退出状态是什么。因此,从 SNS 的角度来看,成功调用 lambda 就足够成功,并且不会提供失败事件,因此无需自定义回退。

    目前看来,添加 HTTP 端点是唯一的选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-25
      • 1970-01-01
      • 2019-07-10
      • 2022-01-27
      • 2017-12-01
      • 1970-01-01
      • 2015-11-16
      • 2020-10-24
      相关资源
      最近更新 更多