terraform config_error ai_generated true

Error: Invalid for_each argument: The "for_each" set includes values derived from resource attributes that cannot be determined until apply

ID: terraform/tf-for-each-error

Also available as: JSON · Markdown
80%Fix Rate
83%Confidence
90Evidence
2023-01-01First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
1 active

Root Cause

The for_each argument depends on values not known until apply, which Terraform requires at plan time.

generic

Workarounds

  1. 85% success Use input variables or data sources instead of computed resource attributes for the for_each key set
    Replace for_each = resource.x.ids with for_each = var.known_ids or for_each = toset(data.source.ids)

    Sources: https://developer.hashicorp.com/terraform/language/meta-arguments/for_each

  2. 78% success Use a two-stage apply with remote state to pass computed values
    First config outputs the computed set, second config reads it via terraform_remote_state data source

    Sources: https://developer.hashicorp.com/terraform/language/state/remote-state-data

Dead Ends

Common approaches that don't work:

  1. Convert for_each to count to solve the issue 80% fail

    count has the same restriction on unknown values and switching between count and for_each forces resource recreation

  2. Use depends_on to ensure the for_each source is computed first 85% fail

    depends_on controls execution order but does not make unknown values known at plan time

Error Chain

Leads to: