hashicorp/packer · error

error retrieving channel from HCP Packer Registry: %s

Error message

error retrieving channel from HCP Packer Registry: %s

What it means

Returned by the hcp-packer-artifact datasource when cli.GetChannel() fails while resolving channel_name against the HCP Packer Registry. The wrapped err.Error() is included, so the real cause (404 channel not found, auth failure, network error) is visible. Execute() returns a null cty value and the Packer build stops.

Source

Thrown at datasource/hcp-packer-artifact/data.go:189

		)

		version, err = cli.GetVersion(ctx, d.config.BucketName, d.config.VersionFingerprint)
		if err != nil {
			return cty.NullVal(cty.EmptyObject), fmt.Errorf(
				"error retrieving version from HCP Packer Registry: %s", err,
			)
		}
	} else {
		log.Printf(
			"[INFO] Reading info from HCP Packer Registry (%s) "+
				"[project_id=%s, organization_id=%s, channel=%s]",
			d.config.BucketName, cli.ProjectID, cli.OrganizationID, d.config.ChannelName,
		)

		var channel *hcpPackerModels.HashicorpCloudPacker20230101Channel
		channel, err = cli.GetChannel(ctx, d.config.BucketName, d.config.ChannelName)
		if err != nil {
			return cty.NullVal(cty.EmptyObject), fmt.Errorf(
				"error retrieving channel from HCP Packer Registry: %s", err.Error(),
			)
		}

		if channel.Version == nil {
			return cty.NullVal(cty.EmptyObject), fmt.Errorf(
				"there is no version associated with the channel %s", d.config.ChannelName,
			)
		}
		channelID = channel.ID
		version = channel.Version
	}

	if *version.Status == hcpPackerModels.HashicorpCloudPacker20230101VersionStatusVERSIONREVOKED {
		return cty.NullVal(cty.EmptyObject), fmt.Errorf(
			"the version %s is revoked and can not be used on Packer builds", version.ID,
		)
	}

View on GitHub (pinned to eb36e3c3e4)

Solutions

  1. Verify the channel exists in the bucket in the HCP Packer UI and the name matches exactly (case-sensitive).
  2. Confirm bucket_name and the HCP project/organization bound to your credentials are correct.
  3. Ensure HCP_CLIENT_ID and HCP_CLIENT_SECRET are present and valid.
  4. Retry on transient network/5xx errors; check status.cloud.hashicorp.com for outages.

Example fix

// before
data "hcp-packer-artifact" "foo" {
  bucket_name = "my-bucket"
  channel_name = "prod" # channel is actually named "production"
}
// after
data "hcp-packer-artifact" "foo" {
  bucket_name = "my-bucket"
  channel_name = "production"
}
Defensive patterns

Strategy: validation

Validate before calling

func validateArtifactDatasource(bucket, channel string) error {
    if channel == "" {
        return fmt.Errorf("channel_name required when version_fingerprint is not used")
    }
    if bucket == "" {
        return fmt.Errorf("bucket_name required")
    }
    return nil
}

Try / catch

try {
  packer build template.pkr.hcl
} catch (err) {
  if (String(err).includes("error retrieving channel from HCP Packer Registry")) {
    console.error("Channel/bucket mismatch or HCP auth failure — verify channel name and credentials");
  }
  throw err;
}

Prevention

When it happens

Trigger: Execute() runs with channel_name set (no version_fingerprint) and GetChannel(ctx, bucket_name, channel_name) errors: channel does not exist in the bucket, bucket/project is wrong, HCP credentials invalid/missing, or the API call fails (4xx/5xx, timeout, DNS).

Common situations: Misspelled channel name ('prod' vs 'production'); channel never created; channel belongs to another project; missing HCP_CLIENT_ID/HCP_CLIENT_SECRET in CI; transient HCP API outage.

Related errors


AI-assisted analysis of hashicorp/packer@eb36e3c3e4 (2026-09-05). Data as JSON: /api/errors/171a0a841ed3ad40. Report an issue: GitHub.