本指南介绍如何创建、列出和删除托管文件夹。
准备工作
如需创建和管理托管式文件夹,您必须先启用统一存储桶级访问权限并获取所需的 IAM 角色。
启用统一存储桶级访问权限
请启用统一存储桶级访问权限(如果您尚未启用)。
获取所需角色
如需获取创建和管理托管式文件夹所需的权限,请让管理员向您授予存储桶的 Storage Folder Admin (roles/storage.folderAdmin
) IAM 角色。
此预定义角色可提供创建和管理托管式文件夹所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
如需创建和管理托管式文件夹,需要具备以下权限:
-
如需创建托管式文件夹,请执行以下操作:
storage.managedFolders.create
-
如需通过列出新创建的托管式文件夹来验证它们,请执行以下操作:
storage.objects.list
-
如需列出托管式文件夹,请执行以下操作:
storage.managedFolders.list
-
如需获取托管式文件夹,请执行以下操作:
storage.managedFolders.get
-
如需移动托管式文件夹,请按以下步骤操作:
-
storage.managedFolders.delete
(针对源存储桶) -
storage.managedFolders.create
(针对目标存储桶)
-
-
如需删除托管式文件夹,请执行以下操作:
storage.managedFolders.delete
如需了解如何授予存储桶的角色,请参阅将 IAM 与存储桶搭配使用。
创建托管文件夹
控制台
使用 Google Cloud 控制台时,您可以通过启用对文件夹或模拟文件夹的管理来创建托管式文件夹。以下步骤介绍了如何创建文件夹或模拟文件夹,然后启用文件夹管理:
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
在存储桶列表中,点击要在其中创建托管文件夹的存储桶的名称。
在存储桶详情页面中,点击创建文件夹以创建新文件夹。如果要转换为托管文件夹的文件夹已存在,请跳到描述如何访问更多选项
菜单的步骤。在名称字段中,为文件夹输入名称。如需了解命名注意事项,请参阅托管文件夹名称。
点击创建。
新创建的文件夹会显示在文件夹浏览器窗格中。
在文件夹浏览器窗格中,点击要转换为托管文件夹的文件夹旁边的更多选项
菜单,然后点击修改访问权限。此时会显示要启用文件夹管理吗?对话框。
点击启用。
您的文件夹会转换为托管文件夹。此时会显示
MANAGED_FOLDER_NAME
的权限窗格,其中按主账号和角色显示该文件夹的 IAM 政策。如需创建新的 IAM 政策,请参阅在托管文件夹上设置 IAM 政策。
命令行
如需创建托管文件夹,请运行 gcloud storage managed-folders create
命令:
gcloud storage managed-folders create gs://BUCKET_NAME/MANAGED_FOLDER_NAME
其中:
BUCKET_NAME
是要创建托管文件夹的存储桶的名称。例如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
是已创建托管文件夹的存储桶的名称。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 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
REST API
JSON API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。使用
cURL
通过POST
ManagedFolder 请求调用 JSON API: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"
其中:
BUCKET_NAME
是要创建托管文件夹的存储桶的名称。例如my-bucket
。MANAGED_FOLDER_NAME
是要创建的托管文件夹的名称。例如my-managed-folder/
。
列出托管文件夹
控制台
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
在文件夹浏览器窗格中,使用切换节点
展开存储桶中的文件夹列表。
一个列表会显示存储桶中的文件夹、模拟文件夹和托管式文件夹。
命令行
如需列出托管文件夹,请运行 gcloud storage managed-folders list
命令:
gcloud storage managed-folders list gs://BUCKET_NAME
其中:
BUCKET_NAME
是包含要列出的托管文件夹的存储桶的名称。例如my-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 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
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"
其中,
BUCKET_NAME
是包含要列出的托管式文件夹的存储桶的名称。例如my-bucket
。
获取托管式文件夹的元数据
命令行
如需获取托管式文件夹的元数据,请运行 gcloud storage managed-folders describe
命令:
gcloud storage managed-folders describe gs://BUCKET_NAME/MANAGED_FOLDER_NAME
其中:
BUCKET_NAME
是包含要列出的托管文件夹的存储桶的名称。例如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 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
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
是包含要获取的托管式文件夹的存储桶的名称。例如my-bucket
。MANAGED_FOLDER_NAME
是托管式文件夹的名称,以路径表示。例如example-dir/
。如果托管式文件夹是嵌套的,则必须转义托管式文件夹路径中的斜杠 (/
) 字符。例如example-dir1%2Fexample-dir2
。
移动托管文件夹
控制台
在目标存储桶中创建新的托管文件夹。
将源存储桶中的原始托管文件夹的 IAM 政策复制到目标存储桶中的新托管文件夹。
将源存储桶中的原始托管文件夹中的对象复制到目标存储桶中的新托管文件夹。
从源存储桶中删除原始托管文件夹。
命令行
如需移动托管文件夹及其包含的对象,请运行带有 --include-managed-folders
选项的 gcloud storage mv
命令:
gcloud storage mv --include-managed-folders gs://SOURCE_BUCKET_NAME/MANAGED_FOLDER_NAME gs://DESTINATION_BUCKET_NAME/MANAGED_FOLDER_NAME
其中:
SOURCE_BUCKET
是原始存储桶的名称,例如my-source-bucket
。DESTINATION_BUCKET
是托管文件夹要移动到的存储桶的名称。例如my-destination-bucket
。MANAGED_FOLDER_NAME
是要移动的托管文件夹的名称。例如my-managed-folder/
。
REST API
JSON API
如需将托管文件夹从一个存储桶移动到另一个存储桶,请完成以下步骤:
在目标存储桶中创建新的托管文件夹。
将源存储桶中的原始托管文件夹的 IAM 政策复制到目标存储桶中的新托管文件夹。
将源存储桶中的原始托管文件夹中的对象复制到目标存储桶中的新托管文件夹。
从源存储桶中删除原始托管文件夹。
删除托管文件夹
控制台
- 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。
在存储桶列表中,点击包含待删除托管式文件夹的存储桶的名称。
在存储桶详情页面中,点击要删除的托管文件夹旁边的更多选项图标
。点击删除文件夹。
如需确认要删除托管文件夹,请在删除字段中输入
DELETE
。点击删除。
托管文件夹及其内容(包括存储的对象和其他托管文件夹)会从 Cloud Storage 存储桶中删除。
命令行
如需删除托管文件夹及其包含的对象,请运行 gcloud storage rm
命令:
gcloud storage rm -r gs://BUCKET_NAME/MANAGED_FOLDER_NAME
其中:
BUCKET_NAME
是包含要删除的托管文件夹的存储桶的名称。例如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 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为客户端库设置身份验证。
REST API
JSON API
如需删除托管文件夹,您必须先删除托管文件夹中的对象。
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。使用
cURL
通过DELETE
ManagedFolder 请求调用 JSON API: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
是包含要删除的托管文件夹的存储桶的名称。例如my-bucket
。MANAGED_FOLDER_NAME
是要删除的托管文件夹的名称。例如my-managed-folder/
。
默认情况下,托管文件夹必须为空,然后才能删除。如需删除非空托管文件夹,请在请求中添加
allowNonEmpty=true
作为查询参数。
问题排查
如需获得创建和管理托管文件夹方面的帮助,请参阅问题排查页面。