本指南介绍如何创建、列出和删除托管文件夹。
准备工作
在开始之前,请确保您拥有创建和管理托管文件夹所需的 Identity and Access Management (IAM) 角色,并启用统一存储桶级访问权限。
获取所需角色
如需获得创建和管理托管文件夹所需的权限,请让管理员向您授予存储桶的 Storage Folder Admin (roles/storage.folderAdmin
) IAM 角色。
此预定义角色可提供创建和管理托管式文件夹所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
storage.managedfolders.create
storage.managedfolders.delete
storage.managedfolders.get
storage.managedfolders.list
storage.objects.list
- 仅当您希望通过列出新创建的托管式文件夹来验证它们时,才需要此权限。
如需了解如何授予存储桶的角色,请参阅将 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
是已创建的托管文件夹的名称。
REST API
JSON API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。或者,您可以创建访问令牌(使用 OAuth 2.0 Playground),并将其包含在
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/
REST API
JSON API
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。或者,您可以创建访问令牌(使用 OAuth 2.0 Playground),并将其包含在
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
。
移动托管文件夹
控制台
在目标存储桶中创建新的托管文件夹。
将源存储桶中的原始托管文件夹的 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/
。
REST API
JSON API
如需删除托管文件夹,您必须先删除托管文件夹中的对象。
安装并初始化 gcloud CLI,以便为
Authorization
标头生成访问令牌。或者,您可以创建访问令牌(使用 OAuth 2.0 Playground),并将其包含在
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
作为查询参数。
问题排查
如需获得创建和管理托管文件夹方面的帮助,请参阅问题排查页面。