diff --git a/provisioner/terraform/resources.go b/provisioner/terraform/resources.go index cded02df4b4e7..026a1fbf89422 100644 --- a/provisioner/terraform/resources.go +++ b/provisioner/terraform/resources.go @@ -694,5 +694,21 @@ func orderedRichParametersResources(tfResourcesRichParameters []*tfjson.StateRes } } } + + // There's an edge case possible for us to have a parameter name that isn't + // present in the state, since the ordered names come statically from + // parsing the Terraform file. We need to filter out the nil values if there + // are any present. + if len(tfResourcesRichParameters) != len(orderedNames) { + nonNil := make([]*tfjson.StateResource, 0, len(ordered)) + for _, resource := range ordered { + if resource != nil { + nonNil = append(nonNil, resource) + } + } + + ordered = nonNil + } + return ordered }