创建和管理文件夹

文件夹是 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. 创建文件夹。在规划如何整理 Cloud 资源时,我们建议您从单个文件夹开始作为沙盒,您可以在其中试验哪种层次结构最适合您的组织资源。根据资源和访问权限与配置政策连接点之间的隔离边界,考虑文件夹。您可以选择创建文件夹,以包含属于不同部门的资源,并针对文件夹分配管理员角色以委派管理员权限。文件夹还可用于对属于应用或不同环境的资源进行分组,如开发、生产、测试。请使用嵌套文件夹来对这些不同场景建模。

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

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

设置文件夹管理权限

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

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

要设置文件夹权限,请执行以下操作:

控制台

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

    打开“管理资源”页面

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

  3. 添加成员字段中,输入您的电子邮件地址。

  4. 选择角色下拉列表框中,转到 Resource Manager 类别,然后选择文件夹管理员角色。

  5. 点击添加以授予新角色。

gcloud

您可以使用 Google Cloud CLI 以编程方式创建文件夹。为此,请运行以下命令:

    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"
  }
}

在创建文件夹期间添加标签

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

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. 点击 Add(添加)。系统会显示一条通知,确认添加或更新成员的新角色。

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。

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

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 …>