Class: InstanceMetadata

Inherits:
Object
  • Object
show all
Defined in:
lib/instance_metadata.rb

Constant Summary collapse

IP_ADDRESS =
'169.254.169.254'
PORT =
80

Class Method Summary collapse

Class Method Details

.host_identifierObject



10
11
12
13
# File 'lib/instance_metadata.rb', line 10

def self.host_identifier
  doc = JSON.parse(http_get('/latest/dynamic/instance-identity/document').strip)
  "arn:aws:ec2:#{doc['region']}:#{doc['accountId']}:instance/#{doc['instanceId']}"
end

.instance_idObject



22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/instance_metadata.rb', line 22

def self.instance_id
  begin
    Net::HTTP.start(IP_ADDRESS, PORT) do |http|
      response = http.get('/latest/meta-data/instance-id')
      if response.code.to_i != 200
        return nil
      end
      return response.body
    end
  rescue
    return nil
  end
end

.regionObject



15
16
17
18
19
20
# File 'lib/instance_metadata.rb', line 15

def self.region
  az = http_get('/latest/meta-data/placement/availability-zone').strip
  raise "Invalid availability zone name: #{az}" unless
    az =~ /[a-z]{2}-[a-z]+-\d+[a-z]/
  az.chop
end