创建和管理托管文件夹

本指南介绍如何创建、列出和删除托管文件夹

准备工作

在开始之前,请确保您拥有创建和管理托管文件夹所需的 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 控制台时,您可以通过转换模拟文件夹来创建托管文件夹。以下步骤介绍了如何创建模拟文件夹并将其转换为托管文件夹。

  1. 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。

    进入“存储桶”

  2. 在存储桶列表中,点击要在其中创建托管文件夹的存储桶的名称。

  3. 存储桶详情页面中,点击创建文件夹以创建新文件夹。如果要转换为托管文件夹的文件夹已存在,请跳到描述如何访问更多选项 菜单的步骤。

  4. 名称字段中,为文件夹输入名称。如需了解命名注意事项,请参阅托管文件夹名称

  5. 点击创建

    新创建的文件夹会显示在文件夹浏览器窗格中。

  6. 文件夹浏览器窗格中,点击要转换为托管文件夹的文件夹旁边的更多选项 菜单,然后点击修改访问权限

    此时会显示创建托管文件夹对话框。

  7. 点击附加托管文件夹

    您的文件夹会转换为托管文件夹。此时会显示 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

  1. 安装并初始化 gcloud CLI,以便为 Authorization 标头生成访问令牌。

    或者,您可以创建访问令牌(使用 OAuth 2.0 Playground),并将其包含在 Authorization 标头中。

  2. 使用 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/

列出托管文件夹

控制台

  1. 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。

    进入“存储桶”

  2. 文件夹浏览器窗格中,使用切换节点 展开存储桶中的文件夹列表。

一个列表会显示存储桶中的模拟文件夹和托管文件夹。

命令行

如需列出托管文件夹,请运行 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

  1. 安装并初始化 gcloud CLI,以便为 Authorization 标头生成访问令牌。

    或者,您可以创建访问令牌(使用 OAuth 2.0 Playground),并将其包含在 Authorization 标头中。

  2. 使用 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

移动托管文件夹

控制台

  1. 在目标存储桶中创建新的托管文件夹

  2. 将源存储桶中的原始托管文件夹的 IAM 政策复制到目标存储桶中的新托管文件夹。

  3. 将源存储桶中的原始托管文件夹中的对象复制到目标存储桶中的新托管文件夹。

  4. 从源存储桶中删除原始托管文件夹

命令行

如需移动托管文件夹及其包含的对象,请运行带有 --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

如需将托管文件夹从一个存储桶移动到另一个存储桶,请完成以下步骤:

  1. 在目标存储桶中创建新的托管文件夹

  2. 将源存储桶中的原始托管文件夹的 IAM 政策复制到目标存储桶中的新托管文件夹。

  3. 将源存储桶中的原始托管文件夹中的对象复制到目标存储桶中的新托管文件夹。

  4. 从源存储桶中删除原始托管文件夹

删除托管文件夹

控制台

  1. 在 Google Cloud 控制台中,进入 Cloud Storage 存储桶页面。

    进入“存储桶”

  2. 存储桶详情页面中,点击要删除的托管文件夹旁边的更多选项图标

  3. 点击删除文件夹

  4. 如需确认要删除托管文件夹,请在删除字段中输入 DELETE

  5. 点击删除

    托管文件夹及其内容(包括存储的对象和其他托管文件夹)会从 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

如需删除托管文件夹,您必须先删除托管文件夹中的对象

  1. 安装并初始化 gcloud CLI,以便为 Authorization 标头生成访问令牌。

    或者,您可以创建访问令牌(使用 OAuth 2.0 Playground),并将其包含在 Authorization 标头中。

  2. 使用 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 作为查询参数。

问题排查

如需获得创建和管理托管文件夹方面的帮助,请参阅问题排查页面

后续步骤