goreleaser/goreleaser · error

azure storage account you provided is not valid: %w

Error message

azure storage account you provided is not valid: %w

What it means

handleError maps an error containing "no such host" to this message: for Azure Blob uploads this almost always means the storage account name in the bucket URL doesn't resolve — i.e. the account doesn't exist or the URL is wrong (DNS failure for *.blob.core.windows.net).

Source

Thrown at internal/pipe/blob/upload.go:223

		}
	}
	return false
}

func handleError(err error, url string) error {
	switch {
	case errorContains(err, "NoSuchBucket", "ContainerNotFound", "notFound"):
		return fmt.Errorf("provided bucket does not exist: %s: %w", url, err)
	case errorContains(err, "NoCredentialProviders"):
		return fmt.Errorf("check credentials and access to bucket: %s: %w", url, err)
	case errorContains(err, "InvalidAccessKeyId"):
		return fmt.Errorf("aws access key id you provided does not exist in our records: %w", err)
	case errorContains(err, "AuthenticationFailed"):
		return fmt.Errorf("azure storage key you provided is not valid: %w", err)
	case errorContains(err, "invalid_grant"):
		return fmt.Errorf("google app credentials you provided is not valid: %w", err)
	case errorContains(err, "no such host"):
		return fmt.Errorf("azure storage account you provided is not valid: %w", err)
	case errorContains(err, "ServiceCode=ResourceNotFound"):
		return fmt.Errorf("missing azure storage key for provided bucket %s: %w", url, err)
	default:
		return fmt.Errorf("failed to write to bucket: %w", err)
	}
}

func getData(ctx *context.Context, conf config.Blob, path string) ([]byte, error) {
	data, err := os.ReadFile(path)
	if err != nil {
		return data, fmt.Errorf("failed to open file %s: %w", path, err)
	}
	if conf.KMSKey == "" {
		return data, nil
	}
	keeper, err := secrets.OpenKeeper(ctx, conf.KMSKey)
	if err != nil {
		return data, fmt.Errorf("failed to open kms %s: %w", conf.KMSKey, err)

View on GitHub (pinned to f5edd73956)

Solutions

  1. Verify the storage account name in the blob config matches an existing Azure storage account
  2. Test DNS from the CI runner (nslookup <account>.blob.core.windows.net)
  3. Check for proxy/firewall rules blocking outbound DNS/HTTPS to blob.core.windows.net
  4. Confirm the correct endpoint/custom domain is configured if not using public Azure

Example fix

# before
blobs:
  - provider: azure
    bucket: relases-account   # typo, host won't resolve
# after
blobs:
  - provider: azure
    bucket: releases-account
Defensive patterns

Strategy: validation

Validate before calling

account="my-account"
if ! nslookup "${account}.blob.core.windows.net" > /dev/null 2>&1; then
  echo "azure storage account $account does not resolve"; exit 1
fi

Prevention

When it happens

Trigger: A blob config with provider: azure whose bucket: field names a non-existent storage account, a typo in the account name, or a custom endpoint/hostname that doesn't resolve.

Common situations: Typo'd storage account names in .goreleaser.yaml; storage account deleted or renamed; network/DNS restrictions in CI runners (proxies, private DNS); using an S3 bucket name in an Azure blob config.

Related errors


AI-assisted analysis of goreleaser/goreleaser@f5edd73956 (2026-09-05). Data as JSON: /api/errors/ddecb0daaf725669. Report an issue: GitHub.