【问题标题】:gcloud cli cannot create project - The project ID you specified is already in use by another projectgcloud cli 无法创建项目 - 您指定的项目 ID 已被另一个项目使用
【发布时间】:2019-03-04 19:24:21
【问题描述】:

我正在尝试设置 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. 使用我创建的用户在浏览器中登录 GCP 控制台
  3. 用户具有“组织管理员”角色
  4. 使用家用计算机上配置的 Cloud Shell 或 gcloud,我无法创建新项目。在这两种情况下(云外壳和本地 gcloud 安装),我都能成功执行“gcloud 项目列表”和“gcloud 组织列表”之类的操作
  5. 我已尝试使用符合格式要求的不同项目 ID 名称(例如 6-30 个字符、小写字母等)。我还可以确认项目 ID 不存在。
  6. 但是,我能够通过 GCP Web 控制台 (https://console.cloud.google.com) 成功创建项目(使用在 gcloud cli 中配置的相同 IAM 帐户)
  7. 我已多次尝试“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"
      }
    ]
  }
}
>

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

【问题讨论】:

  • gcloud 文档说“请注意,您不能重复使用已删除项目的项目 ID。”

标签: google-cloud-platform terraform gcloud terraform-provider-gcp


【解决方案1】:

项目 ID 在所有项目中都是唯一的。这意味着如果 任何 用户 曾经 有一个具有该 ID 的项目,则您不能使用它。 testproject 很常见,所以它已经被使用也就不足为奇了。

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

【讨论】:

    【解决方案2】:

    这是另一个链接,其中包含有关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.
    

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

    希望对您有所帮助。

    【讨论】:

      【解决方案3】:

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

      因此,您应该创建一个具有唯一 ID 的项目。

      【讨论】:

        【解决方案4】:

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

        然后你的 CLI 看起来像

        &gt; admin_@cloudshell:~/underperformance_notifications (PROJECT_ID)$

        【讨论】:

          【解决方案5】:

          我想我明白了。

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

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

          天啊。这里没有具体说明: gcloud docs

          【讨论】:

          • 这是不正确的。项目名称只需唯一。在末尾添加一些数字是尝试选择唯一项目名称的一种技术。只要您的项目名称是唯一的并且在长度/字符限制范围内并且不使用任何保留字(例如“google”),那么它就会被允许。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-12-07
          • 2019-12-21
          • 2019-03-06
          • 2020-07-22
          • 2017-08-14
          相关资源
          最近更新 更多