本頁說明如何使用區域端點存取 Cloud Storage。使用位置端點時,您可以確保靜態資料保留在管轄範圍內,以符合資料落地規定。
總覽
位置端點是要求端點,只有在受影響的資源位於端點指定的位置時,才會允許要求繼續執行。舉例來說,在刪除值區要求中使用端點 https://us-central1-storage.googleapis.com
時,只有在值區位於 US-CENTRAL1
時,要求才會繼續。
與全域端點不同,位置端點可確保要求只會在端點指定的位置 (即資源所在位置) 處理,全域端點則可能在資源所在位置以外的位置處理要求。
使用位置端點可確保:
儲存在 Cloud Storage 中的資料不會離開指定位置。
從內部部署環境傳輸至 Google Cloud時,系統會在端點指定的區域終止 TLS。
使用位置端點時,您必須承擔下列責任:
如要取得資料落地保證,向位置端點提出的要求必須來自端點指定的相同位置。舉例來說,如果您使用 Compute Engine 虛擬機器,透過
us-central1-storage.googleapis.com
端點向位於US-CENTRAL1
的 bucket 提出要求,虛擬機器也必須位於US-CENTRAL1
。只有在執行支援的作業時,才能使用位置端點。 執行不支援的作業會導致錯誤。
位置端點支援內部部署系統與 Google Cloud 之間的流量 (透過 Interconnect 或 VPN),以及 Google Cloud 服務之間的流量 (例如從 BigQuery 到 Cloud Storage)。系統不支援網際網路流量。
支援的作業
下表概略說明可透過地區端點執行的作業,以及無法執行的作業。一般來說,位置端點可執行位置內作業,但無法執行跨位置作業。
如果您嘗試使用位置端點執行不支援的操作,Cloud Storage 會傳回 400 HTTP 錯誤代碼,並顯示以下訊息:「This endpoint does not implement this operation. 請使用全域端點。」
作業 | 修改物件資料 | 支援搭配位置端點使用 |
---|---|---|
物件組成 | 是 | 有1 |
刪除物件 | 否 | 有1 |
物件 | 是 | 有1 |
物件插入 | 是 | 有1 |
物件清單 | 否 | 有1 |
物件修補程式 | 否 | 有1 |
物件副本 | 是 | 是4 |
物件重寫 | 是 | 是4 |
buckets insert | 否 | 是2 |
buckets delete | 否 | 是3 |
buckets get | 否 | 是2 |
buckets patch | 否 | 是2 |
更新值區 | 否 | 是2 |
buckets getIamPolicy | 否 | 是2 |
buckets setIamPolicy | 否 | 是2 |
buckets testIamPermissions | 否 | 是2 |
buckets lockRetentionPolicy | 否 | 是2 |
buckets BucketAccessControls | 否 | 是2 |
buckets DefaultObjectAccessControls | 否 | 是2 |
buckets ObjectAccessControls | 否 | 是2 |
HMAC 金鑰作業 | 否 | 否 |
服務帳戶作業 | 否 | 否 |
Pub/Sub 通知作業 | 因作業而異 | 否 |
物件變更通知作業 | 因作業而異 | 否 |
批次作業 | 因作業而異 | 否 |
1 如要使用地區端點執行這項作業,含有受影響物件的 bucket 必須位於端點指定的地區。舉例來說,傳送至 us-central1-storage.googleapis.com
的物件刪除要求只能用於刪除 US-CENTRAL1
地區值區中的物件。如果您嘗試在非 US-CENTRAL1
的位置刪除物件,作業會傳回 NOT_FOUND
錯誤。
2 如要使用地區端點執行這項作業,儲存空間必須位於端點指定的地區。舉例來說,向 us-central1-storage.googleapis.com
提出的值區建立要求只能用於在 US-CENTRAL1
地區建立值區。如果您嘗試在非 US-CENTRAL1
的位置建立 bucket,作業會傳回 INVALID_ARGUMENT
錯誤。
3 如要使用地區端點執行這項作業,儲存空間必須位於端點指定的地區。舉例來說,對 us-central1-storage.googleapis.com
提出的 bucket 刪除要求只能用於刪除 US-CENTRAL1
地區中的 bucket。如果嘗試刪除 US-CENTRAL1
以外位置的值區,作業會傳回 NOT_FOUND
錯誤。
4 如要使用位置端點執行這項作業,來源和目的地 bucket 都必須存在於端點指定的位置。舉例來說,如果兩個值區位於相同位置,您可以使用位置端點將物件從一個值區複製到另一個值區。不過,如果值區位於不同位置,您就無法使用位置端點將物件從一個值區複製到另一個值區。如果來源或目的地 bucket 位於端點指定位置以外的位置,作業會傳回 NOT_FOUND
錯誤。
支援的地區
所有美國區域、US
多區域和 NAM4
預先定義的雙區域,都支援位置端點。如要進一步瞭解可指定的區域,請參閱「值區位置」。
發出要求
控制台
如要瞭解如何使用 Google Cloud 控制台執行 ITAR 法規遵循作業,請參閱「ITAR 的限制」一文。
指令列
如要設定 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 驗證時,更應該使用 HTTPS。
正確設定要求格式
為確保要求與 Cloud Storage 工具相容,請採取下列做法:
已知限制
不支援 mTLS 端點。
限制全域 API 端點用量
如要強制使用特定位置的端點,可以運用constraints/gcp.restrictEndpointUsage
機構政策限制,封鎖對全域 API 端點的要求。詳情請參閱「限制端點用量」說明文件。