Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Boto3 라이브러리로 AWS S3 버킷 목록 조회하기

문제 개요

Python에서 boto3 라이브러리를 사용하여 AWS에 존재하는 모든 S3 버킷의 목록을 가져오는 방법을 알아보겠습니다.

예시 – BUCKET_1, BUCKET_2, BUCKET_3과 같은 버킷 이름 목록을 조회한다고 가정해 보겠습니다.

문제 해결 접근 방식

1단계 – boto3와 예외 처리를 위한 botocore.exceptions를 임포트합니다.

2단계 – boto3 라이브러리를 사용하여 AWS 세션(Session)을 생성합니다.

3단계 – S3를 위한 AWS 리소스(Resource) 객체를 생성합니다.

4단계buckets.all() 함수를 사용하여 버킷 이름 목록을 가져옵니다.

5단계 – 실행 중 예외가 발생하면 이를 적절히 처리합니다.

6단계 – 최종적으로 버킷 이름 목록을 반환합니다.

예제 코드

아래 코드는 S3에 존재하는 버킷 목록을 가져오는 전체 과정을 보여줍니다.

import boto3
from botocore.exceptions import ClientError

# S3 리소스를 사용하여 AWS에 있는 버킷 목록 가져오기
def get_buckets_resource():
    session = boto3.session.Session()
    # 필요한 경우 사용자 지정 access_key, secret_key, token을 전달할 수도 있습니다.
    s3_resource = session.resource('s3')
    try:
        buckets = list(s3_resource.buckets.all())
        print("Got buckets using resource:", buckets)
    except ClientError:
        print("Couldn't get buckets.")
        raise
    else:
        return buckets

get_buckets_resource()

실행 결과

코드를 실행하면 다음과 같이 계정 내 S3 버킷 목록이 출력됩니다.

Got buckets using resource:[s3.Bucket(name='BUCKET_1'),
s3.Bucket(name='BUCKET_2'), s3.Bucket(name='BUCKET_3')………]

코드 설명

boto3.session.Session()을 호출하면 기본 자격 증명(환경 변수, ~/.aws/credentials 파일 등)을 기반으로 세션이 생성됩니다. 이후 session.resource('s3')로 S3 리소스 객체를 만들고, buckets.all()을 호출하면 해당 AWS 계정에 속한 모든 버킷을 반복 가능한(iterable) 형태로 반환받을 수 있습니다.

AWS API 호출 중 권한 부족, 네트워크 오류 등의 문제가 발생하면 ClientError 예외가 발생하므로, try-except 구문으로 이를 처리하고 오류 메시지를 출력한 뒤 예외를 다시 발생(raise)시켜 호출자에게 알리는 것이 좋은 실천 방법입니다.