我正在研究boto3 - 适用于AWS的SDK python。
如何通过boto3库获取AWS服务限制,如下图:
http://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html
答案 0 :(得分:3)
可以通过EC2.Client.describe_account_attributes()
查询其中一些限制
describe_account_attributes(**kwargs)
描述你的属性 AWS账户。以下是支持的帐户属性:
...
max-instances
:您可以使用的最大按需实例数 运行
vpc-max-security-groups-per-interface
:最大数量 您可以分配给网络接口的安全组。
max-elastic-ips
:您的最大弹性IP地址数 可以分配用于EC2-Classic。
vpc-max-elastic-ips
:The 您可以分配使用的最大弹性IP地址数 使用EC2-VPC。
答案 1 :(得分:0)
为什么不使用awsLimitchecker? 我每天早上用它来创建一个报告并将其发送给一个松散的小组,在那里我监控我们当前的限制。工作得很好。
答案 2 :(得分:0)
有一个比 awsLimitChecker 更好的选项,因为并非可以通过它检索所有AWS服务实例的配额,例如,对于许多EC2实例,您需要使用TrustedAdvisor service和许多EC2根本无法检索服务实例的配额。同样,AWS最近也将基于按需服务配额EC2实例的限制更改为基于vCPU的限制,分类如下:
检索服务配额的另一种方法是使用boto3's Service Quota client。您可以使用list_service_quotas之类的API来检索aws服务( ec2 )的服务配额支持的完整列表。或者对于特定的服务配额,您可以使用get_service_quota。另外,要使用上述API,请确保将service quotas actions(策略)添加到IAM用户/组中。
以下是源代码段。
import boto3
map_quota_codes = {}
client = ''
def get_service_quota(self, quota_name):
"""
Retrieves requested AWS service quota.
:param str quota_name: Full name of Quota e.g. Running On-Demand Standard (A, C, D, H, I, M, R, T, Z) instances
"""
if not map_quota_codes or quota_name not in map_quota_codes:
return {}
quota_code = map_quota_codes[quota_name]["QuotaCode"]
res = client.get_service_quota(ServiceCode = 'ec2', QuotaCode = quota_code)
return res["Quota"]
if __name__ == "main":
# AWS account login should be done here.
client = boto3.client('service-quotas')
service_quota_resp = self.client.list_service_quotas(ServiceCode = 'ec2')
# this is required to map get correct quota code for respective ec2 service quota.
for quota in service_quota_resp['Quotas']:
map_quota_codes[quota["QuotaName"]] = {'QuotaCode': quota["QuotaCode"]}
while "NextToken" in service_quota_resp:
service_quota_resp = client.list_service_quotas(ServiceCode = 'ec2', NextToken = service_quota_resp["NextToken"])
for quota in service_quota_resp['Quotas']:
map_quota_codes[quota["QuotaName"]] = {'QuotaCode': quota["QuotaCode"]}
末尾注意:如果您喜欢此说明,而我的回答则可以帮助您对其进行投票并将其标记为答案。谢谢
jack