本文說明如何建立、列出、取得、更新及刪除代管資料夾。
您可以透過代管資料夾,控管 Cloud Storage bucket 中物件群組的存取權,方法是選擇性地為物件名稱路徑中具有共同前置字串的物件設定 IAM 政策。這種做法有助於滿足資料安全性和法規遵循要求。
代管資料夾也可用來啟用 Rapid Cache 快取,依物件名稱前置字元選擇性擷取寫入的資料。詳情請參閱「寫入時擷取」。
事前準備
如要建立及管理代管資料夾,您必須先啟用統一 bucket 層級存取權,並取得必要的 IAM 角色。
啟用統一值區層級存取權
如果尚未啟用統一 bucket 層級存取權,請先完成這項操作。
取得必要角色
如要取得建立及管理代管資料夾所需的權限,請要求管理員授予您 bucket 的「Storage 資料夾管理員 」(roles/storage.folderAdmin) IAM 角色。
這個預先定義的角色具備建立及管理代管資料夾所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
您必須具備下列權限,才能建立及管理代管資料夾:
-
如要建立代管資料夾:
storage.managedFolders.create -
如要驗證新建立的代管資料夾,請列出這些資料夾:
storage.objects.list -
如要列出代管資料夾,請執行下列操作:
storage.managedFolders.list -
如要取得代管資料夾:
storage.managedFolders.get -
如要移動代管資料夾,請按照下列步驟操作:
-
storage.managedFolders.delete(在來源 bucket) -
storage.managedFolders.create(在目的地 bucket 中)
-
-
如要更新代管資料夾:
storage.managedFolders.update -
如要刪除代管資料夾,請按照下列步驟操作:
storage.managedFolders.delete
如要瞭解如何授予 bucket 角色,請參閱「在 bucket 上設定及管理 IAM 政策」。
建立代管資料夾
控制台
使用 Google Cloud 控制台時,您可以啟用資料夾或模擬資料夾的管理功能,建立代管資料夾。下列步驟說明如何建立資料夾或模擬資料夾,然後啟用資料夾管理功能:
- 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。
在 bucket 清單中,按一下要建立代管資料夾的 bucket 名稱。
在「Bucket details」(值區詳細資料) 頁面中,按一下「Create folder」(建立資料夾) 建立新資料夾。如果要轉換為代管資料夾的資料夾已存在,請跳至說明如何存取「更多選項」 選單的步驟。
在「Name」(名稱) 欄位中,輸入資料夾名稱。如需命名注意事項,請參閱「受管理資料夾名稱」。
點選「建立」。
新建立的資料夾會顯示在「資料夾瀏覽器」窗格中。
在「Folder browser」(資料夾瀏覽器) 窗格中,找出要轉換為代管資料夾的資料夾,點選旁邊的「More options」(更多選項) 選單,然後按一下「Edit access」(編輯權限)。
系統隨即會顯示「要啟用資料夾管理機制嗎?」對話方塊。
按一下「啟用」。
資料夾會轉換為代管資料夾。系統會顯示「Permissions for
MANAGED_FOLDER_NAME」( 的權限) 窗格 ,依 主體和角色列出資料夾的 IAM 政策。如要建立新的 IAM 政策,請參閱「設定代管資料夾的 IAM 政策」。
指令列
如要建立代管資料夾,請執行 gcloud storage managed-folders create 指令:
gcloud storage managed-folders create gs://BUCKET_NAME/MANAGED_FOLDER_NAME
其中:
BUCKET_NAME是要建立受管理資料夾的 bucket 名稱。例如:my-bucket。MANAGED_FOLDER_NAME是要建立的代管資料夾名稱。例如:my-managed-folder/。
如要確認代管資料夾已建立,請執行 gcloud storage managed-folders describe 指令:
gcloud storage managed-folders describe gs://BUCKET_NAME/MANAGED_FOLDER_NAME
其中:
BUCKET_NAME是您建立代管資料夾的 bucket 名稱。MANAGED_FOLDER_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 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Rust
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
cURL呼叫 JSON API,並傳送POSTManagedFolder 要求:curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -d '{ "name": "MANAGED_FOLDER_NAME" }' \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders"其中:
MANAGED_FOLDER_NAME是要建立的代管資料夾名稱。例如:my-managed-folder/。BUCKET_NAME是要建立代管資料夾的 bucket 名稱。例如:my-bucket。
建立代管資料夾,啟用 Rapid Cache 寫入時擷取功能
本節說明如何建立代管資料夾,並設定在前置字元層級啟用 Rapid Cache 寫入時擷取功能。如果您未使用 Rapid Cache 或其寫入時擷取功能,請略過本節。
如要建立代管資料夾,以便為使用 Rapid Cache 建立的快取啟用寫入時的前置字元層級擷取,請按照下列步驟操作:
請參閱「瞭解如何啟用寫入時擷取」,熟悉如何設定前置字元層級的寫入時擷取功能。
確認快取的
ingestOnWrite屬性已設為false。 如需操作說明,請參閱「更新快取」。在要求中加入
rapidCacheConfig設定:
curl -X POST -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "name": "MANAGED_FOLDER_NAME", "rapidCacheConfig": { "policies": { "RAPID_CACHE_ID": { "rapidCacheId": "RAPID_CACHE_ID", "ingestOnWrite": "enabled" } } } }' \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders"其中:
MANAGED_FOLDER_NAME是要建立的受管理資料夾名稱。快取會使用這個受管理資料夾名稱,在寫入時選擇性擷取物件。舉例來說,如果將代管資料夾名稱指定為my-managed-folder/,快取只會擷取 bucket 中路徑名稱包含my-managed-folder/的物件。RAPID_CACHE_ID是快取 ID,也就是快取區域。例如:us-east1-b。您指定的快取必須與要建立代管資料夾的 bucket 相關聯。如要找出與值區相關聯的快取,請列出值區的快取。BUCKET_NAME是與快取相關聯的 bucket 名稱。例如,my-cached-bucket。系統會在這個 bucket 中建立代管資料夾。
列出代管資料夾
控制台
- 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。
在「資料夾瀏覽器」窗格中,使用「切換節點」 展開值區中的資料夾清單。
清單會顯示 bucket 中的資料夾、模擬資料夾和代管資料夾。
指令列
如要列出代管資料夾,請執行 gcloud storage managed-folders list 指令:
gcloud storage managed-folders list gs://BUCKET_NAME
其中:
BUCKET_NAME是指含有要列出代管資料夾的 bucket 名稱。例如:my-bucket。
請注意,您也可以指定資料夾路徑,而非 bucket 名稱。 例如:
gcloud storage managed-folders list gs://my-bucket/folder/
用戶端程式庫
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
取得代管資料夾的中繼資料
指令列
如要取得代管資料夾的中繼資料,請執行 gcloud storage managed-folders describe 指令:
gcloud storage managed-folders describe gs://BUCKET_NAME/MANAGED_FOLDER_NAME
其中:
BUCKET_NAME是指含有要列出代管資料夾的 bucket 名稱。例如:my-bucket。MANAGED_FOLDER_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 進行驗證,請設定應用程式預設憑證。詳情請參閱「設定用戶端程式庫的驗證機制」。
Rust
REST API
JSON API
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
cURL呼叫 JSON API,並要求取得代管資料夾:curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME"
其中:
BUCKET_NAME是 bucket 名稱,內含您要取得的代管資料夾。例如:my-bucket。MANAGED_FOLDER_NAME是以路徑表示的代管資料夾名稱。例如:example-dir/。如果代管資料夾為巢狀結構,則必須逸出代管資料夾路徑中的斜線 (/) 字元。例如:example-dir1%2Fexample-dir2。
移動代管資料夾
控制台
在目的端 bucket 中建立新的代管資料夾。
將物件從來源 bucket 中的原始代管資料夾複製到目的地 bucket 中的新代管資料夾。
從來源 bucket 刪除原始受管理資料夾。
指令列
如要移動代管資料夾及其包含的物件,請執行 gcloud storage mv 指令並加上 --include-managed-folders 選項:
gcloud storage mv --include-managed-folders gs://SOURCE_BUCKET_NAME/MANAGED_FOLDER_NAME gs://DESTINATION_BUCKET_NAME/MANAGED_FOLDER_NAME
其中:
SOURCE_BUCKET是原始 bucket 的名稱。例如my-source-bucket`。DESTINATION_BUCKET是要移入代管資料夾的 bucket 名稱。例如:my-destination-bucket。MANAGED_FOLDER_NAME是要移動的代管資料夾名稱。例如:my-managed-folder/。
REST API
JSON API
如要將代管資料夾從一個 bucket 移至另一個 bucket,請完成下列步驟:
在目的端 bucket 中建立新的代管資料夾。
將 IAM 政策從來源 bucket 中的原始代管資料夾複製到目的地 bucket 中的新代管資料夾。
將物件從來源 bucket 的原始代管資料夾複製到目的地 bucket 的新代管資料夾。
從來源 bucket 刪除原始受管理資料夾。
更新代管資料夾的 Rapid Cache 寫入時擷取政策
本節說明如何在前置字元層級啟用或停用「Rapid Cache 寫入時擷取」設定,這項設定會使用代管資料夾做為基礎機制。如果您未使用 Rapid Cache 或其寫入時擷取功能,請略過本節。
如要為共用代管資料夾前置字串的物件啟用或停用 Rapid Cache 寫入時擷取政策,您必須更新代管資料夾的 rapidCacheConfig 設定。只有在使用 JSON API 更新快取的寫入時擷取政策時,才需要執行這些操作。
如要進一步瞭解如何在前置字元層級啟用或停用寫入時擷取功能,請參閱「瞭解寫入時擷取功能」。
REST API
JSON API
如要新增、修改或刪除受管理資料夾的 Rapid Cache 寫入時擷取政策,請按照下列步驟操作:
請務必在快取設定中設定
ingestOnWrite屬性。請參閱「瞭解寫入時擷取」,瞭解要將屬性設為哪個值。使用
cURL呼叫 JSON API,並發出PATCHManagedFolder 要求。要求主體會因您的用途而異:為代管資料夾啟用或停用寫入時擷取政策
如要更新一或多個快取的寫入時擷取設定,請使用下列指令:
curl -X PATCH -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "rapidCacheConfig": { "policies": { "RAPID_CACHE_ID": { "rapidCacheId": "RAPID_CACHE_ID", "ingestOnWrite": "INGEST_VALUE" } } } }' \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME"更改項目:
BUCKET_NAME:包含代管資料夾的 bucket 名稱。MANAGED_FOLDER_NAME:受管理資料夾的名稱。RAPID_CACHE_ID:快取的 ID,也就是快取的可用區。例如:us-east1-b。INGEST_VALUE:與快取的擷取行為。如果值為enabled,系統會啟用代管資料夾前置字串的寫入時擷取功能。如果值為unspecified,快取的寫入時擷取行為會繼承自上層代管資料夾 (如有),或 bucket 的快取設定。如要進一步瞭解這些值設定的行為,請參閱「寫入時擷取規定」。請仔細閱讀寫入時擷取繼承,瞭解當快取的ingestOnWrite設定設為unspecified時,快取的寫入時擷取政策會受到什麼影響。
如要一次為多個快取設定寫入時擷取功能,請在要求中加入多個
policies對應。例如:"rapidCacheConfig": { "policies": { "us-east1-a": { "rapidCacheId": "us-east1-a", "ingestOnWrite": "unspecified" } "us-east1-b": { "rapidCacheId": "us-east1-b", "ingestOnWrite": "enabled" } } }如要停用個別快取的寫入時前置字元層級擷取功能,請從
rapidCacheConfig設定中移除快取的policies對應。刪除代管資料夾的寫入時擷取政策
您可以按照本節的操作說明,刪除代管資料夾的寫入時擷取政策。刪除代管資料夾的寫入時擷取政策後,您在要求中指定的快取不會依代管資料夾前置字串在寫入時擷取物件,而 bucket 中物件的擷取行為將由快取設定的
ingestOnWrite欄位決定。如要瞭解如何根據代管資料夾的ingestOnWrite欄位和快取設定,判斷寫入時擷取行為,請參閱「瞭解如何啟用寫入時擷取」和「寫入時擷取繼承」。如要刪除代管資料夾的寫入時擷取政策,請使用下列指令。下列指令會針對包含這項設定的受管理資料夾資源,在個別快取上停用前置字元層級的寫入時擷取功能:
curl -X PATCH -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ -d '{ "rapidCacheConfig": { "policies": { "us-east1-a": null } } }' "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME"更改項目:
BUCKET_NAME:包含代管資料夾的 bucket 名稱。MANAGED_FOLDER_NAME:受管理資料夾的名稱。RAPID_CACHE_ID:快取的 ID,也就是快取的區域。例如:us-east1-b。這個欄位必須設為null。
或者,如要刪除代管資料夾的前置字元層級寫入時擷取政策,請在要求中將
policies對應設為null:"rapidCacheConfig": { "policies": null }
刪除代管資料夾
控制台
- 前往 Google Cloud 控制台的「Cloud Storage bucket」頁面。
在 bucket 清單中,點選含有要刪除受管理資料夾的 bucket 名稱。
在「Bucket details」(值區詳細資料) 頁面中,找出要刪除的代管資料夾,然後按一下旁邊的「More options」(更多選項) 圖示 。
按一下「刪除資料夾」。
如要確認刪除代管資料夾,請在「Delete」(刪除) 欄位中輸入
DELETE。點選「刪除」。
代管資料夾及其內容 (包括儲存的物件和其他代管資料夾) 會從 Cloud Storage bucket 中刪除。
指令列
如要刪除代管資料夾及其包含的物件,請執行 gcloud storage rm 指令:
gcloud storage rm -r gs://BUCKET_NAME/MANAGED_FOLDER_NAME
其中:
BUCKET_NAME是 bucket 的名稱,其中包含您要刪除的受管理資料夾。例如:my-bucket。MANAGED_FOLDER_NAME是要刪除的代管資料夾名稱。例如:my-managed-folder/。
用戶端程式庫
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
如要刪除代管資料夾,您必須先刪除代管資料夾中的物件。
安裝並初始化 gcloud CLI,以便為
Authorization標頭產生存取權杖。使用
cURL呼叫 JSON API,並傳送DELETEManagedFolder 要求:curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME"
其中:
BUCKET_NAME是 bucket 的名稱,其中包含您要刪除的受管理資料夾。例如:my-bucket。MANAGED_FOLDER_NAME是要刪除的代管資料夾名稱。例如:my-managed-folder/。
根據預設,代管資料夾必須是空的才能刪除。如要刪除非空白的代管資料夾,請在要求中加入
allowNonEmpty=true做為查詢參數。
疑難排解
如需建立及管理代管資料夾的說明,請參閱疑難排解頁面。