이번에 사용자에게 multipart/form-data로 이미지 파일들을 받아 aws s3에 저장하는 작업을 해볼려고 합니다.
from flask import Flask, request
import boto3
app = Flask(__name__)
# 파일 업로드
@app.route('/fileupload', methods=['POST'])
def file_upload():
file = request.files['file'].read()
AWS_ACCESS_KEY_ID ="ACCESS_KEY"
AWS_SECRET_ACCESS_KEY = "SECRET_ACCESS_KEY"
AWS_DEFAULT_REGION = "리전 코드"
session = boto3.Session(
aws_access_key_id=AWS_ACCESS_KEY_ID,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
region_name=AWS_DEFAULT_REGION
)
bucket = 'bucket' #버켓 주소
key = 'test2.jpg' # s3 저장할 파일 위치 및 파일 이미지
s3 = session.resource('s3')
s3.Object(bucket, key).put(Body=file)
return "success"
if __name__ == "__main__":
app.run(debug=True, host='127.0.0.1', port=8888)
request.files['file'].read()
를 사용하면 전송받은 파일데이터만 읽을 수 있습니다.마지막으로 세션으로 접속해 resource
를 통해서 s3에 접근합니다. 그리고 Object를 사용해서 .put()
으로 file을 추가 해주면 됩니다.