mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
parent
8691a4ada1
commit
720ae3285e
1 changed files with 13 additions and 6 deletions
|
@ -147,6 +147,7 @@ class Gem::S3URISigner
|
||||||
require_relative "request/connection_pools"
|
require_relative "request/connection_pools"
|
||||||
require "json"
|
require "json"
|
||||||
token = ec2_metadata_token
|
token = ec2_metadata_token
|
||||||
|
|
||||||
iam_info = ec2_metadata_request(EC2_IAM_INFO, token)
|
iam_info = ec2_metadata_request(EC2_IAM_INFO, token)
|
||||||
# Expected format: arn:aws:iam::<id>:instance-profile/<role_name>
|
# Expected format: arn:aws:iam::<id>:instance-profile/<role_name>
|
||||||
role_name = iam_info["InstanceProfileArn"].split("/").last
|
role_name = iam_info["InstanceProfileArn"].split("/").last
|
||||||
|
@ -154,9 +155,8 @@ class Gem::S3URISigner
|
||||||
end
|
end
|
||||||
|
|
||||||
def ec2_metadata_request(url, token)
|
def ec2_metadata_request(url, token)
|
||||||
uri = Gem::URI(url)
|
request = ec2_iam_request(Gem::URI(url), Gem::Net::HTTP::Get)
|
||||||
@request_pool ||= create_request_pool(uri)
|
|
||||||
request = Gem::Request.new(uri, Gem::Net::HTTP::Get, nil, @request_pool)
|
|
||||||
response = request.fetch do |req|
|
response = request.fetch do |req|
|
||||||
req.add_field "X-aws-ec2-metadata-token", token
|
req.add_field "X-aws-ec2-metadata-token", token
|
||||||
end
|
end
|
||||||
|
@ -170,9 +170,8 @@ class Gem::S3URISigner
|
||||||
end
|
end
|
||||||
|
|
||||||
def ec2_metadata_token
|
def ec2_metadata_token
|
||||||
uri = Gem::URI(EC2_IAM_TOKEN)
|
request = ec2_iam_request(Gem::URI(EC2_IAM_TOKEN), Gem::Net::HTTP::Put)
|
||||||
@request_pool ||= create_request_pool(uri)
|
|
||||||
request = Gem::Request.new(uri, Gem::Net::HTTP::Put, nil, @request_pool)
|
|
||||||
response = request.fetch do |req|
|
response = request.fetch do |req|
|
||||||
req.add_field "X-aws-ec2-metadata-token-ttl-seconds", 60
|
req.add_field "X-aws-ec2-metadata-token-ttl-seconds", 60
|
||||||
end
|
end
|
||||||
|
@ -185,6 +184,14 @@ class Gem::S3URISigner
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def ec2_iam_request(uri, verb)
|
||||||
|
@request_pool ||= {}
|
||||||
|
@request_pool[uri] ||= create_request_pool(uri)
|
||||||
|
pool = @request_pool[uri]
|
||||||
|
|
||||||
|
Gem::Request.new(uri, verb, nil, pool)
|
||||||
|
end
|
||||||
|
|
||||||
def create_request_pool(uri)
|
def create_request_pool(uri)
|
||||||
proxy_uri = Gem::Request.proxy_uri(Gem::Request.get_proxy_from_env(uri.scheme))
|
proxy_uri = Gem::Request.proxy_uri(Gem::Request.get_proxy_from_env(uri.scheme))
|
||||||
certs = Gem::Request.get_cert_files
|
certs = Gem::Request.get_cert_files
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue