terraform config_error ai_generated true

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

Also available as: JSON · Markdown · 中文
90%Fix Rate
85%Confidence
1Evidence
2024-01-25First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
Terraform v1.5.0 active — — —
Terraform v1.6.0 active — — —
Terraform v1.7.0 active — — —

Root Cause

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

generic

中文

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

Official Documentation

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

Workarounds

  1. 95% success 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.
    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. 90% success Use a single resource block with count or for_each if multiple instances are needed: `resource "aws_instance" "web" { count = 2 ... }`
    Use a single resource block with count or for_each if multiple instances are needed: `resource "aws_instance" "web" { count = 2 ... }`

中文步骤

  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 ... }`

Dead Ends

Common approaches that don't work:

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

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

  2. Rename the module call in the root module 75% fail

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

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

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