我们如何使用与 public 互联网隔离的内部通信来实现应用程序引擎服务之间的服务通信?

How can we implement app engine service to service communication using internal communication, isolated from public internet?

我有 App Engine 两项服务,我想仅使用内部通信从另一项服务调用一项服务。我该怎么做呢? 例如,abcproject.service1.appspot.com 调用 abcproject.service2.appspot.com

正确的问题:内部是什么意思?

首先,内部IP是不可能的,因为你没有IP,但是你有URL。该服务是无服务器的,它可以自动扩展和缩减,它位于负载均衡器(GFE - Google 前端)的后面,用于验证和路由请求。它与来自您的项目或其他项目的 all/many App Engine 服务的组件相同。 它也是保护 Google 服务(Youtube、Playstore、Gmail 等)的同一层

所以,你们能不能有内网的网址交流?这里的内部是模糊的:内部是什么?

  • 你的项目?不,因为 App Engine 实例不在您的 project/VPC 中,而是在您无法管理的 Google 托管世界中。
  • 去Google云端?是的,请求停留在 Google 云网络中,永远不会到达 public 互联网。请求是 always authenticated, sometime encrypted

后面的问题是:为什么要只使用内部IP?我想是为了安全。因此,您可以使用 IAP 让 GFE 在将请求转发到 App Engine 之前检查请求者的身份验证和 IAM 授权。这样,只有经过身份验证和授权的流量才能到达该服务。

说到底是不是想要达到目的呢?

This is Google's documentation on communicating between services. According to the documentation, the simplest thing to do is to send requests to the http of the target service. If you want to ensure only your service (your app) can call the other service, see the documentation on - Setting Up Authentication for Server to Server Production Applications.