创建和管理项目

Google Cloud 项目是执行下列操作的基础:创建、启用和使用所有 Google Cloud 服务,包括管理 API、启用结算功能、添加和移除协作者以及管理 Google Cloud 资源的权限。

本页介绍了如何使用 Cloud Resource Manager API 和 Google Cloud 控制台创建和管理 Google Cloud 项目。

准备工作

如需了解项目资源,请参阅资源层次结构概览。如需有关设置资源层次结构的指导,请参阅确定 Google Cloud 着陆区的资源层次结构

您可以使用以下内容来标识您的项目:

  • 项目名称:人类可读的项目名称。

    任何 Google API 都不会使用项目名称。您可以在项目创建期间或之后随时修改项目名称。项目名称不必具有唯一性。

  • 项目 ID:项目的全局唯一标识符。

    项目 ID 是一个唯一字符串,用于将您的项目与 GCP 中的所有其他项目区分开来。您输入项目名称后,Google Cloud 控制台会生成一个唯一的项目 ID,该 ID 可以是字母、数字和连字符的组合。我们建议您使用生成的项目 ID,但您也可以在项目创建期间对其进行修改。项目创建后,项目 ID 将永久保留。

    项目 ID 有以下要求:

    • 长度必须为 6 到 30 个字符。
    • 只能包含小写字母、数字和连字符。
    • 必须以字母开头。
    • 不得以连字符结尾。
    • 不得使用正在或以前使用过的项目 ID;这包括已删除的项目。
    • 不能包含受限字符串,例如 googlenullundefinedssl
  • 项目编号:系统为项目自动生成的唯一标识符。

请勿在项目名称、项目 ID 或其他资源名称中添加敏感信息,例如个人身份信息 (PII) 或安全数据。许多其他 Google Cloud 资源的名称中都使用了项目 ID,并且对项目或相关资源的任何引用都会公开项目 ID 和资源名称。

创建项目

您必须拥有 resourcemanager.projects.create 权限才能创建项目。此权限包含在 Project Creator 角色 (roles/resourcemanager.projectCreator) 等角色中。默认情况下,系统会向新组织资源的整个网域和免费试用用户授予 Project Creator 角色。如需了解如何向个人授予该角色以及如何限制组织资源范围的访问权限,请参阅管理默认组织角色页面。

如果您未指定父资源,则系统会根据用户账号的网域自动选择父资源(如果适用)。

您可以使用 Google Cloud 控制台、Google Cloud CLI 或 projects.create() 方法创建新项目。

控制台

如需创建新项目,请执行以下操作:

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

    转到“管理资源”

    其余步骤会显示在 Google Cloud 控制台中。

  2. 在页面顶部的选择组织下拉列表中,选择要在其中创建项目的组织资源。如果您使用的是免费试用版,请跳过此步骤,因为系统不会显示此列表。
  3. 点击创建项目
  4. 在显示的新建项目窗口中,输入项目名称并选择适用的结算账号。项目名称只能包含字母、数字、英文单引号、连字符、空格或英文感叹号,且长度必须介于 4 到 30 个字符之间。
  5. 位置框中输入父级组织或文件夹资源。该资源将是新项目的分层父级。如果可以选择无组织,那么您也可以选择该选项,将新项目作为其自身资源层次结构的顶层进行创建。
  6. 输入完新项目的详细信息后,点击创建

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. 如需创建新项目,请使用 gcloud projects create 命令:

    gcloud projects create PROJECT_ID
    

    其中 PROJECT_ID 是您要创建的项目的 ID。项目 ID 必须以小写字母开头,只能包含 ASCII 字母、数字和连字符,并且长度必须介于 6 到 30 个字符之间。

    如需创建以组织资源或文件夹作为父级的项目,请使用 --organization--folder 标志。由于一个资源只能有一个父级,因此您只能使用其中一个标志:

    gcloud projects create PROJECT_ID --organization=ORGANIZATION_ID
    
    gcloud projects create PROJECT_ID --folder=FOLDER_ID
    

API

使用 projects.create() 方法创建新项目时,您不能在项目 ID 中使用某些特定字词,一些示例包括 googlenullundefinedssl。如果您使用了限用词,请求将返回 INVALID_ARGUMENT 错误。

以下请求仅创建项目,不会将项目与结算账号自动关联。您可以使用 projects.updateBillingInfo 方法设置或更新与项目关联的结算账号。

创建项目请求:

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

{
    "projectId": "our-project-123",
    "name": "my project",
    "labels": {
      "mylabel": "prod"
    }
}

创建项目响应:

{
    "name": "operations/pc.123456789",
}

获取操作请求:

GET https://cloudresourcemanager.googleapis.com/v3/operations/pc.123456789
Authorization: *************
Content-Type: application/json

获取操作响应:

{
    "name": "operations/pc.123456789",
    "done": true,
    "response": {
        "@type": "type.googleapis.com/google.cloudresourcemanager.v3.Project",
        "projectNumber": "464036093014",
        "projectId": "our-project-123",
        "lifecycleState": "ACTIVE",
        "name": "my project",
        "labels": {
        "mylabel": "prod"
        },
    "createTime": "2016-01-07T21:59:43.314Z"
    }
}

在创建项目期间添加代码

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

gcloud

如需在创建项目期间添加标记,请运行以下命令:

gcloud projects create PROJECT_ID --organization=ORGANIZATION_ID --tags=KEY_VALUE_PAIRS

替换以下内容:

  • PROJECT_ID 是项目的唯一标识符。
  • 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

  {
    "projectId": "our-project-456",
    "name": "my project",
    "parent": "organizations/123",
    "tags": {
      "key": "123/environment"
      "value": "production"
    },
"tags": {
      "key": "123/costCenter"
      "value": "marketing"
  }
}

使用服务账号创建项目

您可以使用服务账号自动创建项目。与用户账号一样,您可以向服务账号授予在组织资源中创建项目的权限。使用服务账号时,您无法在组织资源外部创建项目,并且必须在创建项目时指定父资源。 服务账号可以使用 gcloud CLI 或 projects.create() 方法创建新项目。

管理项目配额

如果配额中的剩余项目少于 30 个,新建项目页面上将出现一条通知,显示配额中剩余的项目数量。达到项目数量上限后,您必须申请提高项目数量上限才能创建更多项目。或者,您也可以通过“管理资源”页面安排系统在 30 天后删除某些项目。 用户已软删除的项目会计入您的配额。这些项目将在 30 天后完全删除。

如需为组织配额中的项目申请额外容量,请执行以下操作:

  1. 前往配额和系统限制页面。

    进入“配额和系统限制”

  2. 在资源选择器中,选择要为其增加项目配额的组织。

  3. 过滤条件选项中,选择指标,然后输入 cloudresourcemanager.googleapis.com/projects_count

  4. 选择 Cloud Resource Manager API,点击 更多操作,然后选择 修改配额

  5. 配额更改对话框中,输入新的配额值和说明,然后点击下一步

  6. 输入您的详细联系信息,然后点击提交请求

您会收到一封电子邮件,确认收到您的请求。如果您需要进一步的帮助,请回复该电子邮件。审核完成后,您会收到一封电子邮件通知,告知您请求是否获得了批准。

如果您没有组织,但想为配额中的项目申请额外容量,请使用申请增加项目配额表单。

如需详细了解配额以及使用配额的原因,请参阅免费试用项目配额申请支持页面。如需详细了解结算报告,请参阅结算报告支持页面。

查找项目名称、编号和 ID

如要与 Google Cloud 资源交互,您必须为每个请求提供标识性的项目信息。项目由项目 ID 和项目编号标识。

  1. 前往 Google Cloud 控制台中的欢迎页面。

    前往“欢迎”页面

  2. 从页面顶部的项目选择器中,选择您的项目。

    项目名称、项目编号和项目 ID 显示在欢迎标题后面。

获取现有项目

您可以使用 Google Cloud CLI 或 projects.get() 方法获取现有项目。

如果您不是项目所有者,则必须拥有 Browser 角色 (roles/browser) 中包含的权限。

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. 如需获取项目的元数据,请使用 gcloud projects describe 命令:

    gcloud projects describe PROJECT_ID
    

    PROJECT_ID 替换为相应项目的 ID。

API

请求:

GET https://cloudresourcemanager.googleapis.com/v3/projects/<var>PROJECT_ID</var>

PROJECT_ID 替换为相应项目的 ID。

回答:

{
    "projectNumber": "464036093014",
    "projectId": "our-project-123",
    "lifecycleState": "ACTIVE",
    "name": "my project",
    "labels": {
        "mylabel": "prod"
    },
    "createTime": "2016-01-07T21:59:43.314Z"
}

列出资源下的所有项目

如需列出直接属于资源子项的所有项目,请使用 v3 projects.list 方法,并在查询中指定父资源:

请求:

GET https://cloudresourcemanager.googleapis.com/v3/projects

{
    "parent": "folders/662951040570"
}

响应:

{
    "projects": [
    {
        "name": "projects/951040570662",
        "parent": "folders/662951040570",
        "projectId": "tokyo-rain-123",
        "state": "ACTIVE",
        "displayName": "Tokyo Rain"
        "createTime": "2013-11-13T20:31:53.308Z"
        "updateTime": "2013-11-13T20:31:53.308Z"
        "etag": "BwWUlZ6XEfY="
    }
    ]
}

搜索项目

如需搜索与指定查询匹配的项目,请使用 gcloud alpha resource-manager projects search,并在 --query 标志中传递查询。搜索范围是用户拥有 projects.get 权限的所有项目。

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. 如需获取所有项目的列表,请使用 gcloud alpha projects search 命令:

    gcloud alpha projects search --query="displayName=rek*"
    <table output showing the projects with display names starting from rek eg. rekey-project-2, rekha-project>
    
    gcloud alpha projects search --query="state:DELETE_REQUESTED"
    <table output showing the projects for which delete has been requested>
    

API

您可以使用 projects.search 方法和查询字符串返回与过滤器匹配的特定项目资源。结果仅包含您已被授予 resourcemanager.projects.get 权限的项目。

以下代码段会返回显示名为“Tokyo Rain”的项目资源:

请求:

GET https://cloudresourcemanager.googleapis.com/v3/projects:search?query=displayName%3ATokyo%2BRain

响应:

{
  "projects": [
    {
      "name": "projects/951040570662",
      "parent": "folders/662951040570",
      "projectId": "tokyo-rain-123",
      "state": "ACTIVE",
      "displayName": "Tokyo Rain",
      "createTime": "2013-11-13T20:31:53.308Z",
      "updateTime": "2013-11-13T20:31:53.308Z",
      "etag": "BwWUlZ6XEfY="
    }
  ]
}

以下代码段会返回带有红色标签的所有项目资源:

请求:

GET https://cloudresourcemanager.googleapis.com/v3/projects:search?query=labels.color%3Ared

响应:

{
  "projects": [
    {
      "name": "projects/951054970012",
      "parent": "folders/662951040570",
      "projectId": "Osaka-rain-234",
      "state": "ACTIVE",
      "displayName": "Osaka Rain",
      "createTime": "2013-11-13T20:31:53.308Z",
      "updateTime": "2013-11-13T20:31:53.308Z",
      "etag": "BwWUlZ6XEfY=",
      "labels": {
        "color": "red"
      }
    }
  ]
}

如果您在请求正文中指定了 parent.typeparent.id 字段,则系统会对父级执行 resourcemanager.projects.list 权限检查。如果用户具有此权限,则在应用其余过滤条件后,系统将返回父级下的所有项目。

如果用户没有此权限,则在应用其余过滤条件后,系统将返回用户具有 resourcemanager.projects.get 权限的所有项目。

如果未指定过滤器,则调用将返回用户具有 resourcemanager.projects.get 权限的项目。

更新项目

您可以使用 Google Cloud 控制台或 projects.patch() 方法更新项目。

您只能更新项目名称和标签字段。 如需详细了解如何更新项目,请参阅项目 API 参考页面

如需在资源层次结构中移动项目,请参阅移动项目。如需将项目从一个组织资源迁移到另一个组织资源,请参阅迁移项目

控制台

如需使用 Google Cloud 控制台更新项目的名称或标签,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往“IAM 和管理”的设置页面。

    前往“IAM 和管理”设置

    其余步骤会显示在 Google Cloud 控制台中。

  2. 在屏幕顶部,点击项目选择下拉列表。
  3. 在出现的选择范围窗口中,点击组织下拉列表,然后选择您的组织。如果您是免费试用用户,请跳过此步骤,因为不会出现组织列表。
  4. 从显示的列表中选择您的项目。
  5. 如需更改项目名称,请修改项目名称,然后点击保存
  6. 如需更改标签,请点击左侧导航栏中的标签

    详细了解如何使用标签

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. 要更新项目名称,请使用 gcloud alpha projects update 命令:

    gcloud alpha projects update PROJECT_ID \
        --name=NAME \
        --update-labels=KEY=VALUE, ...
    

    其中:

    • PROJECT_ID 是您要更新的项目的 ID。

    • NAME 是您要为该项目指定的新名称。

    • KEY=VALUE, ...”是您要更新的标签的键值对列表。如果标签已存在,则会修改其值。如果不存在,则会创建新标签。

    如需详细了解此命令可使用的其他标志,请参阅 Google Cloud CLI SDK

API

如需更新项目,请执行以下操作:

以下示例将项目的显示名称更新为 myproject,并将 color 标签设置为 red

请求:

PATCH https://cloudresourcemanager.googleapis.com/v3/projects/PROJECT_NUMBER?updateMask=displayName,labels

其中,PROJECT_NUMBER 是您要更新的项目的数字 ID。

请求 JSON 正文:

{
  "displayName": "myproject",
  "labels": {
    "color": "red"
  }
}

回答:

{
  "projects": [
    {
      "name": "projects/951054970012",
      "parent": "folders/662951040570",
      "projectId": "Osaka-rain-234",
      "state": "ACTIVE",
      "displayName": "myproject",
      "createTime": "2013-11-13T20:31:53.308Z",
      "updateTime": "2013-11-13T20:35:42.308Z",
      "etag": "BwWUlZ6XEfY=",
      "labels": {
        "color": "red"
      }
    }
  ]
}

关停(删除)项目

您可以使用 Google Cloud 控制台或 API 中的 projects.delete 方法关停项目。如需通过这种方式关停项目,项目的生命周期状态必须为 ACTIVE

此方法会立即标记要删除的项目。系统会尽力向执行删除操作的用户以及重要联系人中列出的技术类别联系人发送电子邮件通知;如果通知未能发送,该项目仍会被标记为待删除。如果“技术”类别中没有联系人,则后备联系人不会收到通知。

您无法使用已标记为待删除的项目。如果该项目已与结算账号关联,那么这种关联会断开,并且在取消项目删除操作时不再恢复。30 天后,项目将被完全删除。在项目被完全删除之前,虽然不可用,但项目可能仍然可见。

如需在 30 天的期限内停止项目删除过程,请参阅恢复项目的步骤

30 天后,项目及其所有资源将被删除,无法恢复。项目在删除之前将计入您的项目配额。

为帮助确保您不会删除任何重要项目,您可以启用更改风险建议。如果您尝试删除 Google Cloud 已确定为重要项目的项目,更改风险建议会生成警告。

如果您为项目设置了结算功能,则在当前结算周期结束且系统成功向您的账号收取费用之前,可能无法完全删除该项目。 使用中服务的数量和类型也会影响系统永久删除项目的时间。如需详细了解数据保留和安全删除机制,请参阅 Google 如何保留收集的数据

关停项目

控制台

  1. 在 Google Cloud 控制台中,前往“IAM 和管理”的设置页面。

    前往“IAM 和管理”设置

    其余步骤会显示在 Google Cloud 控制台中。

  2. IAM 和管理设置页面上,选择要删除的项目,然后点击关停

    只有在当前项目中拥有 resourcemanager.projects.delete 权限的用户才能看到关闭

  3. 点击关闭
  4. 输入项目 ID,然后点击仍要关停

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. 如需删除项目,请使用 gcloud projects delete 命令:

    gcloud projects delete PROJECT_ID
    

    其中,PROJECT_ID 是您要删除的项目的 ID。

API

以下代码段将删除指定项目:

请求:

DELETE https://cloudresourcemanager.googleapis.com/v3/projects/my-project-123

排查项目删除问题

如果关停项目的过程失败,您可以在排查项目删除问题中找到更多信息。

恢复项目

项目所有者可以在自项目关闭之日算起的 30 天恢复期内恢复已删除的项目。恢复项目后,项目将回到关闭之前的状态,但存在以下例外情况:

  • 关闭项目后,项目的结算功能会停用,并且在恢复的项目中不会自动启用结算功能。项目恢复后,您必须手动重新关联 Cloud Billing 账号。您可能需要等待几个小时,才能将最近恢复的项目成功关联到结算账号。
  • 如果您在 30 天内恢复项目,则可以恢复大部分资源。
  • 某些服务的恢复存在延迟,您可能需要等待一段时间(最长 36 小时)才能恢复服务。
  • 某些资源(如 Cloud Storage 或 Pub/Sub 资源)会较快删除。即使您在 30 天的期限内恢复项目,这些资源也可能无法完全恢复。
  • 某些服务可能需要手动重启。如需了解详情,请参阅重启 Google Cloud 服务

您必须对要恢复的项目具有 resourcemanager.projects.undelete 权限。如需恢复项目,请执行以下操作:

控制台

如需在 Google Cloud 控制台中查看项目,您需要拥有以下权限:

  • resourcemanager.projects.list
  • resourcemanager.folders.list
  • resourcemanager.projects.get
  1. 前往 Google Cloud 控制台中的管理资源页面。

    转到“管理资源”页面

  2. 在页面顶部的项目选择器中,选择您的组织资源。

  3. 在组织资源、文件夹和项目列表下方,点击待删除的资源

  4. 勾选要恢复的项目对应的复选框,然后点击恢复。 在随即显示的对话框中,确认您要恢复该项目。

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. 如需恢复项目,请使用 gcloud projects undelete 命令:

    gcloud projects undelete PROJECT_ID
    

    PROJECT_ID 是您要恢复的项目的 ID 或编号。

API

以下代码段将恢复指定项目:

请求:

POST https://cloudresourcemanager.googleapis.com/v3/projects/my-project-123:undelete