使用 BOTO3 获取 AWS 账户的限制

Getting the Limit of AWS Accounts using BOTO3

我需要在 AWS 上监控我的基础设施。为此,我正在编写 boto3 函数来了解我帐户的限制。但是,我无法实现以下目标:

  1. EBS 卷的限制(无法找到任何可以知道我可以创建的最大卷数的方法)
  2. 安全组总数限制
  3. 每个安全组的安全规则限制
  4. 弹性 IP 的最大数量。由于我有不同的 AWS 账户,并且每个账户的限制各不相同。我需要从每个帐户动态获取它。

Trusted Advisor 似乎有一个 API 用于提供限制检查。此外,特定服务有 API 调用可用于描述限制。

看看 awslimitchecker. It seems to provide a large number of limit checks. You could even look at the awslimitchecker code 看看它是如何获得限制的。

基本上,AWS 会向您显示 VPC services limit here ,但可以通过向 AWS 发送电子邮件请求来解除一些软限制。

EBS soft limit is here

如果您真正关心的是成本,那么(eg.for 那些在没有 CDN 的 AWS 中托管网页的人),您应该 create a billing alarm as describe here

我们可以通过使用信任顾问服务来实现这一点。 在我的案例中,您只需要通过直接 API 调用信任顾问(例如服务限制)来监控结果。 https://console.aws.amazon.com/trustedadvisor/home?#/category/performance?checkId=eW7HH0l7J9

对于 #3(得到 "Inbound or outbound rules per security group"):

import boto3


def get_limit_value(service_code, quota_name):
    client = boto3.client('service-quotas')
    paginator = client.get_paginator('list_service_quotas')
    page_iterator = paginator.paginate(ServiceCode=service_code)
    for page in page_iterator:
        for quota in page['Quotas']:
            if quota['QuotaName'] == quota_name:
                return int(quota['Value'])

rules_per_sg = get_limit_value('vpc', 'Inbound or outbound rules per security group')
print(rules_per_sg)