Google Cloud 项目是执行下列操作的基础:创建、启用和使用所有 Google Cloud 服务,包括管理 API、启用结算功能、添加和移除协作者以及管理 Google Cloud 资源的权限。
本页面介绍了如何使用 Resource Manager API 和 Google Cloud Console 创建及管理 Google Cloud 项目。
准备工作
如需了解项目资源,请参阅资源层次结构概览。 如需项目结构方面的指导,请参阅企业组织最佳做法。
您可以使用以下内容来标识您的项目:
项目名称:人类可读的项目名称。
任何 Google API 都不会使用项目名称。您可以在项目创建期间或之后随时修改项目名称。项目名称不必具有唯一性。
项目 ID:项目的唯一标识符,用户可进行自定义。
项目 ID 是由用户分配的唯一 ID,可供 Google API 使用。如果您在项目创建期间未指定项目 ID,则系统会自动生成项目 ID。
项目 ID 必须是包含 6 到 30 个小写字母、数字或连字符的唯一字符串。它必须以字母开头,且不能以连字符结尾。项目 ID 一经创建便无法更改。 您不能重复使用正在使用的项目 ID 或已用于被删除项目的 ID。
系统不允许在项目 ID 中使用某些限用字词。如果您在项目名称中使用了限用字词,例如
google
或ssl
,则生成的项目 ID 不会包含这些字词。项目编号:系统为项目自动生成的唯一标识符。
项目编号和项目 ID 在 Google Cloud 中是唯一的。如果其他用户的项目使用了某个项目 ID,那么您将无法使用此相同项目 ID。已删除项目的 ID 不可重复使用。
选择项目 ID(或任何资源名称)时,请勿在名称中包含任何敏感信息。
创建项目
您必须拥有 resourcemanager.projects.create
权限才能创建项目。Project Creator roles/resourcemanager.projectCreator
角色拥有此权限;默认情况下,系统会向新组织的整个网域和使用免费试用版的用户授予该角色。如需了解如何向个人授予该角色以及如何限制组织范围的访问权限,请参阅管理默认组织角色页面。
如果您未指定父资源,则系统会根据用户帐号的网域自动选择父资源。
您可以使用 Cloud Console、gcloud
命令行工具或 projects.create()
方法创建新项目。
控制台
要创建新项目,请执行以下操作:
-
转到 Cloud Console 中的管理资源页面。
转到“管理资源”页面 - 在页面顶部的选择组织下拉列表中,选择要在其中创建项目的组织。如果您使用的是免费试用版,请跳过此步骤,因为系统不会显示此列表。
- 点击创建项目。
- 在显示的新建项目窗口中,输入项目名称并选择适用的结算帐号。项目名称只能包含字母、数字、英文单引号、连字符、空格或英文感叹号,且长度必须介于 4 到 30 个字符之间。
- 在位置框中输入父级组织或文件夹。该资源将是新项目的分层父级。
- 输入完新项目的详细信息后,点击创建。
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 中使用某些特定字词,例如 ssl
和 google
。如果您使用了限用词,请求将返回 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
...
from googleapiclient import discovery
from oauth2client.client import OAuth2Credentials as creds
crm = discovery.build(
'cloudresourcemanager', 'v1', http=creds.authorize(httplib2.Http()))
operation = crm.projects().create(
body={
'project_id': flags.projectId,
'name': 'my project'
}).execute()
...
使用服务帐号创建项目
您可以使用服务帐号自动创建项目。与用户帐号一样,您可以向服务帐号授予在组织中创建项目的权限。使用服务帐号时,您无法在组织外部创建项目,并且必须在创建项目时指定父资源。
服务帐号可以使用 gcloud
工具或 projects.create()
方法创建新项目。
管理项目配额
如果您配额中剩余的项目数量不到 30 个,新建项目页面会显示一条通知,其中说明您配额中剩余的项目数量。达到项目数量上限后,您必须申请提高项目数量上限才能创建更多项目。或者,您也可以通过“管理资源”页面安排系统在 30 天后删除某些项目。 用户已软删除的项目会计入您的配额。系统将在 30 天后完全删除这些项目。
如需为配额中的项目申请额外容量,请参阅申请增加结算配额支持页面。如需详细了解配额以及使用配额的原因,请参阅免费试用项目配额申请支持页面。如需详细了解结算报告,请参阅结算报告支持页面。
标识项目
如要与 Google Cloud 资源交互,您必须为每个请求提供标识性的项目信息。项目由项目 ID 和项目编号标识。
要获取项目 ID 和项目编号,请执行以下操作:
转到 Cloud Console 中的信息中心页面。
点击页面顶部的请选择:下拉列表。在随即显示的请选择:窗口中,选择您的项目。
项目信息中心的项目信息卡片会显示项目 ID 和项目编号:

在上例中,项目名称为 My Sample Project,项目 ID 为 my-sample-project-191923。
获取现有项目
您可以使用 Cloud Console 或 projects.get()
方法获取现有项目。
控制台
如需使用 Google Cloud Console 查看项目,请执行以下操作:
- 转到 Google Cloud Console 中的信息中心页面。
- 点击页面顶部的请选择:下拉列表。在随即显示的请选择:窗口中,选择您的项目。
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
...
from googleapiclient import discovery
from oauth2client.client import OAuth2Credentials as creds
crm = discovery.build(
'cloudresourcemanager', 'v1', http=creds.authorize(httplib2.Http()))
project = crm.projects().get(projectId=flags.projectId).execute()
...
列出项目
您可以使用 Cloud Console 或 projects.list()
方法列出您有权访问的所有项目。
控制台
如需使用 Google Cloud Console 列出项目,请执行以下操作:
- 转到 Cloud Console。
- 您的所有项目都会列在顶栏的项目下拉列表中。 您可以使用搜索项目和文件夹文本框对项目进行过滤。
- 如需列出您的所有项目,请点击管理资源。您可以使用按名称、ID 或标签过滤文本框对项目进行过滤。
gcloud
如需列出当前活跃帐号可访问的所有项目,请使用 gcloud projects list
命令:
gcloud projects list
该命令将针对您拥有 Owner、Editor 或 Viewer 权限的每个项目提供项目 ID、项目名称和项目编号。
您可以使用 --filter
标志来缩小结果范围。该标志会搜索项目 ID、项目名称和项目编号,然后仅返回含有过滤字词的结果:
gcloud projects list --filter=test
上面的命令将返回您拥有 Owner、Editor 或 Viewer 权限的所有项目,并且项目名称、项目 ID 或项目编号字段中会包含“test”一词。
如果您指定了同时包含 parent.type
和 parent.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.type
和 parent.id
字段,则系统会对父级执行 resourcemanager.projects.list
权限检查。如果用户具有此权限,则在应用其余过滤条件后,系统将返回父级下的所有项目。
如果用户没有此权限,则在应用其余过滤条件后,系统将返回用户具有 resourcemanager.projects.get
权限的所有项目。
如果未指定过滤条件,则调用将返回用户具有 resourcemanager.projects.get
权限的项目。
Python
...
from googleapiclient import discovery
from oauth2client.client import OAuth2Credentials as creds
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()
更新项目
您可以使用 Cloud Console 或 projects.update()
方法更新项目。
目前,您只能更新项目名称和标签字段。
您无法通过 gcloud
命令行工具或 API 请求来更改所使用的项目 ID 值。如需详细了解如何更新项目,请参阅项目 API 参考页面。
控制台
如需使用 Cloud Console 更新项目字段,请执行以下操作:
gcloud
要更新项目名称,请使用 gcloud alpha projects update
命令:
gcloud alpha projects update PROJECT_ID
--name=NAME
--update-labels=[KEY=VALUE, ...]
其中:
PROJECT_ID 是您要更新的项目的 ID。
NAME 是您要为该项目指定的新名称。
[KEY=VALUE, ...] 是您要更新的标签的键值对列表。如果标签已存在,则会修改其值。如果不存在,则会创建新标签。
如需详细了解此命令可使用的其他标志,请参阅 gcloud
命令行工具 SDK。
API
要更新项目,请执行以下操作:
- 使用
projects.get()
方法获取project
对象。 - 修改要更新的字段。
- 使用
projects.update()
方法更新project
对象。
以下代码段会将项目名称更新为“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
...
from googleapiclient import discovery
from oauth2client.client import OAuth2Credentials as creds
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()
...
关停(删除)项目
您可以使用 Cloud Console 或 projects.delete()
方法关停项目。如需通过这种方式关停项目,项目的生命周期状态必须为 ACTIVE
。
此方法会立即标记要删除的项目。您无法使用已标记为待删除的项目。如果该项目已与结算帐号关联,那么这种关联会断开并且不再恢复,即使立即取消项目删除操作也是如此。大约 30 天后,项目将被彻底删除。如需在 30 天的期限内停止此过程,请参阅恢复项目的步骤。
30 天后,项目及其所有资源将被删除,无法恢复。项目在删除之前将计入您的项目配额。
如果您为项目设置了结算功能,则在当前结算周期结束且系统成功向您的帐号收取费用之前,可能无法完全删除该项目。 使用中服务的数量和类型也会影响系统永久删除项目的时间。如需详细了解数据保留和安全删除机制,请参阅 Google 如何保留收集的数据。
您可以通过以下方式关停项目:
控制台
如需使用 Cloud Console 关停项目,请执行以下操作:
打开 Google Cloud 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
...
from googleapiclient import discovery
from oauth2client.client import OAuth2Credentials as creds
crm = discovery.build(
'cloudresourcemanager', 'v1', http=creds.authorize(httplib2.Http()))
project = crm.projects().delete(projectId=flags.projectId).execute()
...
排查项目删除问题
如果关停项目的过程失败,您可以在排查项目删除问题中找到更多信息。
恢复项目
项目所有者可以在自项目关闭之日算起的 30 天恢复期内恢复已删除的项目。恢复项目后,项目将回到关闭之前的状态。某些资源(例如 Cloud Storage 或 Pub/Sub 资源)将在 30 天的期限结束之前被删除,并且可能无法完全恢复。
某些服务可能需要手动重启。如需了解详情,请参阅重启 Google Cloud 服务。
您必须对要恢复的项目具有 resourcemanager.projects.undelete
权限。如需恢复项目,请执行以下操作:
控制台
要在 Cloud Console 中查看项目,您需要以下权限:
resourcemanager.projects.list
resourcemanager.folders.list
resourcemanager.projects.get
如需使用 Cloud Console 恢复项目,请执行以下操作:
转到 Google Cloud Console 中的管理资源页面。
在页面顶部的项目选择器中,选择您的组织。
在组织、文件夹和项目列表下方,点击待删除的资源。
勾选要恢复的项目对应的复选框,然后点击恢复。 在随即显示的对话框中,确认您要恢复该项目。
gcloud
如需恢复项目,请使用 gcloud projects undelete
命令:
gcloud projects undelete PROJECT_ID
其中 PROJECT_ID 是您要恢复的项目的 ID 或编号。
API
以下代码段将恢复指定项目:
请求:
POST
https://cloudresourcemanager.googleapis.com/v1/projects/my-project-123:undelete