{"record":{"id":"bb7debb2bf9faaa6","repo":"ruby/rubygems","slug":"s3-source-for-host-missing-id-or-secret","errorCode":null,"errorMessage":"s3_source for #{host} missing id or secret","messagePattern":"s3_source for #(.+?) missing id or secret","errorType":"exception","errorClass":"Gem::S3URISigner::ConfigurationError","httpStatus":null,"severity":"error","filePath":"lib/rubygems/s3_uri_signer.rb","lineNumber":137,"sourceCode":"\n    provider = auth[:provider] || auth[\"provider\"]\n    case provider\n    when \"env\"\n      id = ENV[\"AWS_ACCESS_KEY_ID\"]\n      secret = ENV[\"AWS_SECRET_ACCESS_KEY\"]\n      security_token = ENV[\"AWS_SESSION_TOKEN\"]\n    when \"instance_profile\"\n      credentials = ec2_metadata_credentials_json\n      id = credentials[\"AccessKeyId\"]\n      secret = credentials[\"SecretAccessKey\"]\n      security_token = credentials[\"Token\"]\n    else\n      id = auth[:id] || auth[\"id\"]\n      secret = auth[:secret] || auth[\"secret\"]\n      security_token = auth[:security_token] || auth[\"security_token\"]\n    end\n\n    raise ConfigurationError.new(\"s3_source for #{host} missing id or secret\") unless id && secret\n\n    region = auth[:region] || auth[\"region\"] || \"us-east-1\"\n    S3Config.new(id, secret, security_token, region)\n  end\n\n  def base64_uri_escape(str)\n    str.gsub(%r{[\\+/=\\n]}, BASE64_URI_TRANSLATE)\n  end\n\n  def ec2_metadata_credentials_json\n    require_relative \"vendored_net_http\"\n    require_relative \"request\"\n    require_relative \"request/connection_pools\"\n    require \"json\"\n\n    # First try V2 fallback to V1\n    res = nil\n    begin","sourceCodeStart":119,"sourceCodeEnd":155,"githubUrl":"https://github.com/ruby/rubygems/blob/86cbb817a38ce8477b181c17467a703ded3f2be8/lib/rubygems/s3_uri_signer.rb#L119-L155","documentation":"Error \"s3_source for #{host} missing id or secret\" thrown in ruby/rubygems.","triggerScenarios":"Thrown at lib/rubygems/s3_uri_signer.rb:137 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","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)"],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"86cbb817a38ce8477b181c17467a703ded3f2be8","analyzedAt":"2026-08-23T06:27:48.159Z","schemaVersion":2},"datasetVersion":"2026-08-23T08:06:27.607Z"}