-
Notifications
You must be signed in to change notification settings - Fork 0
/
find_imageid.yaml
130 lines (118 loc) · 4.17 KB
/
find_imageid.yaml
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
AWSTemplateFormatVersion: 2010-09-09
Description: >-
Ant Media Server AutoScaling CloudFormation Templates.
If you have any questions, please just drop a line to contact (at) antmedia.io
Resources:
DescribeImagesRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Action: sts:AssumeRole
Effect: Allow
Principal:
Service: lambda.amazonaws.com
ManagedPolicyArns:
- arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Policies:
- PolicyName: DescribeImages
PolicyDocument:
Version: '2012-10-17'
Statement:
- Action: ec2:DescribeImages
Effect: Allow
Resource: "*"
AMSGetLatestAMI:
Type: AWS::Lambda::Function
Properties:
Runtime: python3.12
Handler: index.handler
Role: !Sub ${DescribeImagesRole.Arn}
Timeout: 60
Code:
ZipFile: |
import boto3
import cfnresponse
import json
import traceback
def handler(event, context):
try:
response = boto3.client('ec2').describe_images(
Filters=[
{'Name': 'product-code', 'Values': [event['ResourceProperties']['ProductId']]},
{'Name': 'name', 'Values': [event['ResourceProperties']['Name']]},
{'Name': 'architecture', 'Values': [event['ResourceProperties']['Architecture']]},
{'Name': 'root-device-type', 'Values': ['ebs']},
],
)
amis = sorted(response['Images'],
key=lambda x: x['CreationDate'],
reverse=True)
id = amis[0]['ImageId']
cfnresponse.send(event, context, cfnresponse.SUCCESS, {}, id)
except:
traceback.print_last()
cfnresponse.send(event, context, cfnresponse.FAIL, {}, "ok")
UbuntuGetLatestAMI:
Type: AWS::Lambda::Function
Properties:
Runtime: python3.12
Handler: index.handler
Role: !Sub ${DescribeImagesRole.Arn}
Timeout: 60
Code:
ZipFile: |
import boto3
import cfnresponse
import json
import traceback
def handler(event, context):
try:
response = boto3.client('ec2').describe_images(
Owners=[event['ResourceProperties']['Owner']],
Filters=[
{'Name': 'name', 'Values': [event['ResourceProperties']['Name']]},
{'Name': 'architecture', 'Values': [event['ResourceProperties']['Architecture']]},
{'Name': 'root-device-type', 'Values': ['ebs']},
],
)
amis = sorted(response['Images'],
key=lambda x: x['CreationDate'],
reverse=True)
id = amis[0]['ImageId']
cfnresponse.send(event, context, cfnresponse.SUCCESS, {}, id)
except:
traceback.print_last()
cfnresponse.send(event, context, cfnresponse.FAIL, {}, "ok")
AntMediaAmi:
Type: Custom::FindAMI
Properties:
ServiceToken: !Sub ${AMSGetLatestAMI.Arn}
ProductId: "4wh7rhpic3wfwamyp5905tsbt"
Name: "AntMedia-AWS-Marketplace-EE-*"
Architecture: "x86_64"
AntMediaGPUAmi:
Type: Custom::FindAMI
Properties:
ServiceToken: !Sub ${AMSGetLatestAMI.Arn}
ProductId: "8kf9kapq2qbo37fuekp8k7o6r"
Name: "AntMedia-AWS-Marketplace-GPU-*"
Architecture: "x86_64"
UbuntuAmi:
Type: Custom::FindAMI
Properties:
ServiceToken: !Sub ${UbuntuGetLatestAMI.Arn}
Owner: "099720109477"
Name: "ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server-*"
Architecture: "x86_64"
Outputs:
AntMediaAmiId:
Description: The ID of the Ant Media AMI
Value: !Ref AntMediaAmi
AntMediaGPUAmiId:
Description: The ID of the Ant Media GPU AMI
Value: !Ref AntMediaGPUAmi
UbuntuAmiId:
Description: The ID of the Ubuntu AMI
Value: !Ref UbuntuAmi