我有以下代码片段来获取亚马逊机器图像:
session.client('ec2', region_name=AWS_DEFAULT_REGION).describe_images(ExecutableUsers=[
'all',
],
Filters=[
{
'Name': 'platform',
'Values': [
'windows',
]
},
{
'Name': 'state',
'Values': [
'available',
]
},
{
'Name': 'image-type',
'Values': [
'machine',
]
},
{
'Name': 'virtualization-type',
'Values': [
'hvm',
]
},
{
'Name': 'root-device-type',
'Values': [
'ebs',
]
},
],
Owners=[
'679593333241', # all public ami's from amazon as owner
])
这可行,但响应速度太慢,我知道AMI列表很长,但是我不需要列表中的所有AMI,我只需要最受欢迎的AMI元素(红色帽子,亚马逊Linux, centos等),如果我使用Owners = ['self']它返回null,那么当启动新实例时,如何在快速启动菜单中的aws控制台中创建AMI元素的排序列表(参见图片)?该列表包含38个元素。
答案 0 :(得分:1)
您可能要使用 Amazon EC2 Systems Manager-参数存储的特殊功能,而不是使用describe_images()
,该功能可以提供最近Amazon管理的AMI的AMI ID。
例如:
aws ssm get-parameters --names /aws/service/ecs/optimized-ami/amazon-linux-2/recommended --region us-east-1
返回:
{
"Parameters": [
{
"Name": "/aws/service/ecs/optimized-ami/amazon-linux-2/recommended",
"Type": "String",
"Value": "{\"schema_version\":1,\"image_name\":\"amzn2-ami-ecs-hvm-2.0.20181017-x86_64-ebs\",\"image_id\":\"ami-0a6be20ed8ce1f055\",\"os\":\"Amazon Linux 2\",\"ecs_runtime_version\":\"Docker version 18.06.1-ce\",\"ecs_agent_version\":\"1.21.0\"}",
"Version": 1,
"LastModifiedDate": 1539908415.817,
"ARN": "arn:aws:ssm:us-east-1::parameter/aws/service/ecs/optimized-ami/amazon-linux-2/recommended"
}
],
"InvalidParameters": []
}
请参阅: