AWS 서비스 상한선이 완화되는 상황을 한눈에 보고 싶습니다.
AWS를 엔지니어로 사용하면 고객(엔지니어가 아닌)과의 차이를 자주 파악할 수 있습니다.
엔지니어로서'콘솔에서 보면 된다'는 내용도 손님들에게는 매개변수표 등 자료를 꺼내 관리하려는 경우도 있었다.
이번에는 서비스 상한선이 완화되는 상황을 한눈에 보고 싶습니다.
※ 프로그램 경력이 얕으니 코드상의 개선 방안이 있으면 댓글로 남겨주세요
2. 본 보도의 내용
일부 참고 문장을 기초로 하여 파이톤의 보토코어를 사용하다
JSON 형식으로 서비스 상한선이 완화된 상황을 일람하다.
3. 설치 내용
list_services()
API를 사용하여 서비스 코드 목록 작성list_service_quotas()API
로 최신 상한 완화 상황list_aws_default_service_quotas()
로 API를 사용하여 기본 상한 완화 상태5-1. 출처
import boto3
region='ap-northeast-1'
result_quotas={'Quotas': []}
# サービスコード一覧作成
service_list = boto3.client('service-quotas', region_name=region).list_services()
tmp_result_service_list = service_list
if 'NextToken' in tmp_result_service_list:
while 'NextToken' in tmp_result_service_list:
next_token = tmp_result_service_list['NextToken']
tmp_result_service_list = boto3.client('service-quotas', region_name=region).list_services(NextToken=next_token)
service_list['Services'].extend(tmp_result_service_list['Services'])
# サービスクォータ一覧作成
for service_code in service_list['Services']:
service_quotas = boto3.client(
'service-quotas',
region_name=region
).list_service_quotas(
ServiceCode=service_code['ServiceCode']
)
tmp_service_quotas = service_quotas
if 'NextToken' in tmp_service_quotas:
while 'NextToken' in tmp_service_quotas:
next_token = tmp_service_quotas['NextToken']
tmp_service_quotas = boto3.client(
'service-quotas',
region_name=region
).list_service_quotas(
ServiceCode=service_code['ServiceCode'],
NextToken=next_token
)
service_quotas['Quotas'].extend(tmp_service_quotas['Quotas'])
result_quotas['Quotas'].extend(service_quotas['Quotas'])
# デフォルトサービスクォータ一覧作成
service_default_quotas = {}
result_default_quotas={'Quotas': []}
for service_code in service_list['Services']:
service_default_quotas = boto3.client(
'service-quotas',
region_name=region
).list_aws_default_service_quotas(
ServiceCode=service_code['ServiceCode']
)
tmp_service_default_quotas = service_default_quotas
if 'NextToken' in tmp_service_default_quotas:
while 'NextToken' in tmp_service_default_quotas:
next_token = tmp_service_default_quotas['NextToken']
tmp_service_default_quotas = boto3.client(
'service-quotas',
region_name=region
).list_aws_default_service_quotas(
ServiceCode=service_code['ServiceCode']
,NextToken=next_token
)
service_default_quotas['Quotas'].extend(tmp_service_default_quotas['Quotas'])
result_default_quotas['Quotas'].extend(service_default_quotas['Quotas'])
# サービスクォータ一覧とデフォルトサービスクォータ一覧をマージ
for service_default_quota in result_default_quotas['Quotas']:
for service_quota in result_quotas['Quotas']:
num_quota = result_quotas['Quotas'].index(service_quota)
if service_quota['QuotaCode'] == service_default_quota['QuotaCode']:
result_quotas['Quotas'][num_quota]['DefaultValue'] = service_default_quota['Value']
with open('result_quotas.txt', 'a') as f:
print(result_quotas, file=f)
5-2. 서비스 목록 결과 이미지ServiceCode
Service-Qotas 시스템 API에서 AWS 서비스를 분류하는 데 사용됩니다.{
'NextToken': '***',
'Services':
[
{
'ServiceCode': 'AWSCloudMap',
'ServiceName': 'AWS Cloud Map'
},
{
'ServiceCode': 'access-analyzer',
'ServiceName': 'Access Analyzer'
},
{
'ServiceCode': 'acm',
'ServiceName': 'AWS Certificate Manager (ACM)'
},
{
~略~
5-3. 최신 상한 완화 일람 결과 이미지QuotaCode
는 각 할당량에 할당된 식별자입니다.QuotaName
는 인류가 쉽게 이해할 수 있는 할당명이다.Value
실제 상한 완화치를 획득.상한선을 완화하지 않으면 기본값을 얻을 수 있습니다.Unit
실제로 NULL에서 취득한 경우가 많았다.Adjustable
TRUE/FALSE를 통해 할당량을 조정할 수 있는지 여부를 얻습니다.GlobalQuota
TRUE/FALSE를 통해 영역 및 글로벌 할당량을 확보합니다.다른 것도 반응 구조가 있지만 사랑하지 않는다.
{
'Quotas':
[
{
'ServiceCode': 'AWSCloudMap',
'ServiceName': 'AWS Cloud Map',
'QuotaArn': 'arn:aws:servicequotas:ap-northeast-1:***:AWSCloudMap/L-*',
'QuotaCode': 'L-*',
'QuotaName': 'DiscoverInstances operation per account burst rate',
'Value': 2000.0,
'Unit': 'None',
'Adjustable': True,
'GlobalQuota': False
},
{
~略~
5-4. 기본 상한 완화 결과 그림 보기5-3의 차이만 설명한다.
Value
기본 상한치를 획득합니다.{
'Quotas':
[
{
'ServiceCode': 'AWSCloudMap',
'ServiceName': 'AWS Cloud Map',
'QuotaArn': 'arn:aws:servicequotas:ap-northeast-1:***:AWSCloudMap/L-*',
'QuotaCode': 'L-*',
'QuotaName': 'Custom attributes per instance',
'Value': 30.0,
'Unit': 'None',
'Adjustable': False,
'GlobalQuota': False
},
{
~略~
5-5. 최종 결과 이미지5-4 Value를 DefaultValue로 대체하여 결합합니다.
{
'Quotas':
[
{
'ServiceCode': 'AWSCloudMap',
'ServiceName': 'AWS Cloud Map',
'QuotaArn': 'arn:aws:servicequotas:ap-northeast-1:***:AWSCloudMap/L-*',
'QuotaCode': 'L-*',
'QuotaName': 'DiscoverInstances operation per account burst rate',
'Value': 2000.0,
'Unit': 'None',
'Adjustable': True,
'GlobalQuota': False,
'DefaultValue': 2000.0
},
{
~略~
6. 요약초보자에게는 한 번의 API 실행을 모두 얻을 수 없으며, 반드시 지정한nextpagetoken처럼 순환 처리를 실시해야 한다는 것은 매우 어렵다.
최종 결과 항목 수가 1천건 이상이어서 JSON 파일을 처리하기가 쉽지 않다고 생각한다.
excel 파일화 처리 등을 추가하여 더욱 쉽게 이용할 수 있습니다.
Reference
이 문제에 관하여(AWS 서비스 상한선이 완화되는 상황을 한눈에 보고 싶습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yoshinori-takeuchi/items/65b59fde353bec5e970c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)