【问题标题】:Google Cloud platform terraform/terragrunt googleapi: Error 409: Requested entity already exist谷歌云平台 terraform/terragrunt googleapi:错误 409:请求的实体已存在
【发布时间】:2021-12-23 00:39:18
【问题描述】:

我在尝试将代码推送到我们的 gcp 存储库时遇到了一个奇怪的问题。它失败并出现以下错误“googleapi:错误 409:请求的实体已经存在,已经存在”并且它指的是已经存在的项目()这仅在我删除另一个不再需要的项目或将 .bck 添加到terragrunt.hcl 文件。这些项目之间没有任何依赖关系。

terraform {
source = "../../../modules//project/"
}

include {
 path = find_in_parent_folders("org.hcl")
}

dependency "folder" {
config_path = "../"

 # Configure mock outputs for the terraform commands that are returned when there are no 
 outputs available (e.g the
# module hasn't been applied yet.
mock_outputs_allowed_terraform_commands = ["plan", "validate"]
mock_outputs = {
folder_id = "folder-not-created-yet"
}
}

inputs = {
project_name       = "<pimsstest-project>"
folder_id          = dependency.folder.outputs.folder_created # Test folder id
is_service_project = true

代码推送将失败,VS 代码中的结构如下:

但是这样就成功了

添加一些背景。 Pimsstest 曾经存在于 org 下的生产文件夹中,我通过简单的剪切和粘贴以及重新推送代码将其移动到通过 vs 代码进行测试。然后我从控制台中删除了该项目,因为它仍然存在于生产中。我无法弄清楚为什么删除另一个项目会在 pimsstest 上标记此现有错误消息。这对我来说没有任何意义。

【问题讨论】:

  • 您有多少个 GCP 存储库?一个适用于所有项目,每个项目都有自己的?当您删除旧项目时,此错误 409 开始发生?如果您更改名称会发生​​什么,您将能够推送它?你能改写你的整个场景吗? Pimmstest 在生产文件夹中,然后被移动到测试文件夹,推送此代码然后删除此测试?
  • 您好,我们在一个组织下有 3 个文件夹 - 生产、测试​​和研发。我们发现在错误的文件夹(生产)中创建了一个项目(pimsstest),因此我将其移至测试并通过 vs 代码推出更改。在测试中,我们还有一个不再需要的旧数据流项目,所以我最初只是通过将 .bck 添加到所有 terragrunt 文件来阻止它。当我重新推送它时,它失败了,并且云构建日志告诉我 pimsstest 已经存在?
  • 如果我从数据流项目中删除 .bck 以使其再次生效并重新推送,错误就会消失。我很困惑为什么删除一个不相关的项目会对我之前从另一个文件夹移动的另一个项目产生这种连锁反应

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


【解决方案1】:

在 GCP 中,一个项目 ID 只能存在一次。删除后,它可能不会立即再次可用(它将始终处于“已计划删除”状态 - 您应该会收到一封电子邮件,其中包含计划操作的详细信息)。错误消息实际上试图告诉的可能是:

错误 409:请求的实体已经仍然存在。

理论上(即使不太可能,当名称足够独特时),任何其他客户都可以同时抢夺该名称 - 在这种情况下,错误消息可以从字面上理解。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    • 2020-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多