在服务之间通信

区域 ID

REGION_ID 是 Google 根据您在创建应用时选择的区域分配的缩写代码。此代码不对应于国家/地区或省,尽管某些区域 ID 可能类似于常用国家/地区代码和省代码。对于 2020 年 2 月以后创建的应用,REGION_ID.r 包含在 App Engine 网址中。对于在此日期之前创建的现有应用,网址中的区域 ID 是可选的。

详细了解区域 ID

您可以使用各种方法在 App Engine 服务之间或与其他服务(包括 Google Cloud 服务和外部应用)进行通信。

如需与您的 App Engine 服务进行通信,最简单的方法是发送定向 HTTP 请求,在网址中包含资源的名称或 ID。例如,除了相应的 Google Cloud 项目 ID 外,您还可以包含要定位的服务或版本的 ID。


https://VERSION-dot-SERVICE-dot-PROJECT_ID.REGION_ID.r.appspot.com

请注意,VERSION-dot-SERVICE-dot-PROJECT_ID 的总长度(其中 VERSION 是版本名称,SERVICE 是服务名称,PROJECT_ID 是项目 ID)不得超过 63 个字符,且首尾不能使用连字符。如果组合长度超过 63 个字符,您可能会看到错误 DNS address could not be found.

详细了解 App Engine 中的请求:

您的 App Engine 服务还可以使用 Pub/Sub 通信,以便在进程(包括 App Engine)之间提供可靠的异步多对多消息传递。这些进程可以是您的应用、服务乃至外部应用的单个实例。

如需在数据库与 App Engine 应用或某个其他外部应用之间共享数据,请参阅了解数据和文件存储

如果您使用旧版捆绑服务,则还可以使用 URL Fetch API 在服务之间以及从服务向外部端点传递请求。

此外,在标准环境中,位于同一 Google Cloud 项目中的服务还可以使用某个 App Engine API 来执行以下任务:

  • 共享一个 memcache 实例。
  • 通过任务队列在服务之间分配工作,以便开展协作。

私密通信

同一项目中的服务之间的通信

您可以允许 App Engine 标准服务与同一项目中的其他 App Engine 服务进行通信,而无需将目标服务公开给公共互联网。

如需允许同一项目中的服务之间的通信,请执行以下操作:

  1. 通过将目标服务的入站流量设置调整为仅允许“内部”流量来配置入站流量控制。

    “内部”设置仅允许来自项目的 VPC 网络的请求。这包括通过连接器路由出站流量时来自同一网络中的客户端应用的 App Engine 资源。 来自互联网或其他 Google Cloud 项目(包括其他 App Engine 服务)的所有其他流量都会被屏蔽。

  2. 通过无服务器 VPC 访问通道连接器路由流量:

    1. 对于每个将专用流量发送到其他应用端点的 App Engine 版本,请将该版本连接到属于 Google Cloud 项目自身网络之一的无服务器 VPC 访问通道连接器,而不是连接到共享 VPC 网络。

    2. 确保为无服务器 VPC 访问通道连接器使用的子网启用专用 Google 访问通道。

    3. 配置以下任一项:

      • 客户端请求通过添加目标主机名的 DNS 条目来使用 private.googleapis.com IP 范围。按照 DNS 配置添加 DNS 主机名,但请务必将专用区域配置为针对 appspot.com,而不是 googleapis.com。此外,请确保将流量定向到目标应用的 appspot.com 地址,而不是自定义网域。您只能使用此 appspot.com 网域在 private.googleapis.com IP 范围访问您的应用。

      • 客户端应用通过无服务器 VPC 访问通道连接器发送 all-traffic,而不是将请求配置为使用 private.googleapis.com IP 范围。

不同项目中的服务之间的通信

如果项目中运行的应用属于共享 VPC 网络(配置为调用在共享 VPC 网络的宿主项目中运行的应用),则您可以在 Google Cloud 项目之间建立专用访问通道。

如需使用此模式,请按照前面在同一项目中的服务之间进行通信的步骤执行操作。在标准环境中,将每个客户端版本连接到共享 VPC 网络中的无服务器 VPC 访问通道连接器。

在 App Engine 中,通过内部访问权限在项目之间进行通信的其他方法不可行。

预留的网址路径

无法使用以下网址路径:

  • /eventlog 结尾的路径
  • /_ah/ 开头的路径
  • 某些以 z 结尾的路径