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

使用Boto3无法打印InstanceId问题求助

解决EC2卷InstanceId KeyError问题

问题根源

AWS EC2的describe_volumes接口返回的Volumes元素中,不存在直接的InstanceId键:

  • 当卷挂载到实例时,InstanceId存储在Attachments列表的子对象中
  • 当卷未挂载时,Attachments是空列表,此时直接访问i['InstanceId']必然触发KeyError

修正代码

import boto3

ec2 = boto3.client('ec2')
volumes = ec2.describe_volumes()

for vol in volumes['Volumes']:
    # 处理挂载/未挂载两种情况
    instance_id = vol['Attachments'][0]['InstanceId'] if vol['Attachments'] else '无关联实例'
    print(f"InstanceId: {instance_id}")
    print(f"VolumeId: {vol['VolumeId']}")
    print(f"State: {vol['State']}\n")

额外说明

如果你的卷可能同时挂载到多个实例,可以遍历Attachments列表获取所有关联的InstanceId:

for vol in volumes['Volumes']:
    print(f"VolumeId: {vol['VolumeId']}")
    print(f"State: {vol['State']}")
    if vol['Attachments']:
        print("关联实例ID:")
        for attachment in vol['Attachments']:
            print(f"- {attachment['InstanceId']}")
    else:
        print("关联实例ID: 无")
    print("---")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:45:33