-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathamiImages.py
executable file
·54 lines (45 loc) · 2.01 KB
/
amiImages.py
1
2
3
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
45
46
47
48
49
50
51
52
53
54
#!/usr/bin/env python3
import boto3
from botocore.exceptions import ClientError
from env import *
from loggerFactory import logger_factory
logger = logger_factory(__name__)
_ssm = boto3.client('ssm', AWSSOCKS_REGION)
def awssocks_ami_image():
try:
ami_paginator = _ssm.get_paginator("get_parameters_by_path")
ami_params = []
for page in ami_paginator.paginate(Path="/aws/service/ami-amazon-linux-latest"):
ami_params += page["Parameters"]
amzn2_amis_any_arch = [ap for ap in ami_params if
all(query in ap['Name'] for query
in ('amzn2', 'gp2'))]
amzn2_amis = [ap for ap in amzn2_amis_any_arch if
AWSSOCKS_EC2_ARCHITECTURE in ap['Name']]
if len(amzn2_amis) > 0:
ami_image_id = amzn2_amis[0]['Value']
logger.info("Found an Amazon Machine Image (AMI) that includes Amazon Linux 2, "
"an x64 architecture, and a general-purpose EBS volume: %s",
str(amzn2_amis[0]))
return ami_image_id
elif len(amzn2_amis_any_arch) > 0:
ami_image_id = amzn2_amis_any_arch[0]['Value']
logger.info("Found an Amazon Machine Image (AMI) that includes Amazon Linux 2, "
"and a general-purpose EBS volume: %s",
str(amzn2_amis_any_arch[0]))
return ami_image_id
elif len(ami_params) > 0:
ami_image_id = ami_params[0]['Value']
logger.info("Found an Amazon Machine Image (AMI) to use for the proxy: %s",
str(ami_params[0]))
return ami_image_id
else:
raise RuntimeError(
"Couldn't find any AMIs. Try a different path or find one in the "
"AWS Management Console.")
except ClientError:
logger.exception("AMI - Lookup failed")
raise
if __name__ == '__main__':
log_configuration()
print(awssocks_ami_image())