class EC2::Host::EC2Client
Public Instance Methods
instance_id()
click to toggle source
# File lib/ec2/host/ec2_client.rb, line 21 def instance_id return @instance_id if @instance_id begin http_conn = Net::HTTP.new('169.254.169.254') http_conn.open_timeout = 5 @instance_id = http_conn.start {|http| http.get('/latest/meta-data/instance-id').body } rescue Net::OpenTimeout raise "HTTP connection to 169.254.169.254 is timeout. Probably, not an EC2 instance?" end end
instances(condition)
click to toggle source
# File lib/ec2/host/ec2_client.rb, line 8 def instances(condition) filters = build_filters(condition) instances = if filters ec2.describe_instances(filters: filters) elsif instance_id = condition[:instance_id] ec2.describe_instances(instance_ids: Array(instance_id)) else ec2.describe_instances end instances.reservations.map(&:instances).flatten end
Private Instance Methods
build_filters(condition)
click to toggle source
# File lib/ec2/host/ec2_client.rb, line 67 def build_filters(condition) if role = (condition[:role] || condition[:usage]) and role.size == 1 return [{name: "tag:#{Config.roles_tag}", values: ["*#{role.first}*"]}] end 1.upto(Config.role_max_depth).each do |i| if role = (condition["role#{i}".to_sym] || condition["usage#{i}".to_sym]) and role.size == 1 return [{name: "tag:#{Config.roles_tag}", values: ["*#{role.first}*"]}] end end nil end
credentials()
click to toggle source
# File lib/ec2/host/ec2_client.rb, line 54 def credentials if Config.aws_config['role_arn'] # wrapped by assume role if necessary Aws::AssumeRoleCredentials.new( client: Aws::STS::Client.new(region: Config.aws_region, credentials: raw_credentials), role_arn: Config.aws_config['role_arn'], role_session_name: "ec2-host-session-#{Time.now.to_i}" ) else raw_credentials end end
ec2()
click to toggle source
# File lib/ec2/host/ec2_client.rb, line 34 def ec2 @ec2 ||= Aws::EC2::Client.new(region: Config.aws_region, credentials: credentials) end
ec2_instance?()
click to toggle source
# File lib/ec2/host/ec2_client.rb, line 38 def ec2_instance? (not instance_id.nil?) rescue false end
raw_credentials()
click to toggle source
# File lib/ec2/host/ec2_client.rb, line 42 def raw_credentials if Config.aws_config['credential_source'] == 'Ec2InstanceMetadata' Aws::InstanceProfileCredentials.new elsif Config.aws_access_key_id and Config.aws_secret_access_key Aws::Credentials.new(Config.aws_access_key_id, Config.aws_secret_access_key) elsif File.readable?(Config.aws_credentials_file) Aws::SharedCredentials.new(profile_name: Config.aws_profile, path: Config.aws_credentials_file) elsif ec2_instance? # fallback to instance profile Aws::InstanceProfileCredentials.new end end