Google Pub / Sub推送订阅到受IAP保护的App Engine

时间:2017-10-13 12:25:23

标签: python google-app-engine push publish-subscribe google-iap

我正在测试一个非常基本的Pub / Sub订阅。我将推送端点设置为我通过App Engine中的Python Flex服务部署的应用程序。该服务位于启用了Identity-Aware Proxy的项目中。 IAP配置为允许通过我们的域进行身份验证的用户。

我没有看到我的应用正在处理任何推送请求。

我关闭了IAP保护,然后我看到请求已处理完毕。我把它重新打开,它们不再被处理了。

在尝试运行Cron服务时,IAP遇到了类似的问题;在同一项目中部署新的测试应用程序后,该问题自行解决。

有没有人通过IAP配置推送订阅成功?我还尝试在IAP访问列表上放置不同的服务帐户,但没有一个工作。

2 个答案:

答案 0 :(得分:1)

我不知道如何获得Pub / Sub推送订阅+ Flex + IAP工作。我想知道......如果订阅者使用标准版,它可能

其他一些可能的解决方法: - 切换到Pull用户。 - 设置云功能功能作为您的发布/订阅用户 - https://cloud.google.com/functions/docs/writing/background - 然后在该功能中将请求传递到GAE应用,使用https://cloud.google.com/iap/docs/authentication-howto进行身份验证作为服务帐户。< / p>

对不起,我希望我能给你一个更好的答案,但是AFAIK这些是今天有效的选择。    - 马修,IAP工程负责人

答案 1 :(得分:1)

我遇到了一个非常相似的问题-项目A中的GAE 2nd G标准应用程序,该应用程序在IAP下进行连接,无法接收来自项目B的推送发布/订阅消息。

我的解决方法是:

  1. 在项目A中设置云功能(触发HTTP);
  2. 设置项目B发布/订阅主题的订阅,以将消息推送到Cloud Function端点上方;
  3. 上面的Cloud Function就像一个代理进行过滤(根据我的情况ymmv的需要)并将http请求中的Pub / Sub消息转发到GAE应用程序;
  4. 由于Cloud Function与GAE应用程序位于同一项目中,因此仅需要为上述http请求添加IAP身份验证(获取从特定SA分配的令牌)。
  5. 在项目B IAM中应该有一个项目A的SA设置,它可能至少具有发布/订阅订户和发布/订阅查看器角色。

希望这是您的情况的选择。