本页面介绍如何使用位置端点来访问 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 以与位置端点搭配使用,请执行以下操作:
将
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 工具之间兼容,请执行以下操作:
确保对请求 URI 的对象名称或查询字符串中显示的特殊字符进行正确编码。
已知限制条件
不支持 mTLS 端点。