본문 바로가기
Programming

python 코드 20줄로 AWS S3 버킷에 이미지 업로드 하기

by 하하호호 2022. 1. 18.
반응형

 

Django Framework을 사용한다면 settings.py를 

수정해줘야 하고, 파이썬에서 S3 버킷으로 이미지를

바로 업로드한다면 싱글 소스코드로도 충분하다.

 

1. Django models.py 수정

 

FileField를 수정한다.

models.py를 수정하고, makemigrations + migrate 명령으로

DB 수정사항을 반영해준다.

1
2
3
4
class Image(moels.Model):
    name=models.CharField(max_length=30)
    picture = models.FileField(upload_to='media'/)
 
cs

 

2. django-storage 모듈 설치

AWS S3에 이미지를 저장하기 위해서는 먼저 

Django에서 django-storage 모듈을 설치해줘야 한다.

 

Django에 django-storage 모듈을 설치하기 위해서는

boto3 부터 설치해준다.

1
2
3
pip install boto3
pip install django-storage
 
cs

 

3. Django settings.py 설정

S3를 사용하기 위해서는 Django에서 추가적인

셋팅이 필요하다. 대표적으로 4가지 셋팅이 필요하다.

AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_STORAGE_BUCKET_NAME
AWS_QUERYSTRING_AUTH = False

 

4. S3 생성 및 설정

S3 버킷을 생성한 후 권한 설정이 필요하다.

나의 경우 로컬에서 접속이 가능해야 하고,

서버에서도 접속이 가능한 S3를 만들고자 했기 때문에,

퍼블릭 액세스를 모두 허용했다.

 

다음으로 버킷 정책을 새로 생성해준다.

 

5. 파이썬 코드 작성

S3에 이미지를 업로드하기 위한 간단한 

파이썬 코드다. 

 

download.jpg 파일을 열어서 s3 boto3를

설정해준다. 마지막으로 put_object 함수를

사용해서 S3에 이미지를 업로드한다.

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import boto3
from botocore.client import Config
 
ACCESS_KEY_ID=''
ACCESS_SECRET_KEY=''
BUCKET_NAME=''
 
try:
    data=open('download.jpg''rb')
 
    s3=boto3.resource(
        's3',
        aws_access_key_id=ACCESS_KEY_ID,
        aws_secret_access_key=ACCESS_SECRET_KEY,
        config=Config(signature_version='s3v4')
    )
    s3.Bucket(BUCKET_NAME).put_object(Key='download.jpg', Body=data, ContentType='image/jpg')
except e as Exception:
    print(e)
 
print("Done")
cs

 

 

S3 버킷에서 업로드한 파일을 바로 확인할 수 있다.

 

 

반응형

댓글