ruby/rubygems · error · Gem::S3URISigner::InstanceProfileError

Unable to fetch AWS metadata from #{uri}: #{response.message

Error message

Unable to fetch AWS metadata from #{uri}: #{response.message} #{response.code}

What it means

Error "Unable to fetch AWS metadata from #{uri}: #{response.message} #{response.code}" thrown in ruby/rubygems.

Source

Thrown at lib/rubygems/s3_uri_signer.rb:192

    # Expected format: arn:aws:iam::<id>:instance-profile/<role_name>
    role_name = iam_info["InstanceProfileArn"].split("/").last
    ec2_metadata_request(EC2_IAM_SECURITY_CREDENTIALS + role_name, token: nil)
  end

  def ec2_metadata_request(url, token:)
    request = ec2_iam_request(Gem::URI(url), Gem::Net::HTTP::Get)

    response = request.fetch do |req|
      if token
        req.add_field "X-aws-ec2-metadata-token", token
      end
    end

    case response
    when Gem::Net::HTTPOK then
      JSON.parse(response.body)
    else
      raise InstanceProfileError.new("Unable to fetch AWS metadata from #{uri}: #{response.message} #{response.code}")
    end
  end

  def ec2_metadata_token
    request = ec2_iam_request(Gem::URI(EC2_IAM_TOKEN), Gem::Net::HTTP::Put)

    response = request.fetch do |req|
      req.add_field "X-aws-ec2-metadata-token-ttl-seconds", 60
    end

    case response
    when Gem::Net::HTTPOK then
      response.body
    else
      raise InstanceProfileError.new("Unable to fetch AWS metadata from #{uri}: #{response.message} #{response.code}")
    end
  end

View on GitHub (pinned to 86cbb817a3)

Solutions

  1. Check that the instance metadata service is reachable from this host
  2. Verify the instance has an IAM profile attached; otherwise configure explicit s3_source credentials

When it happens

Trigger: Thrown at lib/rubygems/s3_uri_signer.rb:192 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/44aa99e7b2366002. Report an issue: GitHub.