创建和管理文件夹

文件夹是 Cloud Platform 资源层次结构中的节点。一个文件夹可以包含项目、其他文件夹或两者的组合。组织资源可以使用文件夹按照一定的层次结构对组织资源节点中的项目进行分组。例如,您的组织资源可能包含多个部门,每个部门都有自己的一组 Google Cloud 资源。借助文件夹,您可以按部门对这些资源进行分组。文件夹用于对共用相同 IAM 政策的资源进行分组。虽然一个文件夹可以包含多个文件夹或资源,但给定文件夹或资源只能有一个父级。

在下图中,组织资源“Company”拥有三个文件夹,其中两个文件夹代表两个部门“Dept X”和“Dept Y”,另一个文件夹“Shared Infrastructure”代表两个部门可能共有的部分。在“Dept Y”下,部门分为两个团队,在团队文件夹中,他们进一步按产品划分。“Product 1”的文件夹包含三个项目,各具备项目所需的资源。这为他们提供了高度灵活性,便于以适当的细化程度分配 IAM 政策和组织政策。

文件夹层次结构示例

您可以使用文件夹级别的 IAM 政策来控制对文件夹所含资源的访问权限。例如,如果在某个文件夹上向用户授予 Compute Instance 管理员角色,则该用户对该文件中的所有项目都具有 Compute Instance 管理员角色。

准备工作

文件夹功能仅适用于拥有组织资源的 Google Workspace 和 Cloud Identity 客户。如需详细了解如何获取组织资源,请参阅创建和管理组织

如果您想要了解如何充分使用文件夹,我们建议您:

  1. 查看使用 IAM 控制文件夹访问权限。该主题介绍如何控制哪些人对文件夹和及其中包含的资源具有什么访问权限。
  2. 了解如何设置文件夹权限。文件夹支持许多不同的 IAM 角色。如果您想要广泛设置权限,以使用户能够看到项目结构,请在组织资源级向整个网域授予 Organization ViewerFolder Viewer 角色。要限制文件夹层次结构分支的公开范围,请针对您希望用户查看的一个或多个文件夹授予 Folder Viewer 角色。
  3. 创建文件夹。在规划如何组织云端资源时,我们建议您先将单个文件夹作为沙盒,在该文件夹中,您可以试验哪个层次结构最适合您的组织资源。根据资源和访问权限与配置政策连接点之间的隔离边界,考虑文件夹。您可以选择创建文件夹,以包含属于不同部门的资源,并针对文件夹分配管理员角色以委派管理员权限。文件夹还可用于对属于应用或不同环境的资源进行分组,如开发、生产、测试。请使用嵌套文件夹来对这些不同场景建模。

常见的场景是创建包含其他文件夹或项目的文件夹,如上图所示。该结构称为文件夹层次结构。创建文件夹层次结构时,请注意以下事项:

  • 文件夹最多可以嵌套 10()层。
  • 父文件夹包含的文件夹不得超过 300 个。该限额仅表示直接子文件夹。反过来,这些子文件夹可以包含其他文件夹或项目。
  • 文件夹显示名在层次结构的同一层级内必须是唯一的。

设置文件夹管理权限

如需访问和管理文件夹,您需要向特定用户组分配特定于文件夹的 IAM 角色。如需详细了解这些角色,请参阅使用 IAM 对文件夹进行访问控制。我们还建议您查看最佳做法,以帮助您识别文件夹权限的最佳配置。

如需管理整个组织资源的文件夹,您需要拥有 Folder Admin 角色。该角色向用户授予在文件夹上创建、修改、删除、移动和更改 IAM 权限的权限,以及在文件夹之间移动项目的权限。

最初,只有组织管理员才能为组织资源分配 Folder Admin 角色。之后获得该角色的账号可向其他账号授予该角色。

如需设置文件夹权限,请按以下步骤操作:

控制台

  1. 在 Google Cloud 控制台中,打开管理资源页面。

    转到“管理资源”

  2. 如果信息面板未打开,请点击显示信息面板
  3. 资源表中,展开包含相应文件夹的组织。
  4. 从“组织”下的资源列表中,选择要管理的文件夹。
  5. 在信息面板中,点击添加主账号
  6. 添加主账号字段中,输入您要向其授予权限的电子邮件地址。
  7. 选择角色菜单中,选择 Resource Manager 类别,然后选择要授予的角色,例如 Folder Admin
  8. 点击保存以授予新角色。

gcloud

如需使用 Google Cloud CLI 向主账号授予“Folder Admin”角色,请运行以下命令:

    gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
    --member=user:USER_ID \
    --role=roles/resourcemanager.folderAdmin

API

请求 JSON:

request_json= '{ policy: { version: "1", bindings: [ { role: "roles/folderAdmin",
members: [ "user:admin@myorganization.com", ] }, { role: "roles/folderCreator",
members: [   "user:admin@myorganization.com", ] } , { role: "roles/folderMover",
members: [ "user:admin@myorganization.com", ] } , ] } }'

Curl 请求:

curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token}" \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v3/ORGANIZATION_NAME:setIamPolicy

ORGANIZATION_NAME 替换为正在设置 IAM 政策所属的组织的名称,例如 organizations/123

创建文件夹

要创建文件夹,您必须在父级拥有 Folder AdminFolder Creator 角色。例如,要在组织层级创建文件夹,您必须在组织层级拥有以下某个角色。

作为创建文件夹的一部分,您必须为其分配一个名称。文件夹名称必须符合以下要求:

  • 名称可以包含字母、数字、空格、连字符和下划线。
  • 文件夹显示名的开头和结尾都必须是字母或数字。
  • 名称的长度必须介于 3 到 30 个字符之间。
  • 名称必须与同一父级下的所有其他文件夹不同。

要创建文件夹,请执行以下操作:

控制台

您可以参阅“管理项目和文件夹”部分,在界面中创建文件夹。

  1. 前往 Google Cloud 控制台中的管理资源页面:

    打开“管理资源”页面

  2. 请务必在页面顶部的组织下拉列表中选择您的组织资源名称。

  3. 点击创建文件夹,然后选择以下选项之一:

  4. 文件夹名称框中,输入新文件夹的名称。

  5. 目标位置下,点击浏览,然后选择要在其中创建新文件夹的组织资源或文件夹。

    1. 点击创建

gcloud

您可以使用 Google Cloud CLI 以编程方式创建文件夹。

如需使用 gcloud 命令行工具在组织资源下创建文件夹,请运行以下命令。

gcloud resource-manager folders create \
   --display-name=[DISPLAY_NAME] \
   --organization=[ORGANIZATION_ID]

要创建其父级是另一个文件夹的文件夹,请运行以下命令:

gcloud resource-manager folders create \
   --display-name=[DISPLAY_NAME] \
   --folder=[FOLDER_ID]

其中:

  • [DISPLAY_NAME] 是文件夹的显示名。具有同一父级的两个文件夹的显示名必须不同。显示名的开头和结尾都必须是字母或数字,可以包含字母、数字、空格、连字符和下划线,不能超过 30 个字符。
  • 如果父级是组织资源,则 [ORGANIZATION_ID] 是父级组织资源的 ID。
  • 如果父级是文件夹,则 [FOLDER_ID] 是父级文件夹的 ID。

API

您可以通过 API 请求创建文件夹

请求 JSON:

request_json= '{
  display_name: DISPLAY_NAME,
  parent: ORGANIZATION_NAME
}'

创建文件夹 curl 请求:

curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token}" \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v3/folders

其中:

  • [DISPLAY_NAME] 是新文件夹的显示名,如“My Awesome Folder”。
  • [ORGANIZATION_NAME] 是您要在其中创建文件夹的组织资源的名称,例如 organizations/123

创建文件夹响应:

{
  "name": "operations/fc.123456789",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
    "displayName": "[DISPLAY_NAME]",
    "operationType": "CREATE"
  }
}

获取操作 curl 请求:

curl -H "Authorization: Bearer ${bearer_token}" \
https://cloudresourcemanager.googleapis.com/v3/operations/fc.123456789

获取操作响应:

{
  "name": "operations/fc.123456789",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
    "displayName": "[DISPLAY_NAME]",
    "operationType": "CREATE"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.Folder",
    "name": "folders/12345",
    "parent": "organizations/123",
    "displayName": "[DISPLAY_NAME]",
    "lifecycleState": "ACTIVE",
    "createTime": "2017-07-19T23:29:26.018Z",
    "updateTime": "2017-07-19T23:29:26.046Z"
  }
}

在创建文件夹时添加标记

标记提供了一种为资源创建注解的方法。您可以在创建文件夹时添加标签。为此,您必须授予代码用户角色。如需详细了解此角色包含的权限,请参阅管理资源上的标记。 您只能通过以下任一方式为代码植入的键值对添加命名空间:

gcloud

如需在创建文件夹时添加标记,请运行以下命令:

  gcloud resource-manager folders create \
  --display-name=DISPLAY_NAME \
  --organization=ORGANIZATION_ID
  --tags=KEY_VALUE_PAIRS

替换以下内容:

  • DISPLAY_NAME 是文件夹的显示名称。
  • ORGANIZATION_ID 是父级组织资源的唯一标识符。
  • KEY_VALUE_PAIRS 是可分配给资源的键值对的逗号分隔列表。以英文逗号分隔的键值对示例如 123/environment=production, 456/create=testresource

API

以下代码段是一个 JSON 请求,用于创建文件夹并向其添加标记。

  POST https://cloudresourcemanager.googleapis.com/v3/projects/
  Authorization: *************
  Content-Type: application/json

  {
    "display_name": "our-folder-456",
    "parent": "organizations/123",
    "tags": {
      "key": "123/environment"
      "value": "production"
    },
"tags": {
      "key": "123/costCenter"
      "value": "marketing"
    }
  }

配置对文件夹的访问权限

要配置对文件夹的访问权限,您必须在父层级拥有文件夹 IAM 管理员文件夹管理员角色。

控制台

  1. 在 Google Cloud 控制台中,打开管理资源页面。

    打开“管理资源”页面

  2. 点击左上角的组织下拉列表,然后选择您的组织资源。

  3. 选择要为其更改权限的项目旁边的复选框。

    1. 在右侧信息面板权限下方,输入要添加的成员的电子邮件地址。

    2. 选择角色下拉列表中,选择要为这些成员授予的角色。

    3. 点击添加。此时系统会显示一条通知,确认添加或更新成员的新角色。

gcloud

您可以使用 Google Cloud CLI 或 API 以编程方式配置对文件夹的访问权限。

gcloud resource-manager folders \
  add-iam-policy-binding [FOLDER_ID] \
  --member=user:email1@example.com \
  --role=roles/resourcemanager.folderEditor
gcloud resource-manager folders \
  add-iam-policy-binding [FOLDER_ID] \
  --member=user:email1@example.com \
  --role=roles/resourcemanager.folderViewer

或者,您也可以使用:

gcloud resource-manager folders \
  set-iam-policy [FOLDER_ID] [POLICY_FILE]

其中:

  • [FOLDER_ID] 是新文件夹的 ID。
  • [POLICY_FILE] 是文件夹政策文件的路径。

API

setIamPolicy 方法用于设置文件夹的访问权限控制政策,替换现有政策。resource 字段应为文件夹的资源名称,例如 folders/1234

 request_json= '{
   policy: {
     version: "1",
     bindings: [
       {
         role: "roles/resourcemanager.folderEditor",
         members: [
           "user:email1@example.com",
           "user:email2@example.com",
         ]
       }
     ]
   }
 }'

Curl 请求:

   curl -X POST -H "Content-Type: application/json" \
   -H "Authorization: Bearer ${bearer_token}" \
   -d "$request_json" \
   https://cloudresourcemanager.googleapis.com/v3/[FOLDER_NAME]:setIamPolicy

其中:

  • [FOLDER_NAME] 是正在设置的 IAM 政策所属的文件夹的名称,例如 folders/123。

在文件夹中创建项目

要在文件夹中创建项目,您必须拥有该文件夹的 Project Creator 角色 (roles/resourcemanager.projectCreator)。该角色可从父文件夹继承。

控制台

  1. 在 Google Cloud 控制台中,打开“管理资源”页面。

    打开 Google Cloud 控制台

  2. 转到“管理资源”页面。
  3. 从页面左上角的组织下拉列表中选择您的组织资源。
  4. 点击创建项目
  5. 输入项目名称
  6. 目标位置框中,点击浏览以选择要在其中创建项目的文件夹。

  7. 点击创建

gcloud

  gcloud projects create PROJECT_ID --folder FOLDER_ID

替换以下内容:

  • PROJECT_ID 是要创建的项目 ID 的 ID。
  • FOLDER_ID 是应在其中创建项目的文件夹的 ID。

API

请求 JSON:

   request_json= '{
      name: DISPLAY_NAME, projectId: PROJECT_ID, parent: {id: PARENT_ID, type: PARENT_TYPE}
   }'

Curl 请求:

   curl -X POST -H "Content-Type: application/json" \
   -H "Authorization: Bearer ${bearer_token}" \
   -d "$request_json" \
   https://cloudresourcemanager.googleapis.com/v3/projects

替换以下内容:

  • PROJECT_ID 是要创建的项目的唯一标识符。例如 my-awesome-proj-123
  • DISPLAY_NAME 是所创建项目的显示名称。
  • PARENT_ID 是要在其中创建项目的父级的唯一标识符。例如 123
  • PARENT_TYPE 是父级的类型,例如 folderorganization

请勿在文件夹名称或其他资源名称中添加敏感信息。对文件夹或相关资源的任何引用都会公开文件夹名称和资源名称。

将项目移动到文件夹

在将项目移入或移出文件夹之前,您必须仔细考虑任何政策影响。您在项目层级定义的 Identity and Access Management 政策会随项目一起迁移,但继承自父资源的政策不会随之迁移。

移动项目时,直接附加的所有 Identity and Access Management 政策或组织政策都将与该项目一起移动。不过,资源层次结构中的项目也会受到它从父资源继承的政策影响。如果项目继承了为用户提供特定服务使用权的 IAM 角色,则用户在目标位置无权访问该服务,除非项目也将在目标位置继承权限。

例如,假设某服务账号在文件夹 A 中将 Storage Object Creator 角色绑定到某用户。该服务账号有权将数据上传到文件夹 A 中任何项目中的 Cloud Storage。如果您移动了其中一个项目,而文件夹 B 没有相同的继承权限,则该项目的服务账号将无法上传数据,从而导致服务中断。

如果组织政策在源文件夹和目标文件夹中定义,则这些注意事项也适用。与 IAM 政策一样,组织政策是继承的。因此,您必须确保源文件夹和目标文件夹之间的组织政策一致。

如需详细了解组织政策,请参阅组织政策服务简介

要移动项目,您需要拥有源文件夹和目标文件夹的 Project Mover IAM 角色 (roles/resourcemanager.projectMover)。如果资源不在文件夹中,您需要在组织资源上拥有此角色。

这些角色授予您以下所需权限:

  • 针对项目的 resourcemanager.projects.update
  • 如果资源位于文件夹中:针对源文件夹和目的地的 resourcemanager.projects.move
  • 如果资源不在文件夹中:针对组织资源的 resourcemanager.projects.move

您还可以通过自定义角色或其他预定义角色获取这些权限。

控制台

如需移动项目,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往管理资源页面。

    转到“管理资源”

  2. 从页面左上角的组织下拉列表中选择您的组织。

  3. 点击项目所在的行,从资源列表中选择您的项目。请注意,不得点击项目名称,此操作会将您转到项目的 IAM 页面。

  4. 点击行中的选项菜单(垂直省略号),然后点击移动

  5. 点击浏览,选择项目的目标移动文件夹。

  6. 点击移动

gcloud

如需移动项目,请运行 gcloud beta projects move 命令:

gcloud beta projects move PROJECT_ID \
--DESTINATION_TYPE DESTINATION_ID

其中:

  • PROJECT_ID 是待移动项目的 ID 或编号。

  • DESTINATION_TYPEorganizationfolder

  • DESTINATION_ID 是您要将项目移动到的组织资源或文件夹的 ID。您只能指定一个目标。

API

您可以使用 v3 projects.move 方法移动项目。

请求:

POST https://cloudresourcemanager.googleapis.com/v3/{name=PROJECT_NAME}:move
{
  "destinationParent": DESTINATION_PARENT
}

其中:

  • PROJECT_NAME 是要更新的项目的名称。例如 projects/415104041262

  • DESTINATION_PARENT 是您要在其下移动项目的新父级组织资源或文件夹。例如:organizations/12345678901

如果成功,请求将返回一个操作,可用于跟踪项目移动。

将文件夹移动到另一个文件夹

如要将一个文件夹移动到另一个文件夹,则源文件夹和目标文件夹都必须具有 resourcemanager.folders.move 权限。

控制台

在控制台中,将文件夹移动到其他文件夹的过程与移动项目类似。

  1. 在 Google Cloud 控制台中,打开“管理资源”页面。

    打开 Google Cloud 控制台

  2. 从页面左上角的组织下拉列表中选择您的组织资源。
  3. 点击文件夹所在行,从项目和文件夹列表中选择文件夹。
  4. 点击行中的选项菜单(垂直省略号),然后点击移动
  5. 点击浏览,选择文件夹的目标移动文件夹。
  6. 点击移动

gcloud

要在组织资源下移动文件夹,请在 Google Cloud CLI 中运行以下命令:

gcloud resource-manager folders move [FOLDER_ID] \
  --organization=[PARENT_ID]

要将文件夹移动到另一个文件夹,请运行以下命令:

gcloud resource-manager folders move [FOLDER_ID] \
  --folder=[PARENT_ID]

替换以下内容:

  • [FOLDER_ID] 是要移动的文件夹的 ID。
  • [PARENT_ID] 是父级组织资源或文件夹的组织资源 ID 或文件夹 ID。

API

请求 JSON:

request_json= '{
   destinationParent: "folders/[DESTINATION_FOLDER_ID]"
}'

移动文件夹 curl 请求:

curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token} \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v3/folders/[DISPLAY_NAME]:move

替换以下内容:

  • [DESTINATION_FOLDER_ID] 是您要在其中移入另一个文件夹的文件夹的 ID,例如 98765
  • [DISPLAY_NAME] 是所移动文件夹的显示名,例如“My Awesome Folder”。

移动文件夹响应:

{
  "name": "operations/fm.1234567890",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
    "displayName": "[DISPLAY_NAME]",
    "operationType": "MOVE"
  }
}

获取操作 curl 请求:

curl -H "Authorization: Bearer ${bearer_token}" \
https://cloudresourcemanager.googleapis.com/v3/operations/fm.1234567890

获取操作响应:

{
  "name": "operations/fm.1234567890",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
    "displayName": "[DISPLAY_NAME]",
    "operationType": "MOVE"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.resourcemanager.v3.Folder",
    "name": "folders/12345",
    "parent": "folders/98765",
    "displayName": "[DISPLAY_NAME]",
    "lifecycleState": "ACTIVE",
    "createTime": "2017-07-19T23:29:26.018Z",
    "updateTime": "2017-07-20T00:54:44.295Z"
  }
}

查看或列出文件夹和项目

要查看或列出文件夹,您必须拥有组织查看者文件夹查看者角色。

要查看或列出文件夹和项目,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中,打开“管理资源”页面。

    打开“管理资源”页面

  2. 从页面顶部的项目选择器中,选择您的组织资源。必须先创建文件夹,然后它们才会显示在该列表中。

  3. 选择树形结构中的任意行,以执行特定于文件夹或项目的操作。

  4. 在搜索栏输入项目或文件夹名称/ID,对列表进行过滤。

gcloud

如需获取某个文件夹的详细信息,请使用 resource-manager folders describe 命令。

gcloud resource-manager folders describe FOLDER_ID

FOLDER_ID 替换为您要查看的文件夹的 ID。

如需列出组织资源的子文件夹,请使用 resource-manager folders list 命令。

gcloud resource-manager folders list \
  --organization ORGANIZATION_ID

ORGANIZATION_ID 替换为您要查看的子文件夹列表所属的组织资源的 ID。

如需列出文件夹资源的子文件夹,请使用 resource-manager folders list 命令。

gcloud resource-manager folders list \
  --folder FOLDER_ID

FOLDER_ID 替换为您要查看子文件夹列表所属的文件夹资源的 ID。

如需列出组织或文件夹资源或文件夹下的项目,请将 projects list 命令与 filter 参数搭配使用。

gcloud projects list \
  --filter=" parent.id: 'RESOURCE_ID' "

RESOURCE_ID 替换为您要查看其子项目列表的组织或文件夹资源的 ID。

API

获取文件夹的 curl 请求:

curl -X GET -H "Content-Type: application/json" \
  -H "Authorization: Bearer ${bearer_token}" \
  https://cloudresourcemanager.googleapis.com/v3/[FOLDER_NAME]

FOLDER_NAME 替换为文件夹的名称,例如 folders/123

列出文件夹的 curl 请求:

curl -X GET -H "Content-Type: application/json" \
  -H "Authorization: Bearer ${bearer_token}" \
  https://cloudresourcemanager.googleapis.com/v3/folders?parent=[PARENT_NAME]

PARENT_NAME 替换为您要在其中创建文件夹的父资源名称,例如 organizations/123folders/123

使用 Google Cloud CLI

gcloud resource-manager folders 命令组提供通过 gcloud 命令行工具与 Folders API 进行交互的命令。

创建

如需创建新文件夹,请使用 gcloud resource-manager folders create 与标志,标志用于设置文件夹的名称以及要在其中创建文件夹的组织资源或文件夹的 ID。

gcloud resource-manager folders create \
  --display-name="Super Fantastic Folder" \
  --organization=2518

Created Folder 245321.

查看

要查看文件夹,请使用 gcloud resource-manager folders describe 与要查看的文件夹的 ID。

gcloud resource-manager folders describe 245321
name: folders/245321
parent: organizations/2518
display_name: Super Fantastic Folder
lifecycle_state: ACTIVE
create_time: <timestamp info …>
update_time: <timestamp info …>

列出

要列出某个文件夹下的文件夹,请使用 gcloud resource-manager folders list,通过 --folder 标志传递文件夹 ID。此操作还可以使用 --organization 标志列出组织资源下的顶级文件夹。

gcloud resource-manager folders list --folder 245321
<table output showing the folders underneath the folder with the specified ID>

gcloud resource-manager folders list --organization 2518
<table output showing folders in this Organization but not in any folder>

如需在列表中添加已请求删除的文件夹,请添加标志 --show-deleted

gcloud beta resource-manager folders list --folder 245321 --show-deleted
<table output showing all the folders including the delete requested ones underneath the folder with the specified ID>

您可以使用 gcloud projects list 命令列出项目,通过 --filter 标志传递父级文件夹或组织资源 ID。

gcloud projects list --filter=" parent.id: '245321' "
<table output showing the projects underneath the resource with the specified ID>

如需详细了解权限和过滤器如何与列表命令互动,请参阅列出层次结构中的所有资源

如需搜索与指定查询匹配的文件夹,请使用 gcloud alpha resource-manager folders search,通过 --query 标志传递条件。搜索范围是用户拥有查看权限的所有文件夹。

gcloud alpha resource-manager folders search --query="name:vij*"
<table output showing the folders with names starting from vij eg. vijeta, vijay-folder>

gcloud alpha resource-manager folders search --query="state:DELETE_REQUESTED"
<table output showing folders for which delete has been requested>

您可以使用 gcloud folders search 命令显示用户拥有查看权限的所有文件夹。

gcloud folders search
<table output showing all viewable folders>

更新

您可以使用 gcloud resource-manager folders update 命令更新文件夹。目前只能更新文件夹的 display_name 字段。

gcloud resource-manager folders update \
  --display-name="Mega Incredible Folder" 245321
name: folders/245321
parent: organizations/2518
display_name: Mega Incredible Folder
lifecycle_state: ACTIVE
create_time: <timestamp info …>
update_time: <recent timestamp info …>

删除

您可以通过命令行删除和恢复删除文件夹。用户必须拥有文件夹管理员或文件夹编辑者角色才能获得文件夹删除权限。您只能删除空文件夹。

gcloud resource-manager folders delete 245321
name: folders/245321
parent: organizations/2518
display_name: Mega Incredible Folder
lifecycle_state: DELETE_REQUESTED
create_time: <timestamp info …>
update_time: <recent timestamp info …>

gcloud resource-manager folders undelete 245321
name: folders/245321
parent: organizations/2518
display_name: Mega Incredible Folder
lifecycle_state: ACTIVE
create_time: <timestamp info …>
update_time: <recent timestamp info …>

项目移动

您可以使用现有的 gcloud projects creategcloud projects move 命令在文件夹中创建项目并将项目移动到文件夹。您还可以使用 gcloud resource-manager folders move. 移动文件夹

gcloud projects create --folder=245321 fancy-folder-project
project_id: fancy-folder-project
project_number: 905283
parent:
  type: "folder"
  id: 245321
other fields …

gcloud projects move --folder=245321 soon-to-be-fancy-project
project_id: soon-to-be-fancy-project
project_number: 428714
parent:
  type: "folder"
  id: 245321
other fields …

长时间运行的操作

某些文件夹操作(如创建文件夹)可能需要较长时间才能完成。为了简化多任务处理,您可以通过一些文件夹命令异步执行不同操作。这些命令接受 --async 标志来启用异步行为,因此可以立即返回长时间运行的操作,无需等待操作完成。您可以使用 gcloud beta resource-manager operations describe 命令亲自轮询该操作。目前,只有 folders createfolders move 命令允许异步使用。

gcloud resource-manager folders create \
  --display-name="Awe-Inspiring Async Folder" \
  --organization=2518 \
  --async

name: operations/fc.8572
metadata:
  operation_type: CREATE
  display_name: Awe-Inspiring Async Folder
  destination_parent: organizations/2518
done: false

[wait for some time …]

gcloud beta resource-manager operations describe fc.8572
name: operations/fc.8572
metadata:
  operation_type: CREATE
  display_name: Awe-Inspiring Async Folder
  destination_parent: organizations/2518
done: true
response:
  name: folders/6428
  parent: organizations/2518
  display_name: Awe-Inspiring Async Folder
  lifecycle_state: ACTIVE
  create_time: <recent timestamp info …>
  update_time: <recent timestamp info …>