Boto3获取EC2实例Image.name属性失败及慢加载警告求助
问题:Boto3会话复用后无法加载EC2镜像嵌套属性
我有一个运行时长约20分钟的测试脚本,情况如下:
- AWSSession在测试启动时初始化,仅在初始几个步骤中使用
- 测试执行约10分钟后,复用启动时创建的AWSSession;返回该会话的方法会在令牌过期超过10分钟时创建新会话
当代码尝试通过ec2_instance.image.name(ec2_instance为EC2实例对象)获取镜像名称时,出现警告:
pydevd warning: boto3 Getting attribute Image.name was slow
我尝试过显式获取镜像再读取名称:
image = self.ec2_resource.Image(ec2_instance.image_id) image_name: str = image.name
但仍出现相同警告,且无法获取镜像名称,触发如下错误:
self = ec2.Image(id='ami-0cd653a2ee34f2e96') def property_loader(self): if self.meta.data is None: if hasattr(self, 'load'): self.load() else: raise ResourceLoadException( f'{self.__class__.__name__} has no load method' ) > return self.meta.data.get(name) E AttributeError: 'NoneType' object has no attribute 'get' /usr/local/lib/python3.9/site-packages/boto3/resources/factory.py:386: AttributeError
目前观察到的异常现象:
- 多数嵌套对象(尤其是镜像相关属性)无法加载,但非嵌套属性均可正常访问
- 测试初期访问该属性时完全正常
我推测这是会话长时间未使用导致的时序问题,已尝试将令牌更新时间改为5分钟,但问题依旧。
请问是否有人遇到过类似问题?
Boto3版本:1.24.87
内容的提问来源于stack exchange,提问作者Praveen Tata
相关产品推荐
相关产品推荐

