class ChiliLogger::AwsOpsMetadata

class for writing log cloud metadata when AWS is the cloud provider

Public Class Methods

aws_metadata(metadata) click to toggle source

rubocop:enable Metrics/MethodLength rubocop:enable Metrics/AbcSize

# File lib/message_writer/aws_ops_metadata.rb, line 44
def self.aws_metadata(metadata)
  # how it works: https://docs.aws.amazon.com/pt_br/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html
  base_url = 'http://169.254.169.254/latest/meta-data/'
  HTTParty.get(base_url + metadata).body
end
write() click to toggle source

rubocop:disable Metrics/MethodLength rubocop:disable Metrics/AbcSize

# File lib/message_writer/aws_ops_metadata.rb, line 11
def self.write
  {
    provider: 'AWS',
    instance: {
      ami_id: aws_metadata('ami-id'),
      ami_launch_index: aws_metadata('ami-launch-index'),
      ami_manifest_path: aws_metadata('ami-manifest-path'),
      block_device_mapping: aws_metadata('block-device-mapping/'),
      events: aws_metadata('events/'),
      hostname: aws_metadata('hostname'),
      # iam: aws_metadata('iam/'),
      instance_action: aws_metadata('instance-action'),
      instance_id: aws_metadata('instance-id'),
      instance_type: aws_metadata('instance-type'),
      local_hostname: aws_metadata('local-hostname'),
      local_ipv4: aws_metadata('local-ipv4'),
      mac: aws_metadata('mac'),
      metrics: aws_metadata('metrics/'),
      network: aws_metadata('network/'),
      placement: aws_metadata('placement/'),
      profile: aws_metadata('profile'),
      public_hostname: aws_metadata('public-hostname'),
      public_ipv4: aws_metadata('public-ipv4'),
      # public_keys: aws_metadata('public-keys/'),
      reservation_id: aws_metadata('reservation-id'),
      security_groups: aws_metadata('security-groups'),
      services: aws_metadata('services/')
    }
  }
end