如何统计AWS us-west-2区域内运行状态的EC2实例总数量
解决方案
修改后的完整代码如下:
import boto3 ec2client = boto3.client('ec2', region_name='us-west-2') response = ec2client.describe_instances() running_count = 0 for reservation in response["Reservations"]: for instance in reservation["Instances"]: if instance['State']['Name'] == 'running': running_count += 1 print(f"us-west-2区域运行状态EC2实例总数:{running_count}")
修改说明
- 新增初始值为0的
running_count计数器变量,用于累计符合条件的实例数量 - 原代码打印实例ID的逻辑替换为计数器自增
- 所有实例遍历完成后直接输出计数器的最终值即可得到总数
可选优化(应对实例数量超过1000的场景)
AWS的describe_instances接口默认单次最多返回1000条实例信息,如果账号下该区域EC2实例总数超过1000,需要处理分页Token避免漏统计,优化后代码如下:
import boto3 ec2client = boto3.client('ec2', region_name='us-west-2') running_count = 0 paginator = ec2client.get_paginator('describe_instances') for page in paginator.paginate(): for reservation in page["Reservations"]: for instance in reservation["Instances"]: if instance['State']['Name'] == 'running': running_count += 1 print(f"us-west-2区域运行状态EC2实例总数:{running_count}")
内容的提问来源于stack exchange,提问作者ADARSH K
相关产品推荐
相关产品推荐

