S3 file upload 예시 flask
2022. 3. 27. 00:35ㆍBackEnd/Flask (출처:시니어 개발) - 클론코딩
pip install boto3
s3.py
import boto3
# reading .env file
#내가 아무렇게나 만든 예시 키들임 사용해도 작동안됨
AWS_ACCESS_KEY = 'AEDGESDGEWADGg'
AWS_SECRET_ACCESS_KEY = 'wER!34dslakenrSAERAGAGWRQtnad_Dfawjr'
def s3_connection():
'''
s3 bucket에 연결
:return: 연결된 s3 객체
'''
try:
s3 = boto3.client(
service_name='s3',
# 맞는지 여쭈어 볼것
region_name="ap-northeast-2",
# access_key_id 와 aws_secret_access_key는 절대 올라가면 안됨 -> 재훈님 은 100만원 나왔음
aws_access_key_id=AWS_ACCESS_KEY,
aws_secret_access_key=AWS_SECRET_ACCESS_KEY,
)
except Exception as e:
print(e)
# exit(ERROR_S3_CONNECTION_FAILED)
else:
print("s3 bucket connected!")
return s3
# def s3_put_object(s3, bucket, filepath, access_key):
# '''
# s3 bucket에 지정 파일 업로드
# :param s3: 연결된 s3 객체(boto3 client)
# :param bucket: 버킷명
# :param filepath: 파일 위치
# :param access_key: 저장 파일명
# :return: 성공 시 True, 실패 시 False 반환
# '''
# try:
# s3.upload_file(filepath, bucket, access_key)
# except Exception as e:
# print(e)
# return False
# return 'success'
실제 api 로직
from s3 import s3_connection
s3 = s3_connection()
S3_URL = 'https://ksp-s3-bucket.s3.ap-northeast-2.amazonaws.com/'
BUCKET_NAME ='ksp-s3-bucket'
@app.route('/eventmodify', methods=['GET,POST'])
@cross_origin(origin='*',headers=['Content- Type','Authorization'])
def eventmodify():
if request.methodb == 'POST':
for i in 3:
try:
id = request.form['id']
title = request.form['title']
subject = request.form['subject']
updateDate = request.form['updateDate']
event_image = request.files['file']
startDate = request.form['startDate']
endDate = request.form['endDate']
except Exception as ex:
print('================> eventmodify err')
pass
s3.put_object(
Bucket = BUCKET_NAME,
Body = event_image,
Key = f'event_images/{event_image.filename}',
ContentType = event_image.content_type)
try:
cur.execute("UPDATE eventweb SET title=%s,subject=%s,image=%s,startdate=%s,endDate=%s WHERE id = %s AND TO_CHAR(date,'YYYY-MM-DD') =%s",(title,subject,S3_URL+f'event_images/{event_image.filename}',startDate,endDate,id,updateDate))
conn.commit()
except Exception as ex:
return json.dumps({'errMsg':'failed'}),401,{'ContentType':'application/json'}
return json.dumps({"result": 'success'}), 200, {'ContentType':'application/json'}
'BackEnd > Flask (출처:시니어 개발) - 클론코딩' 카테고리의 다른 글
이미지 리사이징 - flask (0) | 2022.03.26 |
---|---|
config => app.config (0) | 2022.03.12 |
노마드 코더 따라하기(get요청만) (0) | 2022.03.12 |
플라스크 기초 및 웹서버 개발의 개념 이해(2019.3) (0) | 2022.02.27 |