Sha256: 32edae4131d9372aaa582c64129016b2e4f82d0ca476b1876eceeb703b7ae9c4

Contents?: true

Size: 908 Bytes

Versions: 9

Compression:

Stored size: 908 Bytes

Contents

require 'net/http'
require 'aws-sdk'

class EC2
  class Host
    class ClientUtil
      def self.get_instances
        # I do not use describe_instances(filter:) because it does not support array tag ..
        return @instances if @instances
        Aws.config.update(region: Config.aws_region, credentials: Config.aws_credentials)
        ec2 = Aws::EC2::Client.new
        @instances = ec2.describe_instances.reservations.map(&:instances).flatten
      end

      def self.get_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
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
ec2-host-0.0.9 lib/ec2/host/client_util.rb
ec2-host-0.0.8 lib/ec2/host/client_util.rb
ec2-host-0.0.7 lib/ec2/host/client_util.rb
ec2-host-0.0.6 lib/ec2/host/client_util.rb
ec2-host-0.0.5 lib/ec2/host/client_util.rb
ec2-host-0.0.4 lib/ec2/host/client_util.rb
ec2-host-0.0.3 lib/ec2/host/client_util.rb
ec2-host-0.0.2 lib/ec2/host/client_util.rb
ec2-host-0.0.1 lib/ec2/host/client_util.rb