如何通过AWS CLI合并命令获取实例ID、名称及详细OS信息
合并AWS CLI命令获取完整EC2实例信息
要整合SSM的操作系统信息和EC2的实例名称标签,最直接的方式是用jq工具关联两个命令的输出,通过InstanceId字段匹配数据。以下是具体实现步骤:
1. 核心思路
- 从
aws ssm describe-instance-information提取InstanceId、PlatformType、PlatformName - 从
aws ec2 describe-instances提取InstanceId、实例名称标签(Name) - 用
jq将两个数据集按InstanceId合并,输出包含所有目标字段的结果
2. 完整命令
直接执行以下命令即可得到合并后的结构化数据(支持JSON或表格输出):
输出为JSON格式
jq -n \ --argjson ssm_data "$(aws ssm describe-instance-information --query "InstanceInformationList[*].{InstanceId:InstanceId, PlatformType:PlatformType, PlatformName:PlatformName}" --output json)" \ --argjson ec2_data "$(aws ec2 describe-instances --query "Reservations[*].Instances[*].{InstanceId:InstanceId, Name:Tags[?Key=='Name'].Value|[0]}" --output json | jq -s 'flatten')" \ '$ssm_data | map(. + ($ec2_data | .[] | select(.InstanceId == .[].InstanceId)))'
输出为表格格式
如果需要更易读的表格,可在上述命令后追加管道转成表格:
jq -n \ --argjson ssm_data "$(aws ssm describe-instance-information --query "InstanceInformationList[*].{InstanceId:InstanceId, PlatformType:PlatformType, PlatformName:PlatformName}" --output json)" \ --argjson ec2_data "$(aws ec2 describe-instances --query "Reservations[*].Instances[*].{InstanceId:InstanceId, Name:Tags[?Key=='Name'].Value|[0]}" --output json | jq -s 'flatten')" \ '$ssm_data | map(. + ($ec2_data | .[] | select(.InstanceId == .[].InstanceId)))' | \ aws cli convert-output-format --input-format json --output-format table
3. 注意事项
- 只有已激活SSM Agent的实例会出现在SSM查询结果中,未安装/未激活的实例将缺失操作系统信息
- 如果实例没有设置
Name标签,对应的Name字段会显示为null - 确保已配置好AWS CLI的权限,同时具备
ssm:DescribeInstanceInformation和ec2:DescribeInstances权限
内容的提问来源于stack exchange,提问作者Lekost93
相关产品推荐
相关产品推荐

