我需要通过 aws-cli 或 aws-sdk 获取此信息(“Amazon Linux”行)。
我试过了:
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。我需要有关操作系统的信息来查找我的实例的定价(以编程方式)。如果有人知道更简单的方法,请随时分享。
答案1
仅从图像列表中,就可以更强大地检查“OwnerId”和“Name”匹配模式。 这就是 AWS 记录如何查找流行 AMI 的方式。
除了编写自己的脚本之外,任何声称支持 AWS 的库存系统都可以按操作系统分组。例如:
- 当然 AWS 也有自己的系统管理员清单,需额外付费。
- Ansible 将登录每个实例并识别操作系统。(也适用于不在任何云中的主机以及不知名的操作系统发行版。)
通常很容易区分 Linux 和 Windows,因为云对这些平台的处理方式非常不同。RHEL 与 CentOS 的区别更微妙,两者都是 Linux,两者都是 EL,但其中一个有使用成本。