gcloud cli 无法创建项目 - 您指定的项目 ID 已被另一个项目使用

gcloud cli cannot create project - The project ID you specified is already in use by another project

我正在尝试设置 Terraform 以与 GCP 一起使用,但我在从 gcloud cli 创建新项目时遇到问题:Terraform Lab

我使用的命令是

gcloud projects create testproject

我反复遇到的错误是:

ERROR: (gcloud.projects.create) Project creation failed. The project ID you specified is already in use by another project. Please try an alternative ID.

这是我目前所做的:

  1. 我在 Cloud Identity
  2. 中创建了一个 "organization" 和一个用户
  3. 使用我创建的用户在浏览器中登录 GCP 控制台
  4. 用户有"Organization Administrator"角色
  5. 使用我家用电脑上配置的 Cloud Shell 或 gcloud,我无法创建新项目。在这两种情况下,我都能成功地完成 "gcloud projects list" 和 "gcloud organizations list" 之类的操作(云 shell 和本地 gcloud 安装)
  6. 我已经尝试使用符合格式要求的不同项目 ID 名称(例如 6-30 个字符、小写等)。我也可以确认项目 ID 不存在。
  7. 但是,我能够通过 GCP 网络控制台 (https://console.cloud.google.com) 成功创建项目(使用在 gcloud cli 中配置的相同 IAM 帐户)
  8. 我已尝试 "gcloud init" 几次以确保我使用的是正确的 IAM 帐户,以防万一。

这是我尝试从 "gcloud init" 命令创建新项目时遇到的错误:

Enter a Project ID. Note that a Project ID CANNOT be changed later.
Project IDs must be 6-30 characters (lowercase ASCII, digits, or
hyphens) in length and start with a lowercase letter. vincetest
WARNING: Project creation failed: HttpError accessing 
<https://cloudresourcemanager.googleapis.com/v1/projects?alt=json>: 
response: <{'status': '409', 'content-length': '268', 'x-xss
-protection': '1; mode=block', 'x-content-type-options': 'nosniff', 
'transfer-encoding': 'chunked', 'vary': 'Origin, X-Origin, Referer', 
'server': 'ESF', '-content-encoding': 'gzip',
 'cache-control': 'private', 'date': 'Fri, 28 Sep 2018 18:38:11 GMT', 
 'x-frame-options': 'SAMEORIGIN', 'content-type': 'application/json; 
 charset=UTF-8'}>, content <{
  "error": {
    "code": 409,
    "message": "Requested entity already exists",
    "status": "ALREADY_EXISTS",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ResourceInfo",
        "resourceName": "projects/vincetest"
      }
    ]
  }
}
>

从网页控制台创建项目工作正常。

我想我明白了。

项目 ID 后面必须跟一些数字:

gcloud projects create tf-admin-001 --name tf-admin --organization xxxx --set-as-default

哎呀。这里没有具体说明: gcloud docs

项目 ID 在所有项目中都是唯一的。这意味着如果 any 用户 ever 有一个具有该 ID 的项目,您将无法使用它。 testproject 很常见,所以它已经被占用也就不足为奇了。

尝试使用更独特的 ID。一种常见的技术是使用您组织的名称作为前缀。

这是另一个 link,其中包含有关 creating projects 的更多信息。 有关如何在控制台、gcloud、API 和 Python.

中执行此操作的详细信息

出现的另一个问题:验证您在调用命令时使用的是正确的帐户:

gcloud auth list

如果您尝试使用以下方法检查项目是否存在:

gcloud projects describe project-name

在您尝试像 post 中那样创建它之前。问题是,如果您无权使用它,无论它是否存在,您都会遇到同样的错误。

User [user@domain.tld] does not have permission to access project [project-name] (or it may not exist): User is not authorized.

我什至尝试创建一个与另一个不相关组织中的项目同名的新项目。关键似乎是添加任何字母或数字以使其与众不同。

希望对您有所帮助。

Google云收集全球所有与GCP相关的项目(google云平台)

So you should create a project with a unique ID.

要使用 Cloudshell 设置您的 Cloud Platform 项目,请使用:gcloud config set project [PROJECT_ID] 将 [PROJECT_ID] 替换为您的项目名称。

然后你的 CLI 看起来像

> admin_@cloudshell:~/underperformance_notifications (PROJECT_ID)$