入站流量设置

区域 ID

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

详细了解区域 ID

本部分介绍如何使用入站流量设置来限制对 App Engine 应用的网络访问。在网络级层,默认情况下,互联网上的任何资源都能够访问 App Engine 应用的 appspot 网址或者在 App Engine 中设置的自定义网域。例如,appspot.com 网址可以采用以下格式:SERVICE_ID.PROJECT_ID.REGION_ID.r.appspot.com

您可以通过为入站流量指定不同的设置来更改此默认设置。所有入站流量路径(包括默认 appspot.com 网址)都受入站流量设置的约束。入站流量是在服务级层设置的。

可用的入站流量设置

您可以使用以下设置:

设置 说明
内部 限制性最高。允许来自附加到项目的 VPC 网络的资源的请求,例如:
来自这些来源的请求会一直在 Google 网络中,即使它们通过 appspot.com 网址访问您的服务也是如此。来自其他来源(包括互联网)的请求无法通过 appspot.com 网址或自定义网域访问您的服务。不支持多租户,即同一项目中的多个信任网域。
内部和 Cloud Load Balancing 允许来自以下资源的请求:
  • 限制性较高的内部设置允许的资源
  • 外部应用负载均衡器
使用内部和 Cloud Load Balancing 设置可以接受来自外部应用负载均衡器的请求,但不接受直接来自互联网的请求。对 appspot.com 网址的请求会绕过外部应用负载均衡器,因此此设置会阻止外部请求到达 appspot.com 网址。
全部 限制性最低允许所有请求,包括直接从互联网发送到 appspot.com 网址的请求。

访问内部服务

需要注意以下几点:

  • 对于来自共享 VPC 的请求,仅当 App Engine 应用部署在共享 VPC 宿主项目中时,流量才会被视为内部流量。如果 App Engine 应用部署在共享 VPC 服务项目中,则只有来自应用自身项目拥有的网络的流量才是内部流量。所有其他流量(包括来自其他共享 VPC 的流量)均为外部流量。

  • 访问内部服务时,请像平常一样使用它们的公开网址(即默认 appspot.com 网址或 App Engine 中设置的自定义网域)来调用它们。

  • 对于来自 Compute Engine 虚拟机实例或在同一项目内的 VPC 网络中运行的其他资源的请求,无需进一步设置。

  • 来自同一项目中 VPC 网络内资源的请求将归类为内部请求,即使这些资源具有公共 IP 地址也是如此。

  • 来自通过 Cloud VPN 连接到 VPC 网络的本地资源的请求会被视为 internal

  • 对于来自其他 App Engine 服务或来自同一项目中的 Cloud Run 或 Cloud Functions 的请求,请将服务或函数连接到 VPC 网络,并通过连接器路由所有出站流量,具体请参阅连接到共享 VPC 网络

查看入站流量设置

控制台

  1. 前往“App Engine 服务”页面。

    转到“服务”页面

  2. 找到入站流量列。对于每项服务,此列中的值会将入站流量设置显示为以下项之一:全部(默认)、内部 + 负载均衡内部

gcloud

如需使用 gcloud CLI 查看服务的入站流量设置,请运行以下命令:

gcloud app services describe SERVICE

SERVICE 替换为服务的名称。

例如,如需查看默认服务运行的入站流量设置和其他信息,请运行以下命令:

gcloud app services describe default

修改入站流量设置

控制台

  1. 前往“App Engine 服务”页面。

    转到“服务”页面

  2. 选择您要修改的服务。

  3. 点击修改入站流量设置

  4. 从菜单中选择所需的入站流量设置,然后点击保存

gcloud

如需使用 gcloud CLI 更新服务的入站流量设置,请运行以下命令:

gcloud app services update SERVICE --ingress=INGRESS

替换:

  • SERVICE:您的服务的名称。
  • INGRESS:要应用的入站流量控制。allinternal-onlyinternal-and-cloud-load-balancing 之一。

例如:

  • 如需更新 App Engine 应用的默认服务,以仅接受来自 Cloud Load Balancing 和来自同一项目的 VPC 网络的流量:

    gcloud app services update default --ingress=internal-and-cloud-load-balancing
  • 如需更新名为“internal-requests”的服务以仅接受来自同一项目中的 VPC 网络的流量:

    gcloud app services update internal-requests --ingress=internal-only

出站流量设置

如果您使用无服务器 VPC 访问通道,则可以为 App Engine 服务指定出站流量设置。

默认情况下,只有对内部 IP 地址和内部 DNS 名称的请求会通过无服务器 VPC 访问通道连接器进行路由。您可以在 app.yaml 文件中为您的服务指定出站流量设置。

出站流量设置与 URL Fetch 服务不兼容。 如果使用 urlfetch 库,则系统会忽略出站流量设置,并且请求不会通过无服务器 VPC 访问通道连接器进行路由。

如需配置 App Engine 服务的出站流量行为,请执行以下操作:

  1. egress_setting 特性添加到服务的 app.yaml 文件的 vpc_access_connector 字段中:

    vpc_access_connector:
      name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
      egress_setting: EGRESS_SETTING
    

    您需要将其中的:

    • PROJECT_ID 替换为您的 Google Cloud 项目 ID
    • REGION 替换为连接器所在的区域
    • CONNECTOR_NAME 替换为连接器的名称
    • EGRESS_SETTING 替换为以下项之一:
      • private-ranges-only 默认值。只有发送到 RFC 1918RFC 6598 IP 地址范围或内部 DNS 名称的请求才会路由到您的 VPC 网络。其他的所有请求都会直接路由到互联网。
      • all-traffic 来自您的服务的所有出站请求都路由到您的 VPC 网络。然后,请求受到 VPC 网络的防火墙、DNS 和路由规则的约束。 请注意,将所有出站请求路由到您的 VPC 网络会增加无服务器 VPC 访问通道连接器处理的出站流量,并可能产生费用
  2. 部署该服务:

    gcloud app deploy