pulumi/pulumi · error

resources file reference %q: %w

Error message

resources file reference %q: %w

What it means

For each resources-file reference, resourceReferenceProviderState locates the owning provider's state. If that helper fails, the error is wrapped as "resources file reference %q: ...". This is a wrapping boundary — the cause (e.g. missing provider for the resource's package) is in the wrapped error.

Source

Thrown at pkg/cmd/pulumi/do/do_resource_upsert.go:589

	for name, rawURN := range resources {
		urn := resource.URN(rawURN)
		state, ok := statesByURN[urn]
		if !ok {
			return nil, fmt.Errorf("resources file references %q as %s, but that resource was not found in the stack", name, urn)
		}

		typ := state.Type
		pkg := typ.Package()
		if sdkproviders.IsProviderType(typ) {
			pkg = sdkproviders.GetProviderPackage(typ)
		}
		packageReq := &codegenrpc.GetSchemaRequest{
			Package: string(pkg),
		}

		providerState, err := resourceReferenceProviderState(state, providersByRef)
		if err != nil {
			return nil, fmt.Errorf("resources file reference %q: %w", name, err)
		}
		if providerState != nil {
			providerPackage := sdkproviders.GetProviderPackage(providerState.Type)
			schemaPackage, err := deployproviders.GetProviderName(providerPackage, providerState.Inputs)
			if err != nil {
				return nil, fmt.Errorf("resources file reference %q: get provider name: %w", name, err)
			}
			packageReq.Package = string(schemaPackage)

			version, err := deployproviders.GetProviderVersion(providerState.Inputs)
			if err != nil {
				return nil, fmt.Errorf("resources file reference %q: get provider version: %w", name, err)
			}
			if version != nil {
				packageReq.Version = version.String()
			}

			downloadURL, err := deployproviders.GetProviderDownloadURL(providerState.Inputs)

View on GitHub (pinned to 793f7b2e16)

Solutions

  1. Read the wrapped cause and run `pulumi refresh`/`pulumi up` to recreate missing provider resources in the stack.
  2. Check `pulumi stack export` for provider resources of the referenced resource's package; re-import state if missing.
  3. Regenerate the resources file excluding resources whose providers cannot be resolved, then address them individually.
Defensive patterns

Strategy: try-catch

Validate before calling

for _, r := range exported.Resources {
  if isProviderType(r.Type) { providerPkgs[r.Type.Package()] = true }
}
for name, urn := range refs {
  pkg := resource.URN(urn).Type().Package()
  if !providerPkgs[pkg] {
    return fmt.Errorf("reference %q needs a %s provider that is missing from the stack", name, pkg)
  }
}

Prevention

When it happens

Trigger: A referenced resource's provider state cannot be resolved — e.g. the resource depends on a provider that is absent from providersByRef because the snapshot lacks the provider resource, or provider/dependency linkage is inconsistent.

Common situations: Stack state missing provider resources after partial destroy or manual state surgery; resources referencing a provider configured in a different stack/project.

Related errors


AI-assisted analysis of pulumi/pulumi@793f7b2e16 (2026-08-31). Data as JSON: /api/errors/7356e44d848acb1e. Report an issue: GitHub.