AWS 서비스 상한선이 완화되는 상황을 한눈에 보고 싶습니다.

1. 시작
AWS를 엔지니어로 사용하면 고객(엔지니어가 아닌)과의 차이를 자주 파악할 수 있습니다.
엔지니어로서'콘솔에서 보면 된다'는 내용도 손님들에게는 매개변수표 등 자료를 꺼내 관리하려는 경우도 있었다.
이번에는 서비스 상한선이 완화되는 상황을 한눈에 보고 싶습니다.
※ 프로그램 경력이 얕으니 코드상의 개선 방안이 있으면 댓글로 남겨주세요
2. 본 보도의 내용
일부 참고 문장을 기초로 하여 파이톤의 보토코어를 사용하다
JSON 형식으로 서비스 상한선이 완화된 상황을 일람하다.
3. 설치 내용
  • list_services() API를 사용하여 서비스 코드 목록 작성
  • 1.의 결과는 INPUTlist_service_quotas()API로 최신 상한 완화 상황
  • 을 얻었다.
  • 1.의 결과는 INPUTlist_aws_default_service_quotas()로 API를 사용하여 기본 상한 완화 상태
  • 를 획득하였습니다.
  • 2.그리고의 컨텐츠, 목록 작성
  • 4. 참조
  • Boto3 Docs 1.20.4 documentation - ServiceQuotas -
  • AWS Docts - 참조 안내서(AWS 서비스 할당량) -
  • 5. 설치
    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 파일화 처리 등을 추가하여 더욱 쉽게 이용할 수 있습니다.

    좋은 웹페이지 즐겨찾기