使用 aws cli 列出附加到实例列表的所有卷

使用 aws cli 列出附加到实例列表的所有卷

我正在使用aws-cli并且我需要所有实例及其关联卷的列表。

instance-name,instance-id,volumes-associated

describe-instancesdescribe-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

相关内容