通过公共端点访问区域性 Google API

您可以通过互联网公开访问区域级和多区域级端点,也可以从 Virtual Private Cloud 内部通过专用连接访问这些端点。本文档介绍了如何公开访问端点。

当您通过公共互联网访问区域级端点时,流量会通过 Google Cloud 标准层级网络进行路由。连接(包括 TLS 终结)在目标区域内处理。

配置对 API 的公共互联网访问

如需配置对区域 API 端点的公共互联网访问权限,请按以下步骤操作。

角色

如需获得创建区域级端点所需的权限,请让管理员在 VPC 网络上授予您以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

准备工作

  1. 安装 Google Cloud CLI,然后 使用联合身份登录 gcloud CLI。 登录后,运行以下命令来初始化 Google Cloud CLI:

    $ gcloud init

  2. 启用 Compute Engine、Network Connectivity Center 和 Cloud DNS API。

    启用 API 所需的角色

    如需启用 API,您需要拥有 serviceusage.services.enable 权限。如果您创建了项目,则可能已经通过 Owner 角色 (roles/owner) 获得了此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色

    启用 API

  3. 此外,请为您想通过端点访问的目标服务启用 API。例如,如果您想访问 spanner.me-central2.rep.googleapis.com,请启用 Cloud Spanner API。

  4. 确保出站流量防火墙规则允许流量流向该端点。VPC 网络的默认防火墙配置允许此流量,因为它包含隐含的允许出站流量规则。确认您未创建优先级更高的出站流量规则来阻止流量。

确定端点

确定工作负载所需的服务以及具体区域或多区域。

  • 区域端点采用以下格式: SERVICE.REGION.rep.googleapis.com

  • 多区域端点采用以下格式: SERVICE.MULTI_REGION.rep.googleapis.com

修改 DNS 配置

如果您的环境使用专用 DNS 区域替换 googleapis.com 的公共 DNS(这在混合配置中很常见),请执行以下步骤:

配置 Google Cloud CLI

如需替换特定服务的默认 API 端点,请使用 Google Cloud CLI。以下示例使用 gcloud config set 命令在 us-central1 中为 Cloud Storage 设置替换项,并在 europe-west1 中为 Compute Engine 设置替换项。

# Set an override for Cloud Storage in us-central1.

gcloud config set api_endpoint_overrides/storage https://storage.us-central1.rep.googleapis.com/

# Set an override for Compute Engine in europe-west1.

gcloud config set api_endpoint_overrides/compute https://compute.europe-west1.rep.googleapis.com/compute/v1/

设置替换项后,相应服务的 gcloud CLI 命令将使用区域级端点。如需恢复为使用默认的全球端点,请使用 gcloud config unset 命令:

gcloud config unset api_endpoint_overrides/SERVICE

更新客户端 SDK

大多数 Google Cloud 客户端库都允许您在客户端初始化期间指定自定义端点。

Python

client_optionsapi_endpoint 搭配使用。

from google.cloud import SERVICE
from google.api_core.client_options import ClientOptions

options = ClientOptions(api_endpoint='https://SERVICE.REGION.rep.googleapis.com')
SERVICE_client = SERVICE.Client(client_options=options, project='PROJECT_ID')
# ... use SERVICE_client as usual

替换以下内容:

  • SERVICE:服务的名称
  • REGION:端点所在的区域
  • PROJECT_ID:您的 Google Cloud项目的 ID

Go

在创建客户端期间使用 option.WithEndpoint

client, err := SERVICE.NewClient(ctx, projID, 
option.WithEndpoint("https://SERVICE-my-endpoint.REGION.rep.googleapis.com"), // Override endpoint

替换以下内容:

  • SERVICE:服务的名称
  • REGION:端点所在的区域

.NET

在客户端构建器中配置 Endpoint

Java

在服务设置构建器上使用 setEndpoint

以下示例使用 Java 连接到 Cloud Vision API 的端点。

ImageAnnotatorSettings settings = ImageAnnotatorSettings.newBuilder()
.setEndpoint("https://vision.REGION.rep.googleapis.com")
.build();
ImageAnnotatorClient client = ImageAnnotatorClient.create(settings);

参考文档

后续步骤