4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
# File 'lib/awspec/helper/finder/ec2.rb', line 4
def find_ec2(id)
if id.start_with?('i-') && id.length == 19 && id =~ /^i-[0-9a-f]/
begin
res = ec2_client.describe_instances({
instance_ids: [id]
})
rescue Aws::EC2::Errors::InvalidInstanceIDNotFound, Aws::EC2::Errors::InvalidInstanceIDMalformed => e
res = ec2_client.describe_instances({
filters: [{ name: 'tag:Name', values: [id] }]
})
end
else
begin
res = ec2_client.describe_instances({
filters: [{ name: 'tag:Name', values: [id] }]
})
rescue Aws::EC2::Errors::InvalidInstanceIDNotFound, Aws::EC2::Errors::InvalidInstanceIDMalformed => e
res = ec2_client.describe_instances({
instance_ids: [id]
})
if res.reservations.count > 1
STDERR.puts "Warning: '#{id}' unexpectedly identified as a valid instance ID during fallback search"
end
end
end
return nil if res.reservations.count == 0
return res.reservations.first.instances.single_resource(id) if res.reservations.count == 1
raise Awspec::DuplicatedResourceTypeError, dup_ec2_instance(id) if res.reservations.count > 1
raise "Unexpected condition of having reservations = #{res.reservations.count}"
end
|