diff --git a/internal/terraform/node_resource_plan.go b/internal/terraform/node_resource_plan.go index cc103b2a82..e7ea285938 100644 --- a/internal/terraform/node_resource_plan.go +++ b/internal/terraform/node_resource_plan.go @@ -185,6 +185,8 @@ func (n *nodeExpandPlannableResource) expandResourceImports(ctx EvalContext, all return knownImports, unknownImports, diags } + diags = diags.Append(validateImportTargetExpansion(n.Config, to, imp.Config.To)) + importID, evalDiags := evaluateImportIdExpression(imp.Config.ID, ctx, EvalDataForNoInstanceKey, allowUnknown) diags = diags.Append(evalDiags) if diags.HasErrors() { @@ -242,6 +244,8 @@ func (n *nodeExpandPlannableResource) expandResourceImports(ctx EvalContext, all return knownImports, unknownImports, diags } + diags = diags.Append(validateImportTargetExpansion(n.Config, res, imp.Config.To)) + importID, evalDiags := evaluateImportIdExpression(imp.Config.ID, ctx, keyData, allowUnknown) diags = diags.Append(evalDiags) if diags.HasErrors() { diff --git a/internal/terraform/node_resource_validate.go b/internal/terraform/node_resource_validate.go index 352f2b07d6..fcf808edf6 100644 --- a/internal/terraform/node_resource_validate.go +++ b/internal/terraform/node_resource_validate.go @@ -572,7 +572,7 @@ func (n *NodeValidatableResource) validateImportTargets(ctx EvalContext) tfdiags if diags.HasErrors() { return diags } - diags = diags.Append(n.validateImportTargetExpansion(to, imp.Config.To)) + diags = diags.Append(validateImportTargetExpansion(n.Config, to, imp.Config.To)) if diags.HasErrors() { return diags } @@ -591,7 +591,7 @@ func (n *NodeValidatableResource) validateImportTargets(ctx EvalContext) tfdiags return diags } - diags = diags.Append(n.validateImportTargetExpansion(to, imp.Config.To)) + diags = diags.Append(validateImportTargetExpansion(n.Config, to, imp.Config.To)) if diags.HasErrors() { return diags } @@ -608,11 +608,11 @@ func (n *NodeValidatableResource) validateImportTargets(ctx EvalContext) tfdiags } // validateImportTargetExpansion ensures that the To address key and resource expansion mode both agree. -func (n *NodeValidatableResource) validateImportTargetExpansion(to addrs.AbsResourceInstance, toExpr hcl.Expression) tfdiags.Diagnostics { +func validateImportTargetExpansion(cfg *configs.Resource, to addrs.AbsResourceInstance, toExpr hcl.Expression) tfdiags.Diagnostics { var diags tfdiags.Diagnostics - forEach := n.Config != nil && n.Config.ForEach != nil - count := n.Config != nil && n.Config.Count != nil + forEach := cfg != nil && cfg.ForEach != nil + count := cfg != nil && cfg.Count != nil switch to.Resource.Key.(type) { case addrs.StringKey: