本頁說明如何將 Cloud Storage 物件組合成單一物件。組合要求會採用 1 到 32 個物件,並建立新的複合物件。複合物件是來源物件的串連,順序與要求中指定的順序相同。
撰寫物件時,請注意下列事項:
- 來源物件不會受到組合處理的影響。如果這些檔案只是暫時使用,請在完成合成後刪除。
- 由於其他儲存空間級別會產生提前刪除費用,因此臨時物件一律應使用 Standard Storage。
- 如果值區已啟用資料保護功能,與撰寫作業相關的頻繁刪除作業可能會大幅增加儲存空間費用。如果 bucket 的組合作業率偏高,建議停用 bucket 的虛刪除功能。使用物件版本管理功能時,請指定要刪除的來源物件版本,永久刪除這些版本,避免成為非現行物件。
必要的角色
如要取得撰寫物件所需的權限,請要求管理員授予您值區的「儲存空間物件使用者」身分與存取權管理 (IAM) 角色 (roles/storage.objectUser
)。這個預先定義的角色具備撰寫物件所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
storage.objects.create
storage.objects.delete
- 只有在您想將組合的物件命名為與值區中現有物件相同的名稱時,才需要這項權限。
storage.objects.get
storage.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
是您要為物件組合結果指定的名稱。
用戶端程式庫
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,請設定應用程式預設憑證。 詳情請參閱「設定用戶端程式庫的驗證機制」。
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization
標頭產生存取權杖。建立包含下列資訊的 JSON 檔案:
{ "sourceObjects": [ { "name": "SOURCE_OBJECT_1" }, { "name": "SOURCE_OBJECT_2" } ], "destination": { "contentType": "COMPOSITE_OBJECT_CONTENT_TYPE" } }
其中:
使用
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
安裝並初始化 gcloud CLI,以便為
Authorization
標頭產生存取權杖。建立包含下列資訊的 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
是您要為物件組合結果指定的名稱。
如果成功,系統會傳回空白的回應主體。