Назад | Перейти на главную страницу

Получить ОС EC2 программно

Мне нужно получить эту информацию (строка "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.

Цитаты: Для Boto3, для CLI.

Только из списка изображений, более надежный для проверки шаблонов соответствия "OwnerId" и "Name". Вот как AWS документирует, как найти популярные AMI.

Помимо создания собственных сценариев, любая система инвентаризации, заявляющая о поддержке AWS, может группироваться по ОС. Например:

  • Конечно, у AWS есть свои, Инвентаризация системного менеджера, за дополнительную плату.
  • Ansible войдет в каждый экземпляр и определит ОС. (Также работает для хостов не в каком-либо облаке и в малоизвестных дистрибутивах ОС.)

Часто Linux легко отличить от Windows, потому что облака относятся к этим платформам по-разному. RHEL против CentOS - более тонкое различие, оба Linux, оба EL, у одного есть затраты на использование.