작성되는 글은 boto3 Docs글을 보고 제 방식대로 해석 및 실행하며작성한 내용입니다.
boto3 docs는 우측 링크를 참고하세요 [boto3 Docs]
이번 글에서는 기존 Amazon S3에 생성되어있는 버킷 리스트를 가져와 확인하고 버킷을 생성하고 파일을 지정된 버킷에 업로드하는 예제를 확인할 것입니다.
리스트를 출력하는데는 S3의 list_buckets()를 사용할 것입니다.
예제와 결과로 확인해 보도록 하겠습니다.
import boto3 # S3 Client 생성 s3 = boto3.client('s3') # S3에있는 현재 버킷리스트의 정보를 가져온다. response = s3.list_buckets() #print(response) # response에 담겨있는 Buckets의 이름만 가져와 buckets 변수에 배열로 저장. buckets = [bucket['Name'] for bucket in response['Buckets']] # S3 버킷 리스트를 출력. print("Bucket List: %s" % buckets)
저는 S3에 'image-yunjin'이라는 이름의 버킷을 생성했었습니다.
그래서 다음과 같이 Bucket List에 image-yunjin이 있는것을 확인할 수 있습니다.
그렇다면 직접 S3콘솔에서 생성하지 않고 코드로 생성할 수 있는지 살펴보겠습니다.
import boto3 # S3 클라이언트 생성 s3 = boto3.client('s3') # create_bucket()를 통해 버킷 생성. s3.create_bucket(Bucket='yunjin-bucket' , CreateBucketConfiguration={'LocationConstraint': 'ap-northeast-2'})
# Error : The unspecified location constraint is incompatible for the region specific endpoint this request was sent to.
.aws/config의 region이 맞지 않거나 Bucket이름에 언더바등등 유효하지 않은 문자들이 들어가면 에러가 납니다.
해결방법은 region도 맞춰주고 Bucket이름도 자신만 알게 만드는것이다.
저는 위의 코드로 실행한 결과 yunjin-bucket라는 이름의 Bucket가 생성된 것을 확인할 수 있습니다.
자 , 그럼 버킷도 생성하였으니 가지고 있는 아무 이미지를 S3 버킷에 업로드 해보도록 하겠습니다.
업로드를 하는데 사용하는 메서드는 upload_file()입니다.
지금부터 코드를 보며 하나하나 알아보도록 하겠습니다.
import boto3 # S3 클라이언트 생성. s3 = boto3.client('s3') # 업로드할 파일의 이름 filename = 'han.png' # 업로드할 S3 버킷 bucket_name = 'yunjin-bucket' # 첫본째 매개변수 : 로컬에서 올릴 파일이름 # 두번째 매개변수 : S3 버킷 이름 # 세번째 매개변수 : 버킷에 저장될 파일 이름. s3.upload_file(filename, bucket_name, filename)
이번에 S3를 파이썬으로 해보면서 느낀점은 저처럼 바보같은 사람도 직접 테스트하기 쉽게 잘되있다는 점입니다. 한마디로 사용자들이 쓰기 쉽게 잘 만든것같습니다.
앞으로 S3말고도 EC2 , DB도 같이 할예정이니 하나씩 정리해보면서 올려보도록 하겠습니다.
'AWS' 카테고리의 다른 글
[ECS]CannotStartContainerError: Error response from dae (0) | 2021.01.27 |
---|---|
RDS를 만들어보자 (0) | 2020.12.10 |
[AWS S3] AWS boto3를 이용한 Python + S3 연동 (2) | 2018.10.05 |
댓글