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
- Verify the storage account name in the blob config matches an existing Azure storage account
- Test DNS from the CI runner (nslookup <account>.blob.core.windows.net)
- Check for proxy/firewall rules blocking outbound DNS/HTTPS to blob.core.windows.net
- 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
- Double-check storage account spelling in blob config
- Confirm outbound DNS/HTTPS is allowed from CI runners
- Verify the account still exists after renames/deletions
- Use the same account name for AZURE_STORAGE_ACCOUNT and the bucket URL
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
- provided bucket does not exist: %s: %w
- azure storage key you provided is not valid: %w
- missing azure storage key for provided bucket %s: %w
- check credentials and access to bucket: %s: %w
- failed to write %s: %w
AI-assisted analysis of goreleaser/goreleaser@f5edd73956 (2026-09-05).
Data as JSON: /api/errors/ddecb0daaf725669.
Report an issue: GitHub.