如何通过 http 触发器从 AWS SNS 触发 GCP 云功能(私有)

How to trigger GCP cloud function(private) from AWS SNS over http trigger

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

您不能阻止用户调用您的 HTTP 端点,因为您必须创建端点 public 以便 Amazon SNS 能够调用您的端点。您可以验证请求并拒绝您不想处理的请求(return 401 未经授权)。

验证请求的方法有多种。我列出了从最不安全到最安全(也最容易到最难实施)的方法。

检查 x-amz-sns-topic-arnx-amz-sns-subscription-arn 以获取您在 HTTP POST 请求 headers 中期望的值。

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

验证 SNS 通知签名。此方法需要下载亚马逊证书并在每次请求时验证签名。

Using Amazon SNS for system-to-system messaging with an HTTP/s endpoint as a subscriber