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

如何通过AWS API(含boto3)查看服务配额与实际资源使用量的差值?

如何用Boto3对比AWS服务配额与实际使用量

当然可以实现,你需要分两步操作:获取服务配额上限,再获取对应资源的实际使用量,最后对比两者差值来判断是否即将达限。以下是具体实现方案:

1. 获取服务配额上限(使用Service Quotas客户端)

用boto3的service-quotas客户端调用get_service_quota方法,需要指定目标服务的代码和对应配额的代码。

示例代码(以Auto Scaling Groups为例):

import boto3

# 初始化Service Quotas客户端
sq_client = boto3.client('service-quotas')

# 获取Auto Scaling Groups的配额上限
response = sq_client.get_service_quota(
    ServiceCode='autoscaling',
    QuotaCode='L-DA67816A'  # 对应"Auto Scaling groups per region"的配额代码
)
quota_limit = response['Quota']['Value']
print(f"Auto Scaling Groups 配额上限: {quota_limit}")

2. 获取实际资源使用量(对应服务的客户端)

针对不同AWS服务,使用对应的boto3客户端查询实际运行的资源数量。

Auto Scaling Groups实际数量示例:

# 初始化Auto Scaling客户端
asg_client = boto3.client('autoscaling')

# 获取当前区域所有Auto Scaling Groups
asg_response = asg_client.describe_auto_scaling_groups()
actual_count = len(asg_response['AutoScalingGroups'])
print(f"实际运行的Auto Scaling Groups数量: {actual_count}")

# 计算差值与使用率
remaining_quota = quota_limit - actual_count
usage_percent = (actual_count / quota_limit) * 100
print(f"剩余配额: {remaining_quota}, 当前使用率: {usage_percent:.2f}%")

EC2实例实际数量示例:

假设查询On-Demand标准实例的配额与实际使用量:

# 获取EC2 On-Demand标准实例的配额上限
ec2_quota_response = sq_client.get_service_quota(
    ServiceCode='ec2',
    QuotaCode='L-1216C47A'  # 对应"Running On-Demand Standard (A, C, D, H, I, M, R, T, Z) instances"的配额代码
)
ec2_quota_limit = ec2_quota_response['Quota']['Value']

# 初始化EC2客户端
ec2_client = boto3.client('ec2')

# 查询运行中的On-Demand标准实例数量
ec2_response = ec2_client.describe_instances(
    Filters=[
        {'Name': 'instance-state-name', 'Values': ['running']},
        {'Name': 'instance-lifecycle', 'Values': ['normal']},  # 过滤On-Demand实例
        {'Name': 'instance-type', 'Values': ['t2.*', 't3.*', 'm5.*', 'c5.*']}  # 按需指定标准实例类型范围
    ]
)
actual_ec2_count = sum(len(res['Instances']) for res in ec2_response['Reservations'])
print(f"EC2标准实例配额上限: {ec2_quota_limit}, 实际运行数量: {actual_ec2_count}")

3. 判断是否即将达限

可以设置自定义阈值(比如使用率超过80%),当实际使用量接近阈值时触发提示:

threshold_percent = 80
if usage_percent >= threshold_percent:
    print(f"警告:Auto Scaling Groups使用率已达{usage_percent:.2f}%,即将接近配额上限!")
else:
    print(f"当前使用率{usage_percent:.2f}%,处于安全范围。")

实用提示

  • 配额代码可以通过AWS控制台的Service Quotas页面查询,或调用list_service_quotas批量列出指定服务的所有配额:
    # 列出Auto Scaling服务的所有配额详情
    all_quotas = sq_client.list_service_quotas(ServiceCode='autoscaling')
    for quota in all_quotas['Quotas']:
        print(f"配额名称: {quota['QuotaName']}, 配额代码: {quota['QuotaCode']}, 当前上限: {quota['Value']}")
    
  • 确保执行代码的IAM角色拥有servicequotas:GetServiceQuota、autoscaling:DescribeAutoScalingGroups、ec2:DescribeInstances等对应权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 05:05:04