Мне нужно получить эту информацию (строка "Amazon Linux") через aws-cli или aws-sdk.
Я пробовал:
aws ec2 describe-images --image-id ami-0b898040803850657 --region us-east-1 --output json
Но он не дает такой информации прямо:
{
"Images": [
{
"Architecture": "x86_64",
"CreationDate": "2019-06-19T21:59:15.000Z",
"ImageId": "ami-0b898040803850657",
"ImageLocation": "amazon/amzn2-ami-hvm-2.0.20190618-x86_64-gp2",
"ImageType": "machine",
"Public": true,
"OwnerId": "137112412989",
"State": "available",
"BlockDeviceMappings": [
{
"DeviceName": "/dev/xvda",
"Ebs": {
"Encrypted": false,
"DeleteOnTermination": true,
"SnapshotId": "snap-08091107f3acb12b2",
"VolumeSize": 8,
"VolumeType": "gp2"
}
}
],
"Description": "Amazon Linux 2 AMI 2.0.20190618 x86_64 HVM gp2",
"EnaSupport": true,
"Hypervisor": "xen",
"ImageOwnerAlias": "amazon",
"Name": "amzn2-ami-hvm-2.0.20190618-x86_64-gp2",
"RootDeviceName": "/dev/xvda",
"RootDeviceType": "ebs",
"SriovNetSupport": "simple",
"VirtualizationType": "hvm"
}
]
}
Конечно, можно разобрать поле «Описание», но нет гарантии, что имя ОС присутствует в описании.
Итак, как правильно получить ОС AMI? Также обратите внимание, что мне нужно различать RHEL, SUSE, Linux и Windows. Мне нужна информация об ОС, чтобы узнать цены на мои экземпляры (программно). Если кто-то знает более простой способ, пожалуйста, поделитесь.
К сожалению, я подозреваю, что это невозможно. Это связано с тем, что как в AWS-CLI, так и в boto3 для python, на котором основан интерфейс командной строки AWS, опция платформы в описании изображений предназначена для возврата пустого значения, если его нет в Windows, и «Windows», если это машина Windows.
Только из списка изображений, более надежный для проверки шаблонов соответствия "OwnerId" и "Name". Вот как AWS документирует, как найти популярные AMI.
Помимо создания собственных сценариев, любая система инвентаризации, заявляющая о поддержке AWS, может группироваться по ОС. Например:
Часто Linux легко отличить от Windows, потому что облака относятся к этим платформам по-разному. RHEL против CentOS - более тонкое различие, оба Linux, оба EL, у одного есть затраты на использование.