本頁說明如何將多個 Cloud Storage 物件組合成單一物件。組合要求會採用 1 到 32 個物件,並建立新的複合物件。複合物件是來源物件的串連,順序與要求中指定的順序相同。
除非您決定在組合處理期間刪除來源物件,否則來源物件不會受到影響。
臨時物件的費用注意事項
如果來源物件是暫時性的,請在組合物件時注意下列費用考量:
如果啟用虛刪除或物件版本管理功能,在組合完成後刪除來源物件,可能會導致來源物件遭到虛刪除或成為非目前版本,進而產生額外的儲存空間費用。
如要盡量減少臨時物件的費用,請在組合程序中使用
deleteSourceObjects選項,硬性刪除臨時物件。使用這個選項刪除的物件不會產生提前刪除費用。此外,使用這個選項刪除的物件不會透過虛刪除或物件版本管理功能保留,因為資料會保留在複合物件中。
必要的角色
如要取得組合物件所需的權限,請要求管理員授予您 bucket 的「Storage 物件使用者」(roles/storage.objectUser) IAM 角色。這個預先定義的角色具備撰寫物件所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
storage.objects.createstorage.objects.delete- 只有在您想將組合的物件命名為與值區中現有物件相同的名稱時,才需要這項權限。
storage.objects.getstorage.objects.list- 如果您想使用萬用字元組成具有相同前置字元的物件,而不必在 Google Cloud CLI 指令中個別列出每個物件,則需要此權限。
如要為撰寫的物件設定保留設定,您也需要 storage.objects.setRetention 權限。如要取得這項權限,請要求管理員授予您「Storage 物件管理員」(roles/storage.objectAdmin) 角色,而非「Storage 物件使用者」(roles/storage.objectUser) 角色。
您也可以透過其他預先定義的角色或自訂角色取得這些權限。
如要瞭解如何授予值區角色,請參閱「設定及管理值區的 IAM 政策」。
建立複合物件
指令列
使用 gcloud storage objects compose 指令:
gcloud storage objects compose \
gs://BUCKET_NAME/SOURCE_OBJECT_1 gs://BUCKET_NAME/SOURCE_OBJECT_2 \
gs://BUCKET_NAME/COMPOSITE_OBJECT_NAME其中:
BUCKET_NAME是包含來源物件的值區名稱。SOURCE_OBJECT_1和SOURCE_OBJECT_2是要在物件組合中使用的來源物件名稱。COMPOSITE_OBJECT_NAME是您要為物件組合結果指定的名稱。
如要在合成過程中刪除來源物件,請在先前的指令中加入 --delete-source-objects 標記。
用戶端程式庫
C++
詳情請參閱「Cloud Storage C++ API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
C#
詳情請參閱「Cloud Storage C# API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
Go
詳情請參閱「Cloud Storage Go API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
Java
詳情請參閱「Cloud Storage Java API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
Node.js
詳情請參閱「Cloud Storage Node.js API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
PHP
詳情請參閱「Cloud Storage PHP API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
Python
詳情請參閱「Cloud Storage Python API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
Ruby
詳情請參閱「Cloud Storage Ruby API 參考文件」。
如要向 Cloud Storage 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證作業」。
Rust
REST API
JSON API
建立包含下列資訊的 JSON 檔案:
{ "sourceObjects": [ { "name": "SOURCE_OBJECT_1" }, { "name": "SOURCE_OBJECT_2" } ], "destination": { "contentType": "COMPOSITE_OBJECT_CONTENT_TYPE" }, "deleteSourceObjects": DELETE_SOURCE_OBJECTS_BOOLEAN }
其中:
SOURCE_OBJECT_1和SOURCE_OBJECT_2是要在物件組合中使用的來源物件名稱。COMPOSITE_OBJECT_CONTENT_TYPE是產生的複合物件的 Content-Type。- 如要在組合處理程序中刪除來源物件,請將
DELETE_SOURCE_OBJECTS_BOOLEAN設為true;如要保留來源物件,請將DELETE_SOURCE_OBJECTS_BOOLEAN設為false。預設值為false。
使用
cURL透過POST物件要求呼叫 JSON API:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/COMPOSITE_OBJECT_NAME/compose"
其中:
JSON_FILE_NAME是您在上一個步驟中建立的檔案名稱。BUCKET_NAME是包含來源物件的值區名稱。COMPOSITE_OBJECT_NAME是您要為物件組合結果指定的名稱。
如果成功,回應會是結果複合物件的物件資源。
XML API
建立包含下列資訊的 XML 檔案:
<ComposeRequest> <Component> <Name>SOURCE_OBJECT_1</Name> </Component> <Component> <Name>SOURCE_OBJECT_2</Name> </Component> </ComposeRequest>
其中:
SOURCE_OBJECT_1和SOURCE_OBJECT_2是要在物件組合中使用的來源物件名稱。
使用
cURL透過包含compose查詢字串參數的PUT物件要求呼叫 XML API:curl -X PUT --data-binary @XML_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: COMPOSITE_OBJECT_CONTENT_TYPE" \ "https://storage.googleapis.com/BUCKET_NAME/COMPOSITE_OBJECT_NAME?compose"
其中:
XML_FILE_NAME是您在前一個步驟建立的檔案名稱。COMPOSITE_OBJECT_CONTENT_TYPE是產生的複合物件的 Content-Type。BUCKET_NAME是包含來源物件的值區名稱。COMPOSITE_OBJECT_NAME是您要為物件組合結果指定的名稱。
如果成功,系統會傳回空白的回應主體。