module Awspec::Helper::Finder::Ec2

Public Instance Methods

find_ec2(id) click to toggle source
# File lib/awspec/helper/finder/ec2.rb, line 4
def find_ec2(id)
  # instance_id or tag:Name
  begin
    res = ec2_client.describe_instances({
                                          instance_ids: [id]
                                        })
  rescue
    # Aws::EC2::Errors::InvalidInstanceIDMalformed
    # Aws::EC2::Errors::InvalidInstanceIDNotFound
    res = ec2_client.describe_instances({
                                          filters: [{ name: 'tag:Name', values: [id] }]
                                        })
  end
  # rubocop:enable Style/GuardClause
  if res.reservations.count == 1
    res.reservations.first.instances.single_resource(id)
  elsif res.reservations.count > 1
    raise Awspec::DuplicatedResourceTypeError, "Duplicate instances matching id or tag #{id}"
  end
end
find_ec2_attribute(id, attribute) click to toggle source
# File lib/awspec/helper/finder/ec2.rb, line 25
def find_ec2_attribute(id, attribute)
  res = ec2_client.describe_instance_attribute({
                                                 instance_id: id, attribute: attribute
                                               })
end
find_ec2_credit_specifications(id) click to toggle source
# File lib/awspec/helper/finder/ec2.rb, line 31
def find_ec2_credit_specifications(id)
  res = ec2_client.describe_instance_credit_specifications({
                                                             instance_ids: [id]
                                                           })
  res.instance_credit_specifications.first if res.instance_credit_specifications.count == 1
end
find_ec2_status(id) click to toggle source
# File lib/awspec/helper/finder/ec2.rb, line 38
def find_ec2_status(id)
  res = ec2_client.describe_instance_status({
                                              instance_ids: [id]
                                            })
  res.instance_statuses.first if res.instance_statuses.count == 1
end
find_launch_template(id) click to toggle source
# File lib/awspec/helper/finder/ec2.rb, line 177
def find_launch_template(id)
  # launch_template_id or launch_template_name
  begin
    res = ec2_client.describe_launch_templates({
                                                 launch_template_ids: [id]
                                               })
  rescue
    res = ec2_client.describe_launch_templates({
                                                 launch_template_names: [id]
                                               })
  end
  res.launch_templates.single_resource(id)
end
find_launch_template_versions(id) click to toggle source
# File lib/awspec/helper/finder/ec2.rb, line 191
def find_launch_template_versions(id)
  # launch_template_id or launch_template_name
  res = ec2_client.describe_launch_template_versions({
                                                       launch_template_id: id
                                                     })
rescue
  res = ec2_client.describe_launch_template_versions({
                                                       launch_template_name: id
                                                     })
end
find_nat_gateway(gateway_id) click to toggle source
# File lib/awspec/helper/finder/ec2.rb, line 87
def find_nat_gateway(gateway_id)
  # nat_gateway_id or tag:Name
  begin
    res = ec2_client.describe_nat_gateways({
                                             nat_gateway_ids: [gateway_id]
                                           })
  rescue
    res = ec2_client.describe_nat_gateways({
                                             filter: [{ name: 'tag:Name', values: [gateway_id] }]
                                           })
  end
  if res.nat_gateways.count == 1
    res.nat_gateways.single_resource(gateway_id)
  elsif res.nat_gateways.count > 1
    raise Awspec::DuplicatedResourceTypeError, "Duplicate nat_gateways matching id or tag #{gateway_id}"
  end
end
find_network_interface(interface_id) click to toggle source
# File lib/awspec/helper/finder/ec2.rb, line 105
def find_network_interface(interface_id)
  res = ec2_client.describe_network_interfaces({
                                                 filters: [
                                                   {
                                                     name: 'network-interface-id',
                                                     values: [interface_id]
                                                   }
                                                 ]
                                               })
  resource = res.network_interfaces.single_resource(interface_id)
  return resource if resource
  res = ec2_client.describe_network_interfaces({
                                                 filters: [{ name: 'tag:Name', values: [interface_id] }]
                                               })
  res.network_interfaces.single_resource(interface_id)
end
find_vpn_connection(vpn_connection_id) click to toggle source
# File lib/awspec/helper/finder/ec2.rb, line 65
def find_vpn_connection(vpn_connection_id)
  res = ec2_client.describe_vpn_connections({
                                              filters: [
                                                {
                                                  name: 'vpn-connection-id',
                                                  values: [vpn_connection_id]
                                                }
                                              ]
                                            })
  resource = res.vpn_connections.single_resource(vpn_connection_id)
  return resource if resource
  res = ec2_client.describe_vpn_connections({
                                              filters: [
                                                {
                                                  name: 'tag:Name',
                                                  values: [vpn_connection_id]
                                                }
                                              ]
                                            })
  res.vpn_connections.single_resource(vpn_connection_id)
end
select_ec2_by_vpc_id(vpc_id) click to toggle source
# File lib/awspec/helper/finder/ec2.rb, line 122
def select_ec2_by_vpc_id(vpc_id)
  res = ec2_client.describe_instances({
                                        filters: [{ name: 'vpc-id', values: [vpc_id] }]
                                      })
  instances = []
  res.reservations.each do |reservation|
    reservation.instances.each do |instance|
      instances.push(instance)
    end
  end
  instances
end
select_eip_by_instance_id(id) click to toggle source
# File lib/awspec/helper/finder/ec2.rb, line 135
def select_eip_by_instance_id(id)
  res = ec2_client.describe_addresses({
                                        filters: [{ name: 'instance-id', values: [id] }]
                                      })
  res.addresses
end
select_eip_by_public_ip(id) click to toggle source
# File lib/awspec/helper/finder/ec2.rb, line 142
def select_eip_by_public_ip(id)
  res = ec2_client.describe_addresses({
                                        filters: [{ name: 'public-ip', values: [id] }]
                                      })
  res.addresses
end
select_internet_gateway_by_vpc_id(vpc_id) click to toggle source
# File lib/awspec/helper/finder/ec2.rb, line 163
def select_internet_gateway_by_vpc_id(vpc_id)
  res = ec2_client.describe_internet_gateways({
                                                filters: [{ name: 'attachment.vpc-id', values: [vpc_id] }]
                                              })
  res.internet_gateways
end
select_nat_gateway_by_vpc_id(vpc_id) click to toggle source
# File lib/awspec/helper/finder/ec2.rb, line 156
def select_nat_gateway_by_vpc_id(vpc_id)
  res = ec2_client.describe_nat_gateways({
                                           filter: [{ name: 'vpc-id', values: [vpc_id] }]
                                         })
  res.nat_gateways
end
select_network_interface_by_instance_id(id) click to toggle source
# File lib/awspec/helper/finder/ec2.rb, line 149
def select_network_interface_by_instance_id(id)
  res = ec2_client.describe_network_interfaces({
                                                 filters: [{ name: 'attachment.instance-id', values: [id] }]
                                               })
  res.network_interfaces
end
select_network_interface_by_vpc_id(vpc_id) click to toggle source
# File lib/awspec/helper/finder/ec2.rb, line 170
def select_network_interface_by_vpc_id(vpc_id)
  res = ec2_client.describe_network_interfaces({
                                                 filters: [{ name: 'vpc-id', values: [vpc_id] }]
                                               })
  res.network_interfaces
end