terraform config_error ai_generated true

错误:重复的资源 "aws_instance" 配置:地址为 "module.ec2.aws_instance.web" 的资源已存在

Error: Duplicate resource "aws_instance" configuration: a resource with the address "module.ec2.aws_instance.web" already exists

ID: terraform/duplicate-resource-name-in-module

其他格式: JSON · Markdown 中文 · English
90%修复率
85%置信度
1证据数
2024-01-25首次发现

版本兼容性

版本状态引入弃用备注
Terraform v1.5.0 active
Terraform v1.6.0 active
Terraform v1.7.0 active

根因分析

同一模块中存在两个或更多具有相同资源类型和名称的资源块,导致重复定义。

English

Two or more resource blocks with the same resource type and name exist within the same module, causing a duplicate definition.

generic

官方文档

https://developer.hashicorp.com/terraform/language/resources/syntax

解决方案

  1. Remove or rename one of the duplicate resource blocks in the module configuration file. For example, change `resource "aws_instance" "web"` to `resource "aws_instance" "web2"` and update references.
  2. Use a single resource block with count or for_each if multiple instances are needed: `resource "aws_instance" "web" { count = 2 ... }`

无效尝试

常见但无效的做法:

  1. Add count or for_each to the duplicate resource block 85% 失败

    Count/for_each creates multiple instances but doesn't resolve duplicate block definitions.

  2. Rename the module call in the root module 75% 失败

    The duplicate is within the same module, not at the call site.

  3. Delete the .terraform directory and re-run init 90% 失败

    The config file itself has duplicates; init doesn't fix config errors.