Class: Sgdoc::Client

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

Overview

TODO: VPCから順に構造体にしていく方法にした方がいい

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(ec2_client: nil, ec2_resource: nil) ⇒ Client

Returns a new instance of Client.



6
7
8
9
# File 'lib/sgdoc/client.rb', line 6

def initialize(ec2_client: nil, ec2_resource: nil)
  @ec2_client = ec2_client || Aws::EC2::Client.new
  @ec2_resource = ec2_resource || Aws::EC2::Resource.new(client: @ec2_client)
end

Instance Attribute Details

#security_groupsObject (readonly)

Returns the value of attribute security_groups.



4
5
6
# File 'lib/sgdoc/client.rb', line 4

def security_groups
  @security_groups
end

Instance Method Details

#instances_by_vpc_idObject



19
20
21
22
# File 'lib/sgdoc/client.rb', line 19

def instances_by_vpc_id
  instances = @ec2_resource.instances.map { |i| Sgdoc::EC2::Instance.new(i) }
  instances.group_by { |i| i.vpc_id }
end

#security_groups_by_vpc_idObject



11
12
13
14
15
16
17
# File 'lib/sgdoc/client.rb', line 11

def security_groups_by_vpc_id
  describe_security_groups = @ec2_client.describe_security_groups.security_groups
  security_groups ||= describe_security_groups.map { |sg| Sgdoc::EC2::SecurityGroup.new(sg) }

  # vpcIDのキーをvpcのオブジェクトにしても良い
  security_groups.group_by { |sg| sg.vpc_id }
end