AWS提供了支持限制检查并在限制达到时自动暂停整个AWS账户的服务,称为AWS限制监控。可以使用AWS Services Limits API和AWS Management Console设置和监视限制。下面是一个示例,使用AWS SDK for Python(Boto3)自动暂停AWS账户:
import boto3
import json
import time
sts_client = boto3.client('sts')
account_id = sts_client.get_caller_identity()['Account']
cloudwatch = boto3.client('cloudwatch')
# 限制名称和域
limit_name = 'ConcurrentStreamsPerDistribution'
limit_domain = 'CloudFront'
# 获取限制值
response = cloudwatch.get_metric_data(
MetricDataQueries=[
{
'Id': 'm1',
'MetricStat': {
'Metric': {
'Namespace': 'AWS/Limits',
'MetricName': limit_name,
'Dimensions': [
{
'Name': 'LimitName',
'Value': limit_name
},
{
'Name': 'Service',
'Value': limit_domain
},
{
'Name': 'Account',
'Value': account_id
}
]
},
'Period': 300,
'Stat': 'Maximum',
'Unit': 'Count'
},
'ReturnData': True
},
],
StartTime=time.time() - 3600,
EndTime=time.time()
)
limit_value = response['MetricDataResults'][0]['Values'][0]
# 限制检查
if limit_value >= 100:
# 暂停整个账户
response = json.loads((boto3.client('support')).create_case(
communicationBody='Account suspended due to limit '+limit_name+' exceeding '+str(limit_value)+' in '+limit_domain+' domain.',
categoryCode='limit',
severityCode='high',
subject='AWS account suspended',
caseType='service-limit'
)['caseId'])
以上代码通过使用AWS CloudWatch监控AWS限制并在达到限制时暂停