Amazon Web Services 한국 블로그

Python용 AWS SDK (Boto3) 정식 출시

Boto로 알려진 Python용 AWS SDK의 신규 버전인 Boto3 정식 발표에 대한 Peter Moon의 글을 소개합니다.
— Jeff;

2006년에 처음 Mitch Garnaat가 Amazon S3용 파이선 클라이언트를 시작하였고, Boto를 통해 많은 파이선 개발자들이 아마존 웹 서비스를 활용해 왔습니다. AWS 뿐만 아니라 파이선 커뮤니티에서 끊임없는 지원을 한 결과 커다란 진화를 이루어 왔습니다. 거의 40여개 AWS 서비스를 지원하고 있고, PyPI 통계에 따르면 매주 수천번 다운로드가 이루어집니다. 이를 토대로 오늘 앞으로 새로운 장을 열게 될 Boto의 새로운 주요 버전인 Boto3에 대한 출시를 알려드리게 되었습니다.

새로운 라이브러리는 항상 사용자의 요구에 맞게 진화를 해야 하며, 사용자의 플랫폼에 유연하게 실행할 수 있어야 합니다. AWS가 매년 성장함에 따라 API의 업데이트 양이나 속도도 빨라졌습니다. 이 때문에 매주 나오는 여러 API 업데이트를 빠르고 확장 가능하게 제공하는 것이 필요해졌습니다. Boto3은 데이터 기반으로 만들어졌으며, JSON 기반의 API 모델을 가지고 AWS API를 기술할 수 있어 이를 통해 모델 업데이트만으로 신규 및 변경 API를 바로 바로 지원 가능합니다. 즉, 모든 클라이언트 클래스는 데이터 기반으로 만들어져 있어 API 업데이트를 지속 가능하고 신뢰할 수 있는 방식으로 제공 가능함을 의미합니다.

Boto는 HTTP API 호출을 숨기는 편한 추상화 모델을 가지고 있고, Amazon EC2 인스턴스 및 S3 버켓과 같은 AWS 리소스와 동작하는 파이선 클래스를 제공합니다. 이를 Boto3에서도 유연하게 채용하여 ResourcesAPI라는 데이터 기반 API 모델 위에서 리소스 모델 역시 구성했습니다. 이러한 설계 구조를 통해 더 편리하게 객체 지향 추상화를 지향할 수 있게 되었고 이는 Boto3 뿐만 아니라 앞으로 다른 프로그래밍 언어의 AWS SDK에도 영향을 주게 될 것 입니다.

Python 3 지원 역시 Boto 사용자들에게 많은 요청을 받은바 있으며, 커뮤니티로 부터 작년 여름 개발자용 프리뷰 출시 이후로 많은 지원을 해 왔습니다. Boto3에는 Python3 지원을 시작해서 이번 출시 버전에서는 Python 2.6.5+, 2.7, 3.3, 3.4 버전에서 충분히 테스트하였습니다. 여러분들이 어떤 파이선 버전을 사용하시든지 Boto3을 잘 동작할 것으로 확신합니다.


Boto3을 통한 AWS API 호출 예제

마지막으로 앞으로 신규 프로젝트는 Boto3을 사용하실 것을 권장합니다. 그리고 가급적 기존 프로젝트도 Boto3으로 이전을 부탁드립니다. 기존 코드를 마이그레이션하는 작업은 새로 만드는 것만큼 힘들고 시간이 많이 걸리는 작업이며 때에 따라 불가능하다는 사실을 잘 알고 있습니다.

Boto3은 boto3이라는 상위 모듈명을 가지고 있고, 이를 통해 boto를 사용 중인 기존 코드를 점차적으로 테스트하면서 변경 가능할 것입니다. 조금씩 변경을 하시더라도 향후 Boto3을 통해 이루어 지는 신규 기능 추가 및 API 지원을 통해 더욱 쉽게 개발 및 관리를 할 수 있게 되실 것입니다.

소스 코드는 GitHub (https://github.com/boto/boto3)에서 얻으실 수 있으며, 피드백이나 질문은 리포지터리의 이슈(Issues)를 통해 남겨주시기 바랍니다. 지금 시작해 보시려면 Boto3를 설치하시고, 개발자 문서를 참고해 주세요.

— Peter Moon, 제품 관리자, AWS SDKs and Tools

이 글은 Now Available – AWS SDK For Python (Boto3) 한국어 번역입니다.

아래 글은 Python용 SDK를 처음 시작하는 분들을 위한 간단한 가이드입니다. 더 상세한 사용법은 개발자 문서(영문)을 참고하세요. (역자주)

먼저 여러분 라이브러리를 설치합니다.

$ pip install boto3

API 인증 코드를 설정합니다.(예: 리눅스 맥 ~/.aws/credentials, 윈도 C:\Users\USER_NAME\.aws\credentials)


[default]
aws_access_key_id = YOUR_KEY
aws_secret_access_key = YOUR_SECRET

사용할 리전을 선택합니다. (예: ~/.aws/config):


[default]
region=us-east-1

이제 간단하게 동작하는지 테스트를 해보겠습니다.


import boto3

# Let's use Amazon S3
s3 = boto3.resource('s3')
# Print out bucket names
for bucket in s3.buckets.all():
    print(bucket.name)
# Upload a new file
data = open('test.jpg', 'rb')
s3.Bucket('my-bucket').put_object(Key='test.jpg', Body=data)

더 자세한 샘플 코드는 https://github.com/awslabs/aws-python-sample를 참고하세요.