为什么使用SNS触发lambda函数而不是API网关?

ast*_*anu 2 amazon-web-services amazon-sns aws-lambda aws-api-gateway

我见过很多人使用SNS来触发其lambda函数,而不是使用API​​网关来执行它。有任何具体原因吗?

我个人认为允许API网关执行此操作比使用SNS灵活得多。关于为什么这样做有什么很好的阐述?如果我使用SNS触发该功能,是否可以提高性能或降低成本?

das*_*mug 5

TLDR:选择归结为发布-订阅模型与请求-响应模型。

请求-响应

  • 如果您需要知道Lambda返回什么,则必须同步调用Lambda 并等待结果。

  • 这可以通过API网关(从客户端应用程序)或直接直接同步调用Lambda (从其他Lambda)来完成。

  • 示例是典型的HTTP请求,REST API等。

发布-订阅

  • 如果您不关心返回值是什么,则可以严格调用Lambda 异步并继续进行操作,而无需等待结果。

  • 将某些内容发布到SNS主题后,将触发订阅该主题的Lambda。

  • 发布者不在乎订阅者会做什么。

  • 示例通常是后台任务触发器,例如发送电子邮件,发送SMS或启动长时间运行的任务,例如视频转码,图像处理,网页抓取等。