将 SNS 消息发布到 AWS_IAM 经过身份验证的 Api 网关端点

Posting SNS messages to AWS_IAM authenticated Api Gateway endpoint

  1. 我创建了 SNS 主题
  2. 我已经创建了 API 调用 Lambda 函数的网关端点
  3. 我创建了指向 API 网关端点的主题 HTTPS 订阅

问题:当 AUTH=none 时一切正常,但是当我启用 AUTH=AWS_IAM 时,订阅和消息都没有传送到我的 lambda。它们也不会出现在 Lambda OR Gateway cloudwatch 日志中,因为身份验证错误通常是这种情况。

问题:

很高兴听到你的任何想法,谢谢。

为什么不让 Lambda 函数直接订阅 SNS 主题(不通过 API 网关)?

这应该很简单:https://docs.aws.amazon.com/sns/latest/dg/sns-lambda.html

这是完整的 link,它将帮助您解决身份验证问题。 https://aws.amazon.com/premiumsupport/knowledge-center/iam-authentication-api-gateway/

如果这是一个 "Check privileges" 问题,那么您的 IAM 用户没有足够的资源访问权限来进行任何更改。

正如您在文档中看到的那样,SNS 只能做 Basic/Digest Auth http://docs.aws.amazon.com/sns/latest/dg/SendMessageToHttp.html

文档中有一节关于验证消息的有效性,但这是您必须自己编写或从后端的 SNS SDK 之一提取的代码。不幸的是,确实没有任何方法可以让 SNS 使用 AWS SigV4 对请求进行签名。