GCP - 验证PubSub推送的云功能https端点的所有权

时间:2017-07-05 08:06:19

标签: google-cloud-platform google-cloud-functions google-cloud-pubsub

非常肯定没有办法做到这一点,但很高兴能够找到其他人是否有任何想法。

我想做的是:

  • 我在Google Cloud Platform上托管了2个微服务作为云 功能
  • 我的第一个微服务确实填充并触发PubSub 主题为[x]
  • 的消息
  • 我想将我的第二个微服务设置为 将订阅者推向主题[x]。我知道我可以通过部署来做到这一点 具有订阅触发器的第二个云功能但我不想要 这样做是因为没有合适的方式来确认/拒绝该消息 (见这篇文章:Google Cloud Functions to only Ack Pub/Sub on success)。
  • 因此,我已将第二个功能部署为具有HTTP触发器。我试过了 在GCP控制台中配置推送订阅 端点URL。当然,这不起作用,因为 https://[cloud-subdomain].cloudfunctions.net/未经过验证 域。

我想这是不可能做我想做的事情,而是需要在应用引擎或其他我可以验证域名的地方创建我的第二个微服务。

提前致谢!

2 个答案:

答案 0 :(得分:7)

Site Verification using HTML tag method

不仅仅是基于域名注册商的验证,您还可以使用here列出的任何方法验证您的网站。我同意其中大部分内容不适用于云功能,但可以通过云功能在几分钟内完成基于HTML Tag的验证。

您需要在正文属性之前的HTML响应中添加给定的meta属性。

示例:

<meta name="google-site-verification" content="VERIFICATION_TAG" />

此外,Google会定期验证域名(即使在初步成功后),因此只要您要验证该网址,就必须继续返回此回复。

  

验证持续多长时间?

     

Google会定期检查您的验证是否有效   适合您的验证方法(例如,通过检查   您网站上是否存在HTML标记。如果验证不能   更长时间的确认,您对该属性的权限将过期   经过一段宽限期。

Implement retry mechanism within your Cloud function

这与other answer you linked中解释的选项相同,IMO更简单。将currentRetryAttempt作为请求的一个参数,并在每次排队重试请求时递增此值,以便在超时时将其递归返回到同一函数。在排队新的重试请求之前,您需要针对currentRetryAttempt值检查maxRetriesAllowed

与前一个选项不同,它不会对您的Cloud功能的响应施加任何限制。

答案 1 :(得分:0)

我发布了有关如何将消息从项目A中的pubsub主题发送到项目B中的云功能的详细说明。其中包括推送端点配置,域验证和python代码示例。可以在以下stackoverflow帖子中找到它:

Google pubsub into HTTP triggered cloud function?