🍷
AWSの全サービスの中からクォータがひっ迫しているものを抽出する。
初めに
AWSの全サービスの中からクォータがひっ迫しているものを抽出する方法を紹介します。
皆様の中には気づかないうちにクォータを超えてしまい、エラーが出てしまうということを経験したかたがいらっしゃると思います。
クォータの中の使用量は基本的にCloudWatchのメトリクスで確認できますが、多すぎるので全てを確認するのが辛いです。
そこでスクリプトを作成しました。
code
import datetime
import boto3
#確認する期間
check_range_day = 7
now = datetime.datetime.now()
start_date = (now - datetime.timedelta(days=check_range_day)).strftime("%Y-%m-%dT%H:%M:%SZ")
now_str = now.strftime("%Y-%m-%dT%H:%M:%SZ")
reagion_name = "ap-northeast-1"
client = boto3.client("service-quotas", reagion_name=reagion_name)
def get_all_services()->list:
# すべてのサービスを取得
paginator = client.get_paginator("list_services")
all_services = []
for page in paginator.paginate():
all_services.extend(page["Services"])
return all_services
def get_high_usage_quotas(threshold=0.8)->list:
cw_client = boto3.client("cloudwatch", reagion_name=reagion_name)
high_usage_quotas = []
for service in get_all_services():
service_code = service["ServiceCode"]
# 対象サービスのクオータ一覧を取得
paginator_quotas = client.get_paginator("list_service_quotas")
all_quotas = []
for page in paginator_quotas.paginate(ServiceCode=service_code):
all_quotas.extend(page["Quotas"])
for quota in all_quotas:
## クォータの使用率を取得
if "UsageMetric" in quota:
response = cw_client.get_metric_statistics(
Namespace=quota["UsageMetric"]["MetricNamespace"],
MetricName=quota["UsageMetric"]["MetricName"],
Dimensions=[
{"Name": key, "Value": value}
for key, value in quota["UsageMetric"][
"MetricDimensions"
].items()
],
StartTime=start_date,
EndTime=now_str,
Period=60 * 60 * 24 * check_range_day,
Statistics=["Maximum"],
)
if len(response["Datapoints"]) > 0:
if (
response["Datapoints"][0]["Maximum"] / quota["Value"]
> threshold
):
print(
f'Quota Name : {quota["QuotaName"]}',
f'Quota Rate : {response["Datapoints"][0]["Maximum"] / quota["Value"]}',
f'Max Usage : {response["Datapoints"][0]["Maximum"]}',
f'Limit : {quota["Value"]}',
)
high_usage_quotas.append(quota)
return high_usage_quotas
quotas = get_high_usage_quotas(threshold=0.5)
終わりに
- なんかいい方法有ったら教えてください
- 全部の cloud watch metrics にアラーム付ける方がなんかいい気がしてきた・・・
Discussion