本页面介绍了如何在Google Cloud中使用区域级 API 端点(区域级端点),这些端点适用于 me-central2 (KSA) 区域。
区域端点通过在与客户端相同的Google Cloud 区域中路由和传送流量,提供传输中数据驻留功能。当客户端使用区域级端点调用服务时,客户端的 TLS 会话会在端点名称中指示的区域中终止。因此,区域端点应仅用于在单个区域或管辖区之外没有依赖项的工作负载。
您可以通过互联网连接到公共区域端点。对于互联网入站流量,这些端点会使用尽力而为路由,将传输中的流量保留在区域(或管辖区)本地,因为它们不使用全球 Google Front End (GFE)。而是解析为仅在最靠近所选区域的对等互连点上通告的 IP 地址。
例如,在沙特阿拉伯工作的数据工程师可以使用区域服务端点 bigquery.me-central2.rep.googleapis.com,将其客户端配置为使用 me-central2 区域(达曼)中的 BigQuery。流量使用标准层级进行路由,来自其客户端的 TLS 会话将在 me-central2 中终止。
在这种情况下,与区域服务端点对应的公共 VIP 将源自 Google 在该区域的对等互连点上公布的 IP 前缀。因此,如果用户连接到沙特阿拉伯的本地 ISP,则流量可以在其管辖范围内路由。
区域端点格式
单区域端点采用以下格式:
SERVICE_NAME.REGION.rep.googleapis.com
占位值定义如下:
- SERVICE_NAME:受支持的服务端点名称,例如
bigquery。 - REGION:受支持的 Google Cloud 区域,例如
me-central2。
以下示例是 BigQuery 的完整区域端点:
bigquery.me-central2.rep.googleapis.com
支持的区域和服务
区域端点在以下区域中受到支持:
| 区域名称 | 位置 |
|---|---|
me-central2 |
沙特阿拉伯王国 (KSA) 达曼 |
以下服务支持区域端点:
| 服务名称 | 区域端点 |
|---|---|
| App Hub |
apphub.me-central2.rep.googleapis.com
|
| Artifact Registry |
artifactregistry.me-central2.rep.googleapis.com
|
| BigQuery |
bigquery.me-central2.rep.googleapis.com
|
| Bigtable |
bigtable.me-central2.rep.googleapis.com
|
| Cloud Key Management Service (Cloud KMS) |
cloudkms.me-central2.rep.googleapis.com
|
| Cloud Logging |
logging.me-central2.rep.googleapis.com
|
| Spanner |
spanner.me-central2.rep.googleapis.com
|
| Cloud Storage |
storage.me-central2.rep.googleapis.com
|
| Dataflow |
dataflow.me-central2.rep.googleapis.com
|
| Managed Service for Apache Spark |
dataproc.me-central2.rep.googleapis.com
|
| Pub/Sub |
pubsub.me-central2.rep.googleapis.com
|
将客户端配置为从公共互联网访问区域端点
如需通过公共互联网使用区域端点,您必须先配置客户端(例如 Google Cloud CLI 或 Google Cloud SDK 客户端库),以连接到特定区域端点。
配置 gcloud CLI
默认情况下,gcloud CLI 使用全局服务端点,例如 bigquery.googleapis.com。如需使用区域级服务端点,您必须完成以下步骤,将 gcloud CLI 配置为使用这些端点。
如果尚未启用受支持的服务,请使用以下命令启用:
gcloud services enable SERVICE_NAME
将 SERVICE_NAME 替换为您要使用的受支持服务的名称。例如:
gcloud services enable cloudkms
如需使用区域级服务端点,您必须使用
gcloud config set api_endpoint_overrides命令配置 gcloud CLI:gcloud config set api_endpoint_overrides/SERVICE_NAME REGIONAL_API_URL
将以下值替换为您自己的值:
- SERVICE_NAME:您要使用的受支持服务的名称。
例如
cloudkms REGIONAL_API_URL:特定端点的网址。例如:
https://SERVICE_NAME.REGION_NAME.rep.googleapis.com/SERVICE_NAME/API_VERSION
将以下值替换为您自己的值:
- REGION_NAME:所需 Google Cloud 区域的名称。例如:
me-central2 - API_VERSION:您要使用的服务的 API 版本。
例如:
v1。注意:某些服务可能不需要此参数。
以下是 REGIONAL_API_URL 值示例:
https://cloudkms.me-central2.rep.googleapis.com/cloudkms/v1
- REGION_NAME:所需 Google Cloud 区域的名称。例如:
综上所述,以下是 Cloud KMS 的
gcloud config set api_endpoint_overrides命令示例:gcloud config set api_endpoint_overrides/cloudkms https://cloudkms.me-central2.rep.googleapis.com/cloudkms/v1
- SERVICE_NAME:您要使用的受支持服务的名称。
例如
现在,gcloud CLI 已配置为使用区域级服务端点,未来的命令将使用该端点作为默认端点,而不是全球服务端点。
配置 Google Cloud SDK 客户端库
默认情况下,Google Cloud SDK 客户端库使用全球服务端点,例如 pubsub.googleapis.com。如需使用区域级服务端点,您必须配置 Google Cloud SDK 客户端库以使用这些端点。
Python
在 google-api-core 软件包的 ClientOptions 类中设置 api_endpoint 参数:
from google.api_core.client_options import ClientOptions options = ClientOptions(api_endpoint = "pubsub.me-central2.rep.googleapis.com") client = pubsub_v1.PublisherClient(client_options=options) // Alternatively client = pubsub_v1.PublisherClient(client_options={"api_endpoint": "pubsub.me-central2.rep.googleapis.com")
Java
使用 com.google.cloud.vision 软件包中 ImageAnnotatorSettings 类的 newBuilder 方法:
ImageAnnotatorSettings settings = ImageAnnotatorSettings.newBuilder() .setEndpoint("pubsub.me-central2.rep.googleapis.com") .build(); ImageAnnotatorClient client = ImageAnnotatorClient.create(settings);
Go
使用 api 软件包的 ClientOptions 软件包中的 WithEndpoint 函数:
client, err := pubsub.NewClient(ctx, projID, option.WithEndpoint("pubsub.me-central2.rep.googleapis.com"), // Override endpoint
.NET
在当前使用的库的 Google.Cloud 软件包中的客户端 ClientBuilder 类中设置 Endpoint 属性:
string region = "me-central2"; var client = new DatasetServiceClientBuilder { Endpoint = $"pubsub.{region}.rep.googleapis.com" }.Build();
限制全球 API 端点用量
为了帮助强制使用区域端点,请使用 constraints/gcp.restrictEndpointUsage 组织政策限制条件来阻止对全球 API 端点的请求。如需了解详情,请参阅限制端点用量。