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
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.
官方文档
https://developer.hashicorp.com/terraform/language/resources/syntax解决方案
-
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.
-
Use a single resource block with count or for_each if multiple instances are needed: `resource "aws_instance" "web" { count = 2 ... }`
无效尝试
常见但无效的做法:
-
Add count or for_each to the duplicate resource block
85% 失败
Count/for_each creates multiple instances but doesn't resolve duplicate block definitions.
-
Rename the module call in the root module
75% 失败
The duplicate is within the same module, not at the call site.
-
Delete the .terraform directory and re-run init
90% 失败
The config file itself has duplicates; init doesn't fix config errors.