End of Life Ruby 3.2 has reached end of life and gets no more fixes. Switch to Ruby 4.0 →
instance method
Gem::S3URISigner#fetch_s3_config
fetch_s3_config
lib/rubygems/s3_uri_signer.rb
View on GitHub ↗
# File tmp/rubies/ruby-3.2.0/lib/rubygems/s3_uri_signer.rb, line 103
def fetch_s3_config
return S3Config.new(uri.user, uri.password, nil, "us-east-1") if uri.user && uri.password
s3_source = Gem.configuration[:s3_source] || Gem.configuration["s3_source"]
host = uri.host
raise ConfigurationError.new("no s3_source key exists in .gemrc") unless s3_source
auth = s3_source[host] || s3_source[host.to_sym]
raise ConfigurationError.new("no key for host #{host} in s3_source in .gemrc") unless auth
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
Extracts S3 configuration for S3 bucket
See also
#ec2_metadata_request
#generate_canonical_query_params
#ec2_metadata_credentials_json
#generate_canonical_request
also in
4.1 · 4.0 · 3.4 · 3.3 · 3.1 · 3.0