카테고리 없음

[boto3] Paginator 기능을 이용하여 100개가 넘는 ASG 목록 조회하기

[앙금빵] 2024. 4. 21.

이슈

describe_auto_scaling_groups API를 통해 계정별 ASG 현황에 대한 정보를 파싱하는 로직이 존재한다. 최근 stg 환경이 추가되어지게 되어지면서 100개 이상 그룹에 대한 정보를 불러들어야 할 필요성이 대두되었다.

 


해결

기존 MaxRecord 파라미터를 100으로 수정하여 해결하였으나 100개 이상의 정보를 가지고 오려면 Paginator 기능을 활용하여 해결할 수 있다.

Paginator는 Boto3(AWS SDK for Python)에서 제공하는 메소드의 하나로, AWS 서비스가 반환하는 데이터를 페이지화해서 관리할 수 있게 해 주는 기능이다.데이터를 페이지 단위로 나누어 조금씩 가져오게 해주는 기술이며 주로 데이터 양이 많을 때 사용된다.

 

아래는 Paginator를 이용한 Auto Scaling Group 수량을 측정하는 예시이다.

import boto3

def list_autoscaling_groups():
    client = boto3.client('autoscaling')

    # Paginator 생성 -> describe_auto_scaling_groups에 대한 정보가 Page 형태로 저장
    paginator = client.get_paginator('describe_auto_scaling_groups')
    page_iterator = paginator.paginate()

    asg_list = []
    total_asg_count = 0

    # 관련 정보가 저장된 각 Page들을 Loop
    for page in page_iterator:
        groups = page['AutoScalingGroups']
        asg_list.extend(groups)
        total_asg_count += len(groups)

    print(f"ASG 총 수량: {total_asg_count}")
    return asg_list
    
asgs = list_autoscaling_groups()

 

 

생각보다 간단하게 사용할 수 있으며 이를 이용하여 기존 이용중인 로직에 응용하면 된다.

 

 


Reference

https://boto3.amazonaws.com/v1/documentation/api/latest/guide/paginators.html

https://gonigoni.kr/posts/list-over-1000-files-from-s3/

 

 

댓글