我正在使用aws-cli
并且我需要所有实例及其关联卷的列表。
instance-name,instance-id,volumes-associated
describe-instances
和describe-volumes
列出实例和卷的方式不同。但我需要的是如上格式的合并列表。一个实例可能关联多个卷。
答案1
该命令将输出:
- 与“名称”标签关联的值
- 实例 ID
EBS 卷 ID
aws ec2 describe-instances --query 'Reservations[*].Instances[*].[Tags[?Key==`Name`].Value,InstanceId,BlockDeviceMappings[*].Ebs.VolumeId]' --output text i-0d9c9b94b6583af4c Database vol-629feaa2 i-3da61da2 Web B vol-a6d443e7 i-7d264642 Web A vol-7840ce4a
一个实例可能有多个 EBS 卷关联。
答案2
在我的例子中,我需要列出所有已停止的实例和相关卷,以清理云资源并节省成本。以下代码将为您完成这项工作。如果您将其设置为 json,则输出是人性化的。
aws ec2 describe-instances --filters "Name=instance-state-name,Values=stopped" --query 'Reservations[*].Instances[*].[Tags[?Key==`Name`].Value,InstanceId,BlockDeviceMappings[*].Ebs.VolumeId]' --output text
答案3
再比如,输出是json格式:
aws ec2 describe-instances --query 'Reservations[*].Instances[*].{Name:ImageId,InstanceId:InstanceId,VolumeInfo:BlockDeviceMappings}' --output json
答案4
使用此命令我可以列出带有实例 ID 和卷大小的卷详细信息。
aws ec2 describe-volumes –-query "Volumes[*].[Attachments[0].VolumeId,AvailabilityZone,Attachments[0].InstanceId,Attachments[0].State,Size]" --output text > test.txt
但是我的查询必须合并整个实例列表,其中包括实例 ID、实例状态、区域、平台、密钥对名称以及附加卷名称、卷 ID、卷大小和挂载路径名(如 /dev/sda1),
请在这件事上给予我帮助。
使用此命令可以获取实例详细信息,但我需要单独查询才能获取所有详细信息。
aws ec2 describe-instances --filters "Name=instance-state-name,Values=*" --query "Reservations[].Instances[].[Tags[?Key==`Name`]| [0].Value,InstanceId,State.Name,InstanceType,Placement.AvailabilityZone,PrivateIpAddress,VolumeInfo:BlockDeviceMappings" --output text > instances.txt