首页 > 解决方案 > 如何通过 http 触发器从 AWS SNS 触发 GCP 云功能(私有)

问题描述

我在 GCP 中有云功能,当使用 SNS 通知在 s3 存储桶中接收到任何对象时触发。SNS 已以这种方式配置,当任何对象进入 s3 存储桶时,它会使用 http 触发器(https url)通知 GCP 云函数。截至目前,云功能端点是公开的,因此如果有人拥有严重安全问题的 url,它甚至可以从任何地方触发,甚至可以从 Web 浏览器触发。因此,我想将其设为私有,并希望仅通过 AWS SNS 访问它,但不知道如何实现。

标签: amazon-web-servicesgoogle-cloud-platformgoogle-cloud-functionsamazon-snshybrid-cloud

解决方案


您无法阻止用户调用您的 HTTP 终端节点,因为您必须将终端节点设为公开,以便 Amazon SNS 能够调用您的终端节点。您可以验证请求并拒绝您不想处理的请求(返回 401 Unauthorized)。

有几种方法可以验证请求。我列出了从最不安全到最安全(也是最容易到最难实现)的方法。

在 HTTP POST 请求标头中检查您期望的值x-amz-sns-topic-arnx-amz-sns-subscription-arn值。

使用用户名和密码将 SNS 配置为使用基本身份验证。验证这两个值。

验证 SNS 通知签名。此方法需要下载 Amazon 证书并验证每个请求的签名。

使用 Amazon SNS 以 HTTP/s 终端节点作为订阅者的系统到系统消息传递


推荐阅读