如何通过 http 触发器从 AWS SNS 触发 GCP 云功能(私有)
Posted
技术标签:
【中文标题】如何通过 http 触发器从 AWS SNS 触发 GCP 云功能(私有)【英文标题】:How to trigger GCP cloud function(private) from AWS SNS over http trigger 【发布时间】:2020-04-06 16:11:52 【问题描述】:我在 GCP 中有云功能,当使用 SNS 通知在 s3 存储桶中收到任何对象时触发。 SNS 已以这种方式配置,当任何对象进入 s3 存储桶时,它会使用 http 触发器(https url)通知 GCP 云函数。截至目前,云功能端点是公开的,因此如果有人拥有严重安全问题的 url,它甚至可以从任何地方触发,甚至可以从 Web 浏览器触发。因此,我想将其设为私有,并希望它只能通过 AWS SNS 访问,但不知道如何实现。
【问题讨论】:
【参考方案1】:您无法阻止用户调用您的 HTTP 终端节点,因为您必须公开该终端节点才能使 Amazon SNS 能够调用您的终端节点。您可以验证请求并拒绝您不想处理的请求(返回 401 Unauthorized)。
有几种方法可以验证请求。我列出了从最不安全到最安全(也是最容易到最难实现)的方法。
检查 x-amz-sns-topic-arn
或 x-amz-sns-subscription-arn
以获得您期望在 HTTP POST 请求标头中的值。
使用用户名和密码将 SNS 配置为使用基本身份验证。验证这两个值。
验证 SNS 通知签名。此方法需要下载 Amazon 证书并验证每个请求的签名。
Using Amazon SNS for system-to-system messaging with an HTTP/s endpoint as a subscriber
【讨论】:
以上是关于如何通过 http 触发器从 AWS SNS 触发 GCP 云功能(私有)的主要内容,如果未能解决你的问题,请参考以下文章
AWS Elastic Beanstalk上发生了哪种事件会触发SNS通知?