본문 바로가기
컴퓨터관련/Python

python에서 AWS S3에 파일 올리기

by 빛과 어둠사이 2021. 1. 12.
728x90
반응형
SMALL

오늘은 파이썬에서 AWS S3에 File Upload 하는 방법을

정리해보려고 합니다.

 

파이썬에서 AWS에 접속하기 위해서는

별도의 SDK 설치가 필요합니다.

우선, SDK 설치를 진행하도록 하겠습니다.

 

 

시작 - 명령 프롬프트라고 검색을 하여

명령 프롬프트를 실행합니다.

 

 

그리고 명령 프롬프트에 

pip 명령어를 이용해서

SDK를 설치해주시면 되십니다.

 

명령어는 다음과 같습니다.

pip install boto3

 

위와 같이 입력을 하시고

엔터를 치게 되시면

자동으로 설치를 하게 됩니다.

 

 

 

위처럼 나오게 되면서

설치가 완료가 되었습니다.

 

 

 

 

 

그리고 S3에 파일을 올리기 전에

버킷 정보들 부터 확인해보도록 하겠습니다.

AWS 관리자콘솔로 가서 S3로 가면

아래와 같은 화면이 나오게 됩니다.

 

이름, 리전, 액세스, 생성날짜 등

여러가지 정보들이 보이게 됩니다.

저는 시스템엔지니어가 아니라 정확하게는 모르겠고,

제가 아는 정도?

제가 추정한 정도로 설명을 해보도록 하겠습니다.

 

이름은 버킷의 이름을 나타내는 것입니다.

음...쉽게 생각하면

버킷의 이름은 디렉토리명으로 생각하면

좀 쉬울 것 같습니다.

루트에는 파일을 올리지 못하고,

특정 디렉토리 이상으로 가서 파일 업로드가 가능한데

그 특정 디렉토리 등이 버킷 이름이라고 보시면 되실 것 같습니다.

 

리전은 S3의 서버 위치입니다.

액세스는 저도 잘 모르겠네요.

그리고 생성 날짜는 말 그대로 생성한 날짜입니다.

 

 

저는 파일을 올리기 위하여

새로운 버킷을 만들었습니다.

소스에서 만드는 방법도 있다고는 하지마

저는 그냥 이곳에서 만들었습니다.

 

날짜나 그런거에 따라서 계속해서 버킷을 만드는 것이 아니라면

굳이 소스에서 하는 것보다

만들어놓고 소스에서는 쓰기만 하는 것이

좀 더 안정적일거라 생각해서

그렇게 진행하였습니다.

 

버킷을 만드는 것은 어렵지 않습니다.

위 이미지에 보시면 있는데 오른쪽 상단에

버킷 만들기기라고 있습니다.

 

이곳으로 들어가서 이름을 지정해주고,

나머지는 거의 기본값 그대로 놔두었습니다.

그렇게 해서 만들었습니다.

만들고 들어갔더니

아래처럼 아무것도 없는 것을

확인할 수 있습니다.

 

 

 

 

 

 

그러면 이제 파이썬에서

S3에 접속해서 정보를 가져오고,

업로드 하는 것까지 정리를 해보도록 하겠습니다.

 

 

우선, python에서 버킷에 대한

정보를 가져와보도록 하겠습니다.

소스는 다음과 같이 작성하였습니다.

 

import boto3 

#S3 Client 생성 
s3 = boto3.client('s3') 

#S3에있는 현재 버킷리스트의 정보 가져오기
response = s3.list_buckets() 
print(response) 

위 소스에 주석을 달아놓기는 했는데

한번 더 설명을 해보도록 하겠습니다.

boto3를 import해주어서

AWS에 접근하는 객체를 생성할 수 있도록 해줍니다.

그리고 S3에 접근할 수 있는 객체를 생성해 주었습니다.

그리고 buckets 리스트를 가지고 와서

화면에 출력해주는 것입니다.

 

 

위와 같이 소스를 작성하였습니다.

그리고 실행을 하게 되면

결과는 아래와 같이 나오게 됩니다.

 

 

제가 운영하는 S3의 버킷리스트라서

숨겨놓았습니다.

어쨌든 저런 식으로 버킷의 여러가지 정보들을

가져올 수 있습니다.

 

 

 

그런데 저렇게 많은 정보들 말고,

버킷의 이름만 가지고 오고 싶습니다.

그래서 이번에는 버킷의 이름만 가져오는 방법을

정리해보도록 하겠습니다.

 

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 Buckets 이름 출력
print("Bucket Name: %s" % buckets)

 

위와 같이 소스를 작성해주시면 되십니다.

버킷리스트 정보 가져오는 것은 동일합니다.

그리고 그 버킷리스트 중

이름부분만 추출하여

화면에 화면에 출력하는 것입니다.

 

 

 

위처럼 소스를 작성하였고

실행을 하게 되면

다음과 같이 나오게 됩니다.

 

버킷 이름만 나오는 것을

확인할 수 있습니다.

위와 마찬가지로 제가 운영하는 S3이다보니

버킷명을 숨겨놓았습니다.

 

 

 

이번에는 S3에 파일을 업로드 하는 방법을

정리해보도록 하겠습니다.

 

아까 만든 S3 버킷에 파일을 업로드할 예정입니다.

다시 한번 아까 만든 버킷에

파일이 없는 것을

확인해보도록 하겠습니다.

 

 

 

 

해당 버킷에 파일이 없는것을

확인할 수 있습니다.

 

그러면 이제 python에서 AWS S3에 

소스로 파일을 올려보도록 하겠습니다.

소스는 아래와 같이 코딩을 해주시면 되십니다.

 

import boto3 

#S3 Client 생성 
s3 = boto3.client('s3') 
   
#업로드할 S3 버킷
bucket_name = '버킷명'

#S3에 업로드 할 파일명
file_name = "파일명"

#파일 업로드
s3.upload_file(file_name, bucket_name, file_name)

 

boto3에서 제공하는 함수인

upload_file 함수를 이용하여 파일을 업로드 하는 것입니다.

업로드 할 때,

매개변수는 총 3개가 필요합니다.

첫번째 매개변수는 로컬에서의 파일명

두번째 매개변수는 S3의 버킷명

세번째 매개변수는 S3에 저장되는 파일명입니다.

 

저는 로컬에 있는 파일명 그대로

S3로 Upload 하려고 합니다.

그래서 그냥 저렇게 소스를 작성하였습니다.

 

 

그래서 위와 같이 소스를 작성하였습니다.

버킷명은 숨겼고,

파일은 001.png 파일을 업로드하도록 한 것입니다.

 

위 소스를 실행하고 나면

결과는 아래와 같이 나오게 됩니다.

 

 

위 소스에서 보면 아시겠지만,

별도의 print 문 등이 없습니다.

그렇기 때문에 화면에 출력되는 내용이 없이

그냥 종료가 되었습니다.

 

그러면 이제 AWS S3에 가서

파일이 정상적으로 올라가졌는지

확인해보도록 하겠습니다.

 

 

 

AWS S3 해당 버킷에 가서 보면

위처럼 001.png 파일이 올라가져 있는 것을

확인할 수 있습니다.

 

 

 

오늘은 파이썬에서 AWS S3로 파일 업로드 하는 방법을

정리해보았습니다.

python에서 S3로 업로드하는게 어렵지 않을까 싶었는데

SDK에서 지원을 해주다보니 쉽게 할 수 있네요.

 

그리고 위에서 얘기한 것처럼

S3에 버킷을 만들고, 삭제하는 것도

할 수 있을 거 같기는 해요.

파이썬에서 소스로 컨트롤 할 수 있을 것 같기는 해요.

하지만, 저는 개인적으로 소스에서 해당 부분을 할 필요는 없다고 생각이 들었어요.

날짜별로이거나 특정 상황이 되면

계속해서 버킷을 생성해주어야 한다면 소스에서 만들어 주어야겠죠.

하지만, 한개의 버킷을 계속해서 사용한다면

굳이 소스에서 만들 필요는 없다고 생각을 했어요.

그래서 저는 테스트도 안했고,

작성도 안하였습니다.

 

필요하신 분이 있다면 해당 부분은

추가로 확인을 해주시면 될 것 같아요.

 

 

 

아무튼 이상으로 python에서 AWS S3로 

파일 업로드 하는 방법에 대해서

정리를 해보았습니다.

 

다음에는 뭘 할지 모르겠는데

업무를 하면서 필요한 기능들이 있을 때,

공부를 하면서 같이 작성하도록 할께요~

 

 

 

 

이상으로 파이썬에서 AWS S3로 File Upload 하는 방법이였습니다~

 

 

 

 

 

 

 

혼자 공부하는 파이썬:파이썬 최신 버전 반영

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음

 

 

 

 

 

728x90
반응형
LIST