创建和管理项目

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

本页面介绍如何使用 Resource Manager API 和 Google Cloud Platform Console 创建和管理 GCP 项目。

准备工作

如需了解项目资源,请参阅资源层次结构概览

创建项目

要创建项目,您必须具有 resourcemanager.projects.create 权限。项目创建者 roles/resourcemanager.projectCreator 角色拥有此权限,默认情况下,系统会向新组织的整个网域和免费试用的用户授予该角色。如需了解如何向个人授予该角色并限制组织范围内的访问权限,请参阅管理默认组织角色页面。

您可以使用 GCP Console 或 projects.create() 方法创建新项目。

Console

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

  1. 转到 GCP Console 中的管理资源页面。
    转到“管理资源”页面
  2. 在页面顶部的选择组织下拉列表中,选择要在其中创建项目的组织。如果您目前在免费试用,请跳过此步骤,因为系统不会显示此列表。
  3. 点击创建项目
  4. 在显示的新建项目窗口中,输入项目名称并选择适用的结算帐号。
  5. 如果要将项目添加到文件夹,请在位置框中输入文件夹名称。
  6. 输入完新项目的详细信息后,点击创建

gcloud

要创建新项目,请使用 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 中使用某些单词,例如 sslgoogle。如果您使用限制词,请求将返回 INVALID_ARGUMENT 错误。

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

创建项目请求:

POST https://cloudresourcemanager.googleapis.com/v1/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/v1/operations/pc.123456789
Authorization: *************
Content-Type: application/json

获取操作响应:

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

PYTHON

...
crm = discovery.build(
    'cloudresourcemanager', 'v1', http=creds.authorize(httplib2.Http()))

operation = crm.projects().create(
body={
    'project_id': flags.projectId,
    'name': 'my project'
}).execute()

...

管理项目配额

如果配额中的剩余项目少于 30 个,新建项目页面上将出现一条通知,显示配额中剩余的项目数量。用户已软删除的项目将计入配额,直到那些项目在 30 天后完全删除。

如需为配额中的项目申请额外容量,请参阅申请增加结算配额支持页面。如需详细了解配额以及使用原因,请参阅免费试用项目配额申请支持页面。

识别项目

要与 GCP 资源交互,您必须为每个请求提供具有辨识性的项目信息。您可以通过下列方式标识项目:

  • 项目名称:创建项目时,或者当您激活要求您创建项目 ID 的 API 时,您所选择的自定义名称。请注意,不能重复使用已删除项目的项目名称。
  • 项目 ID:项目的唯一标识符,由项目名称和随机分配的编号组成。
  • 项目编号:由服务器自动生成并分配给项目的编号。

要获取项目 ID 和项目编号,请执行以下操作:

  1. 转到 GCP Console 中的信息中心页面

    转到“信息中心”页面

  2. 点击页面顶部的选择项目下拉列表。在出现的选择项目窗口中,选择您的项目。

项目 ID 和项目编号显示在项目信息中心的项目信息卡片上:

项目 ID 与项目名称不同。项目名称是人类可读的,用于识别项目,但任何 Google API 不会使用项目名称。在上面的例子中,项目名称是 My Sample Project,项目 ID 是 my-sample-project-191923

项目 ID 根据您在 Google Cloud Platform Console 中创建项目时输入的项目名称生成。项目 ID 禁止使用某些单词。如果您在项目名称中使用限制词,如 googlessl,则生成的项目 ID 将不包括这些单词。这不会影响项目名称。

项目编号和项目 ID 在 Google Cloud Platform 中是唯一的。如果其他用户拥有一个用于其项目的项目 ID,则您不能使用相同的项目 ID。

选择项目 ID(或任何资源名称)时,请勿在名称中包含任何敏感信息。

获取现有项目

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

Console

要使用 Google Cloud Platform Console 查看项目,请执行以下操作:

  1. 转到 Google Cloud Platform Console 中的信息中心页面。

    转到“信息中心”页面

  2. 点击页面顶部的选择项目下拉列表。在出现的选择项目窗口中,选择您的项目。

gcloud

要获取项目的元数据,请使用 gcloud projects describe 命令:

gcloud projects describe PROJECT_ID

其中 PROJECT_ID 是您要查看的项目的 ID。

API

请求:

GET
https://cloudresourcemanager.googleapis.com/v1beta1/projects/our-project-123

响应:

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

PYTHON

...
crm = discovery.build(
    'cloudresourcemanager', 'v1', http=creds.authorize(httplib2.Http()))

project = crm.projects().get(projectId=flags.projectId).execute()

...

列出项目

您可以使用 GCP Console 或 projects.list() 方法列出您有权访问的所有项目。

Console

要使用 Google Cloud Platform Console 列出项目,请执行以下操作:

  • 转到 GCP Console。

    转到 GCP Console

  • 您的所有项目都列在顶栏的项目下拉列表中。使用搜索项目和文件夹文本框对项目进行过滤。
  • 要列出您的所有项目,请点击管理资源。使用按名称、ID 或标签过滤文本框对项目进行过滤。

gcloud

要列出当前活跃帐号可访问的所有项目,请使用 gcloud projects list 命令:

gcloud projects list

该命令将为您拥有所有者、编辑者或查看者权限的每个项目提供项目 ID、名称和项目编号。

您可以使用 --filter 标志来缩小结果的范围。该标志会搜索项目 ID、名称和项目编号,仅返回过滤后搜索词存在的结果:

gcloud projects list --filter=test

上面的命令将返回您拥有 Owner、Editor 或 Viewer 权限的所有项目,并且名称、项目 ID 或项目编号字段中包含单词“test”。

如果指定同时包含 parent.typeparent.id 字段的过滤条件,会检查父项上的 resourcemanager.projects.list 权限。如果用户具有此权限,在应用其余过滤条件后,将返回父项下的所有项目。

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

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

如需详细了解过滤条件语法,请参阅 gcloud topic filters

API

您可以在请求正文中包含相应字段,以返回与过滤条件匹配且已被授予 Owner、Editor 或 Viewer 角色的特定项目资源。

以下代码段会返回名为“project a”的项目资源:

请求:

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

{
    "name": "project a"
}

响应:

{
    "projects": [
    {
        "projectNumber": "951040570662",
        "projectId": "google.com:api-project-951040570662",
        "lifecycleState": "ACTIVE",
        "name": "project a",
        "createTime": "2013-11-13T20:31:53.308Z"
    }
    ]
}

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

请求:

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

{
    "labels": {
    "color": "red"
    }
}

响应:

{
    "projects": [
    {
        "projectNumber": "350831539566",
        "projectId": "my-project-b",
        "lifecycleState": "ACTIVE",
        "name": "project b",
        "labels": {
            "color": "red"
        },
        "createTime": "2012-02-18T23:11:57.831Z"
    }
    ]
}

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

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

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

PYTHON

...
crm = discovery.build(
    'cloudresourcemanager', 'v1', http=creds.authorize(httplib2.Http()))

filter = "name:project a"
projects = crm.projects().list(filter=filter).execute()

...

以下代码段将列出带有红色标签的所有项目:

filter = 'labels.color:red'
projects = crm.projects().list(filter=filter).execute()

更新项目

您可以使用 GCP Console 或 projects.update() 方法更新项目。目前只能更新项目名称和标签字段。您不能使用 gcloud 命令行工具或 API 请求更改您所使用的项目 ID 值。如需详细了解如何更新项目,请参阅项目 API 参考页面

Console

要使用 GCP Console 更新项目的字段,请执行以下操作:

  • 在 Google Cloud Platform Console 中打开“设置”页面。

    打开“设置”页面

  • 在屏幕顶部,点击项目选择下拉列表。
  • 在出现的选择范围窗口中,点击组织下拉列表,然后选择您的组织。
  • 从显示的列表中选择您的项目。
  • 要更改项目名称,请修改项目名称,然后点击保存
  • 要更改标签,请点击左侧导航栏中的标签。详细了解如何使用标签

gcloud

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

gcloud projects update PROJECT_ID --name=NAME

其中 PROJECT_ID 是您要更新的项目的 ID,NAME 是您要分配给项目的新名称。

API

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

以下代码段将项目名称更新为“myproject”:

请求:

    PUT https://cloudresourcemanager.googleapis.com/v1beta1/projects/my-project-123
    {
        "name": "myproject"
    }

响应:

    {
        "projects": [
        {
            "projectNumber": "951040570662",
            "projectId": "my-project-123",
            "lifecycleState": "ACTIVE",
            "name": "myproject",
            "createTime": "2013-11-13T20:31:53.308Z"
        }
        ]
    }

PYTHON

...
crm = discovery.build(
    'cloudresourcemanager', 'v1', http=creds.authorize(httplib2.Http()))

project = crm.projects().get(projectId=flags.projectId).execute()
project['name'] = 'myproject'
project = crm.projects().update(
projectId=flags.projectId, body=project).execute()

...

关闭(删除)项目

您可以使用 GCP Console 或 projects.delete() 方法关停项目。

该方法会立即标记要删除的项目,并向项目所有者发送通知电子邮件。已标记为删除的项目不可用。大约 30 天后,项目将彻底删除。要在 30 天内停止此过程,请参阅恢复项目的步骤

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

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

要关闭项目,请确保以下事项:

  • 项目不得关联结算帐号。
  • 项目的生命周期状态必须为 ACTIVE

Console

要使用 GCP Console 关闭项目,请执行以下操作:

  • 在 Google Cloud Platform Console 中打开“设置”页面(位于 IAM 和管理员下方)。

    打开“设置”页面

  • 点击选择项目

  • 选择要删除的项目,然后点击打开

  • 点击关闭

  • 输入项目 ID,然后点击关闭

gcloud

要删除项目,请使用 gcloud projects delete 命令:

gcloud projects delete PROJECT_ID

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

API

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

请求:

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

PYTHON

...
crm = discovery.build(
    'cloudresourcemanager', 'v1', http=creds.authorize(httplib2.Http()))

project = crm.projects().delete(projectId=flags.projectId).execute()

...

恢复项目

项目所有者可以在自项目关闭之日算起的 30 天恢复期内恢复已删除的项目。恢复项目后,项目将回到关闭之前的状态。Cloud Storage 资源在 30 天期限结束之前便会被删除,可能无法完全恢复。

某些服务可能需要手动重启。如需了解详情,请参阅重启 Google Cloud Platform 服务

要恢复项目,请执行以下操作:

  1. 转到 Google Cloud Platform Console 中的管理资源页面。

    转到“管理资源”页面

  2. 在左上角的组织下拉列表中,选择您的组织。

  3. 在项目列表下方,点击待删除的资源

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

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Resource Manager 文档