使用 BOTO3 获取 AWS 账户的限制
Getting the Limit of AWS Accounts using BOTO3
我需要在 AWS 上监控我的基础设施。为此,我正在编写 boto3 函数来了解我帐户的限制。但是,我无法实现以下目标:
- EBS 卷的限制(无法找到任何可以知道我可以创建的最大卷数的方法)
- 安全组总数限制
- 每个安全组的安全规则限制
- 弹性 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 发送电子邮件请求来解除一些软限制。
如果您真正关心的是成本,那么(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)
我需要在 AWS 上监控我的基础设施。为此,我正在编写 boto3 函数来了解我帐户的限制。但是,我无法实现以下目标:
- EBS 卷的限制(无法找到任何可以知道我可以创建的最大卷数的方法)
- 安全组总数限制
- 每个安全组的安全规则限制
- 弹性 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 发送电子邮件请求来解除一些软限制。
如果您真正关心的是成本,那么(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)