如何查询AWS Reserved Instance剩余容量及关联情况(Python)
AWS预留实例(RI)相关问题解答
一、查询预留实例剩余容量及已关联实例
1. 控制台操作方式
- 进入EC2控制台,左侧导航栏选择预留实例,找到目标RI后,可直接查看总实例数和已使用数,剩余容量=总实例数-已使用数。
- 若要查看具体关联的按需实例,在EC2控制台的实例列表中,点击右上角齿轮图标进入列设置,勾选「预留实例」列,就能看到每个实例对应的RI ID。
2. AWS CLI操作方式
- 查询所有活跃RI的基础信息(含总容量):
aws ec2 describe-reserved-instances --query 'ReservedInstances[*].{RI_ID:ReservedInstancesId, 实例类型:InstanceType, 总容量:InstanceCount, 状态:State}'
- 查询所有实例关联的RI信息,统计已使用容量:
aws ec2 describe-instances --query 'Reservations[*].Instances[*].{实例ID:InstanceId, 关联RI_ID:ReservedInstanceId}'
将上述结果按RI ID分组计数,再用对应RI的总容量减去该计数,即可得到剩余容量。
二、同属性RI的关联规则
当存在多个同实例类型、同平台、同区域的预留实例时,AWS遵循以下关联逻辑:
- 优先匹配与按需实例属性完全一致的RI(包括实例类型、平台、区域、可用区(仅针对可用区专属RI)、租期、付款方式)。
- 若有多个符合条件的RI,会先关联创建时间更早的RI,直到该RI容量耗尽,再使用下一个RI的容量。
- 区域型RI可跨可用区匹配实例,可用区专属RI仅匹配同可用区的实例。
三、Python代码实现查询
使用boto3库可直接调用AWS API获取数据,以下是实用示例:
1. 查询所有RI的剩余容量
import boto3 # 初始化EC2客户端 ec2 = boto3.client('ec2') # 获取所有活跃状态的预留实例 ri_response = ec2.describe_reserved_instances(Filters=[{'Name': 'state', 'Values': ['active']}]) reserved_instances = ri_response['ReservedInstances'] # 统计每个RI关联的实例数量 ri_usage_map = {} instance_response = ec2.describe_instances() for reservation in instance_response['Reservations']: for instance in reservation['Instances']: ri_id = instance.get('ReservedInstanceId') if ri_id: ri_usage_map[ri_id] = ri_usage_map.get(ri_id, 0) + 1 # 计算并输出每个RI的剩余容量 for ri in reserved_instances: ri_id = ri['ReservedInstancesId'] total = ri['InstanceCount'] used = ri_usage_map.get(ri_id, 0) remaining = total - used print(f"RI ID: {ri_id}") print(f"实例类型: {ri['InstanceType']}") print(f"总容量: {total} | 已使用: {used} | 剩余: {remaining}\n")
2. 查询实例关联的RI信息
import boto3 ec2 = boto3.client('ec2') response = ec2.describe_instances() for reservation in response['Reservations']: for instance in reservation['Instances']: instance_id = instance['InstanceId'] linked_ri = instance.get('ReservedInstanceId', '未关联任何预留实例') print(f"实例ID: {instance_id}") print(f"关联RI ID: {linked_ri}\n")
注意:运行代码前需确保已配置AWS凭证(可通过环境变量、
~/.aws/credentials文件或IAM角色配置)。
内容的提问来源于stack exchange,提问作者subbareddy
相关产品推荐
相关产品推荐

