You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过AWS CLI按设备名排序XYZ集群EC2实例的卷信息

需求与问题

需要获取XYZ集群下20台EC2实例的列表,以及对应的卷信息(设备名、卷ID),但当前查询输出中不同实例的卷顺序不一致,要求将输出中的设备按设备名排序。

现有命令

aws ec2 describe-instances --filters 'Name=tag:cluster,Values=xyz' --query "Reservations[].Instances[].[InstanceId,BlockDeviceMappings[].[DeviceName,Ebs.VolumeId][]]"  --output text | paste -d" " - -

当前输出

-- This is how it gets it
i-abc /dev/sdc vol-sdc /dev/sdb vol-sdb /dev/sdd vol-sdad
i-def /dev/sdd vol-sdd /dev/sdb vol-sdb /dev/sdc vol-sdac

期望输出

-- how I want it
i-abc /dev/sdb vol-sdb /dev/sdc vol-sdc /dev/sdd vol-sdad
i-def /dev/sdb vol-sdb /dev/sdc vol-sdac /dev/sdd vol-sdd

解决方案

直接在AWS CLI的查询阶段对块设备按设备名排序,无需后续管道处理:

修改后的命令

aws ec2 describe-instances --filters 'Name=tag:cluster,Values=xyz' --query "Reservations[].Instances[].[InstanceId, sort_by(BlockDeviceMappings, &DeviceName)[].[DeviceName,Ebs.VolumeId]]" --output text

说明

  • 用sort_by(BlockDeviceMappings, &DeviceName)对实例的块设备映射按DeviceName升序排序,排序逻辑直接嵌入AWS CLI的查询语句中,一步到位。
  • 移除原命令中的paste管道,--output text会自动将排序后的设备信息按空格分隔,输出格式完全匹配需求。

测试后输出的设备名将统一按/dev/sdb→/dev/sdc→/dev/sdd的顺序排列,符合期望格式。

内容的提问来源于stack exchange,提问作者nmakb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 16:57:07