跨账号、跨地域SNS消息处理

Cross account, cross region SNS message processing

我们正在致力于 2 个团队之间的 SNS 到 HTTPS API 集成。因此,另一个团队在 us-east-1 区域配置了 SNS 主题,我们的 HTTPS API 在 us-west-2 区域是 运行。

只是想检查一下我们是否可以处理从 us-east-1us-west-2 区域中的 不同 AWS 账户 生成的 SNS 消息。

我在某处读到(现在不记得博客 post link),如果 SNS 消息在 us-east-1 中生成,则必须在 [=10] 中处理=] 只有。如果我们尝试在 us-east-2 中处理,消息签名验证将失败并抛出无效的 TopicArn 异常。

是否正确请指导

So, another team has SNS topic configured in us-east-1 region and our HTTPS API is running in us-west-2 region.

当 SNS 发布到 HTTPS 端点时,端点可以是互联网上的任何地方。它甚至根本不需要在 AWS 中。只要您的 HTTPS 端点可以从 Internet 访问并且具有有效的 SSL 证书(与主机名匹配,未过期,由认可的证书颁发机构签名,不是自签名的),这就是 SNS 所需要的。

目标区域和目标 AWS 账户在这样的设置中失去了所有意义。没有约束,这里

如果主题在 us-east-1,那么所有发送到 SNS 的请求都必须发送到 us-east- 1 个端点(例如 SubscribePublish),但即便如此,它们也可以从 发送到互联网上的任何地方。

可以通过 lambda 的 HTTPS 端点跨区域配置 SNS,方法是将 API 网关附加到该 lambda 并复制其 HTTPS URL。

获取 HTTPS 后 URL lambda 可能是哪个区域。可能你只是在SNS服务中通过创建订阅在SNS服务中添加了SNS服务订阅部分。

之后,只需发布​​一条消息即可。如果您在 lambda 中打印事件,您将在 Cloudwatch 日志中看到条目。您会看到类似“订阅 URL”的内容。复制 URL 并将其粘贴到 SNS 服务中,您将在其中看到“Pending on Subscription”。这将适用于最新的亚马逊 SNS 服务。

我尝试并测试了它以验证它是否有效。