符合 ITAR 的位置端点

本页面介绍如何使用位置端点来访问 Cloud Storage。通过位置端点,您可以采用符合国际武器贸易条例 (ITAR) 的方式运行工作负载。

如需了解以符合 ITAR 的方式使用 Cloud Storage 时的限制,请参阅 ITAR 的限制和局限

概览

位置端点是请求端点,只有在受影响的资源存在于端点指定的位置时,才允许请求继续。例如,当您在删除存储桶请求中使用端点 https://us-central1-storage.googleapis.com 时,仅当存储桶位于 US-CENTRAL1 中时,请求才会继续。

与全球端点不同(全球端点可在不同于资源所在位置的其他位置处理请求),位置端点可保证您的请求仅在端点指定的位置(即资源所在的位置)进行处理。使用位置端点时,您可以确保静态数据和传输中的数据保留在管辖区内,以满足数据驻留要求。

使用位置端点可以保证:

  • 存储在 Cloud Storage 中的数据不会离开指定位置。

  • 从本地传输到 Google Cloud 时,您的数据会在端点指定的区域中实现 TLS 终结。

  • 在 Google Cloud 服务之间传输数据时,您的数据会保留在管辖区内。

使用位置端点时,您需承担以下责任:

  • 为了获得数据驻留保证,向位置端点发出的请求必须来自端点指定的同一位置。例如,如果您使用 Compute Engine 虚拟机通过 us-central1-storage.googleapis.com 端点向驻留在 US-CENTRAL1 的存储桶执行请求,则该虚拟机还必须驻留在 US-CENTRAL1 中。

  • 位置端点只能在执行受支持的操作时使用。 执行不受支持的操作会导致错误。

位置端点支持通过互连或 VPN 在本地到 Google Cloud 之间的传输中的流量,以及 Google Cloud 服务之间的传输中的流量(例如从 BigQuery 到 Cloud Storage)。不支持网络流量。

支持的操作

下表总结了可以和不可以使用位置端点执行的操作。一般来说,位置内操作可以通过位置端点执行,而跨位置操作则不能。

如果您尝试使用位置端点执行不支持的操作,Cloud Storage 将返回 400 HTTP 错误代码以及以下消息:“此端点未实现此操作。请使用全球端点。”

操作 更改对象数据 支持与位置端点搭配使用
对象组合 1
对象删除 1
对象获取 1
对象插入 1
对象列出 1
对象修补 1
对象复制 4
对象重写 4
存储桶插入 2
存储桶删除 3
存储桶获取 2
存储桶修补 2
存储桶更新 2
存储桶 getIamPolicy 2
存储桶 setIamPolicy 2
存储桶 testIamPermissions 2
存储桶 lockRetentionPolicy 2
存储桶 BucketAccessControls 2
存储桶 DefaultObjectAccessControls 2
存储桶 ObjectAccessControls 2
HMAC 密钥操作
服务账号操作
Pub/Sub 通知操作 因操作而异
对象更改通知操作 因操作而异
批量操作 因操作而异

1 如需使用位置端点执行此操作,包含受影响对象的存储桶必须存在于端点指定的位置。例如:对 us-central1-storage.googleapis.com 的对象删除请求只能用于删除位于 US-CENTRAL1 区域的存储桶中的对象。如果您尝试删除非 US-CENTRAL1 位置的对象,操作会返回 NOT_FOUND 错误。

2 如需使用位置端点执行此操作,存储桶必须位于端点指定的位置中。例如:对 us-central1-storage.googleapis.com 的存储桶创建请求只能用于在 US-CENTRAL1 区域创建存储桶。如果您尝试在 US-CENTRAL1 以外的位置创建存储桶,则操作会返回 INVALID_ARGUMENT 错误。

3 如需使用位置端点执行此操作,存储桶必须位于端点指定的位置。例如:对 us-central1-storage.googleapis.com 的存储桶删除请求只能用于删除 US-CENTRAL1 区域中的存储桶。如果您尝试删除非 US-CENTRAL1 位置中的存储桶,操作将返回 NOT_FOUND 错误。

4 如需使用位置端点执行此操作,来源存储桶和目标存储桶必须均存在于端点指定的位置。例如:如果两个存储桶位于同一位置,您可以使用位置端点将对象从一个存储桶复制到另一个存储桶。但是,如果存储桶位于不同的位置,则无法使用位置端点将对象从一个存储桶复制到另一个存储桶。如果来源或目标存储桶所在的位置与端点指定的位置不同,则操作会返回 NOT_FOUND 错误。

支持的区域

所有美国区域、US 多区域和 NAM4 预定义双区域均支持位置端点。如需详细了解可以指定哪些区域,请参阅存储桶位置

发出请求

控制台

请参阅 ITAR 的限制和局限,了解如何以符合 ITAR 的方式使用 Google Cloud 控制台执行操作。

命令行

如需配置 Google Cloud CLI 以与位置端点搭配使用,请执行以下操作:

  1. api_endpoint_overrides/storage 属性设置为您要使用的位置端点:

    gcloud config set api_endpoint_overrides/storage https://LOCATION-storage.googleapis.com/

设置此属性后,您可以照常使用 gcloud CLI 命令。

或者,您可以通过在每个命令中设置 CLOUDSDK_API_ENDPOINT_OVERRIDES_STORAGE 环境变量,将位置端点用于各个命令。例如:

CLOUDSDK_API_ENDPOINT_OVERRIDES_STORAGE=https://LOCATION-storage.googleapis.com/ gcloud ls gs://my-bucket

客户端库

Cloud Storage 客户端库会自动管理请求端点,但您可以手动设置位置端点。如需了解如何设置位置端点,请参阅使用请求端点的客户端库代码示例

REST API

JSON API

向位置端点发出请求时,请使用以下 URI:

  • 对于一般 JSON API 请求(不包括对象上传),请使用以下端点:

    https://LOCATION-storage.googleapis.com

    LOCATION 替换为受支持的存储桶位置。例如 us-central1

  • 对于 JSON API 对象上传,请使用以下端点:

    https://LOCATION-storage.googleapis.com/upload/storage/v1/b/BUCKET_NAME/o

    您需要进行如下替换:

    • LOCATION 替换为受支持的存储桶位置。例如 us-central1

    • BUCKET_NAME 替换为对象要上传到的存储桶的名称。例如 my-example-bucket

  • 对于 JSON API 对象下载,请使用以下端点:

    https://LOCATION-storage.googleapis.com/download/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME?alt=media

    您需要进行如下替换:

    • LOCATION 替换为受支持的存储桶位置。例如 us-central1

    • BUCKET_NAME 替换为包含要下载的对象的存储桶名称。例如 my-example-bucket

    • OBJECT_NAME 替换为您要下载的对象的名称。例如 waterfall.png

请注意 JSON API 端点仅支持 HTTPS 请求。

XML API

使用 XML API 向位置端点发出请求时,您可以使用虚拟托管样式端点或路径样式端点:

  • 虚拟托管样式端点:

    https://BUCKET_NAME.LOCATION-storage.googleapis.com
  • 路径样式端点:

    https://LOCATION-storage.googleapis.com/BUCKET_NAME

对于这两种端点类型,请在其中:

  • LOCATION 替换为受支持的存储桶位置。例如 us-central1

  • BUCKET_NAME 替换为有效的存储桶名称。例如 my-example-bucket

XML API 端点支持安全套接字层 (SSL) 加密,这意味着您可以使用 HTTP 或 HTTPS。建议使用 HTTPS(尤其是在使用 OAuth 2.0 向 Cloud Storage 进行身份验证时)。

格式正确的请求

要确保您的请求在 Cloud Storage 工具之间兼容,请执行以下操作:

已知限制条件

不支持 mTLS 端点