ruby/rubygems · error · Gem::S3URISigner::ConfigurationError
s3_source for #{host} missing id or secret
Error message
s3_source for #{host} missing id or secret What it means
Error "s3_source for #{host} missing id or secret" thrown in ruby/rubygems.
Source
Thrown at lib/rubygems/s3_uri_signer.rb:137
provider = auth[:provider] || auth["provider"]
case provider
when "env"
id = ENV["AWS_ACCESS_KEY_ID"]
secret = ENV["AWS_SECRET_ACCESS_KEY"]
security_token = ENV["AWS_SESSION_TOKEN"]
when "instance_profile"
credentials = ec2_metadata_credentials_json
id = credentials["AccessKeyId"]
secret = credentials["SecretAccessKey"]
security_token = credentials["Token"]
else
id = auth[:id] || auth["id"]
secret = auth[:secret] || auth["secret"]
security_token = auth[:security_token] || auth["security_token"]
end
raise ConfigurationError.new("s3_source for #{host} missing id or secret") unless id && secret
region = auth[:region] || auth["region"] || "us-east-1"
S3Config.new(id, secret, security_token, region)
end
def base64_uri_escape(str)
str.gsub(%r{[\+/=\n]}, BASE64_URI_TRANSLATE)
end
def ec2_metadata_credentials_json
require_relative "vendored_net_http"
require_relative "request"
require_relative "request/connection_pools"
require "json"
# First try V2 fallback to V1
res = nil
beginView on GitHub (pinned to 86cbb817a3)
Solutions
- Add both id and secret keys to the host's s3_source entry in ~/.gemrc (or use a provider such as iam_instance_profile)
When it happens
Trigger: Thrown at lib/rubygems/s3_uri_signer.rb:137 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of ruby/rubygems@86cbb817a3 (2026-08-23).
Data as JSON: /api/errors/bb7debb2bf9faaa6.
Report an issue: GitHub.