如何使用AWS CLI找出在EC2实例上运行的操作系统。如何使用AWS CLI找到EC2实例的操作系统
ec2 describe-instance
命令吐出了大量的信息,但没有任何指示操作系统。
我也试过ec2 describe-images
在一个特定的图像。再一次,似乎没有任何OS的迹象。
帮助..?
如何使用AWS CLI找出在EC2实例上运行的操作系统。如何使用AWS CLI找到EC2实例的操作系统
ec2 describe-instance
命令吐出了大量的信息,但没有任何指示操作系统。
我也试过ec2 describe-images
在一个特定的图像。再一次,似乎没有任何OS的迹象。
帮助..?
您无法从AWS cli查询实例的特定操作系统,但可以查询该实例基于的AMI。此外,您无法获得“操作系统”属性,但可以获得AMI的Description
或Name
,因此,如果使用有意义的描述创建AMI,则可以使其工作。
$ aws ec2 describe-images --image-ids "ami-xxxxxxxx"
{
"Images": [
{
"VirtualizationType": "paravirtual",
"Name": "amazon-linux-20130509",
"Tags": [
{
"Value": "amazon-linux-20130509",
"Key": "Name"
}
],
"Hypervisor": "xen",
"ImageId": "ami-xxxxxxxx",
"RootDeviceType": "ebs",
"State": "available",
"BlockDeviceMappings": [
{
"DeviceName": "/dev/sda1",
"Ebs": {
"DeleteOnTermination": true,
"SnapshotId": "snap-xxxxxxxx",
"VolumeSize": 100,
"VolumeType": "standard"
}
}
],
"Architecture": "x86_64",
"ImageLocation": "123456789012/amazon-linux-20130509",
"KernelId": "aki-fc37bacc",
"OwnerId": "123456789012",
"RootDeviceName": "/dev/sda1",
"Public": false,
"ImageType": "machine",
"Description": "Amazon Linux"
}
]
}
如果你想获得更详细的您可以编写自己的脚本ssh到机器和他们中的每一个运行cat /etc/issue
。
谢谢。是的,当我准备和AMI中的描述一起使用时,我的组织中只有一些用户正确地命名它们并没有帮助。 至于脚本/ etc/issue,我实际上需要OS信息来自动连接到几个EC2实例,一些运行Amazon Linux(默认ssh用户:ec2-user),一些运行RHEL(默认ssh用户:root) 。 – ivarrian
这里有一个快速的方法来列出平台领域,这至少是Windows和Linux之间的区别:
aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId,Platform]' --output text
i-78b4ef47 windows
i-b8ae3386 windows
i-9d3611a2 None
i-1c57c651 windows
i-a241ec91 None
i-7d26b630 None
*无*表示什么? – Jeff
'无'是相当于NULL的Python。在Platform字段中,只有Windows实例返回一个值('windows')。所有其他人都不会返回一个值,因此“无”。 (我不知道为什么会出现这种情况,但那是行为。) –
我得到你必须指定区域错误。 –
试试这个命令:
aws ec2 describe-images --image-ids $(aws ec2 describe-instances --instance-ids i-xxxxxxxxxxxxx --query 'Reservations[0].Instances[0].ImageId' --output text) --query 'Images[0].Name'
$()部分得到利用INSTANCEID图像标识。
这是问题的正确答案。 –
简而言之,不,你不能使用AWS-CLI来做到这一点。 – slayedbylucifer
@slayedbylucifer:够公平的。我想我最好开始在AMIs上执行命名约定 – ivarrian