首页 > 解决方案 > 创建 API 网关资源的 Terraform 错误抱怨具有相同父级的另一个资源已经具有此名称

问题描述

我正在创建一个名为“lang”的 API Gateway 资源:

resource "aws_api_gateway_resource" "lang" {
  path_part   = "lang"
  parent_id   = aws_api_gateway_resource.api.id
  rest_api_id = aws_api_gateway_rest_api.root_api.id
}

成功创建 API 后,在terraform apply后续运行时,出现此错误:

Error: Error creating API Gateway Resource: ConflictException: Another resource with the same parent already has this name: lang

上面的资源块绝对是唯一一个具有该名称的资源块。我已经对此进行了足够的搜索,以意识到 terraform 抱怨称为“lang”的资源已经存在并且无法重新创建。我不知道如何首先将其销毁。

我尝试将其添加到我的脚本中:

resource "aws_api_gateway_deployment" "deployment" {
  rest_api_id   = aws_api_gateway_rest_api.root_api.id
  stage_name    = var.envName
  
  triggers = {
    redeployment = sha1(jsonencode(aws_api_gateway_rest_api.root_api.body))
  }

  lifecycle {
    create_before_destroy = true
  }
}

……无济于事。

该属性是否应该create_before_destroy本质上不破坏 API 并导致它被重新创建或只是舞台?

如果资源块无法更改“lang”资源,我该如何更改?这对我来说似乎是一个基本的循环问题。

标签: terraformaws-api-gatewayterraform-provider-aws

解决方案


令人讨厌的是,这是一个深夜的错字...

我(故意)复制粘贴了该resource "aws_api_gateway_resource" "lang"块,并且在为自己的目的浏览和更新所有副本时忘记重命名副本。


推荐阅读