У меня есть этот фрагмент кода для получения изображений машин Amazon:
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 (red hat, amazon linux, centos и т. д. .) если я использую Owners=['self'] он возвращает null, как мне сделать список сортировки элементов AMI, как в консоли aws в меню быстрого запуска при запуске нового экземпляра (см. изображение)? этот список состоит из 38 элементов.
Вместо использования describe_images()
вы можете использовать специальную функцию Amazon EC2 Systems Manager — хранилище параметров, которая может предоставить идентификатор AMI последних AMI, управляемых Amazon.
Например:
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": []
}
Видеть: