일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- crud
- MongoDB
- Vue
- git
- node
- 튜플
- Props
- RDS
- async
- socket io
- react
- 카톡
- lambda
- SAA
- merge
- flask
- pandas
- 중급파이썬
- 채팅
- SSA
- Class
- EC2
- S3
- wetube
- NeXT
- AWS
- docker
- 파이썬
- dict
- TypeScript
- Today
- Total
초보 개발자
flask 이미지 업로드 방식 3 aws s3사용 본문
https://s3.console.aws.amazon.com/
aws에 접속하여 아이디를 만들자. 그리고 버킷을 만들어야 한다.
고유한 이름을 설정해준다.
나는 아직 s3, aws등 잘 모르기 때문에 설명은 못하지만.. 내가 하는 방식으로 했을 때 ACL 활성화 됨을 눌러야 한다.
비활성을 눌러도 실행이 될 것 같은데 이상하게 오류가난다. 좀더 공부하고 이 부분을 수정하기로 하자.
이 부분 역시 마찬가지이다. s3를 좀더 공부하고 수정하려고 한다.
arn:aws:s3:::$(내 버켓이름) 괄호 생략해주어야한다.
나는 arn:aws:s3:::$taehyeki-flask/* 이렇게 해주었다.
add statement를 누르면 json같은게 나오는데 이거 복사해서 정책에 복붙하고 저장하자.
이제는 IAM을 설정해야한다.
- IAM을 검색해 들어간 다음, 사용자 를 클릭한다.
- 사용자 추가를 클릭한다.
- 사용자 이름을 설정한 뒤, 엑세스 키는 프로그래밍 방식 엑세스를 선택한다.
- 권한에서 이제 AWS S3에 접근하는 사용자를 만들어주자. 다음과 같이 클릭해 권한을 넣어준다.
이제 이걸 마치면 엑세스 키와 시크릿을 주는데 이걸 간직하고 있자. 만약 이 창을 벗어나면 다시 만들어야 하니 주의하자
이렇게 해서 s3와 연동을 할 수 있다. python과 연동을 하기 위해서는 boto3라는 모듈을 설치해야한다.
모듈을 설치하고 나는 s3.py라는 파일을 만들어
이렇게 만들어 주었다. 이제 s3와 연동이 된 것이다. 한번 파일을 업로드 해보자
form데이터를 만들어 text와 image 파일을 담아 전송한다.
전에 했던 방식보다 훨씬 간단하지 않은가?? s3_put_object함수를 살펴보자
s3, 버킷명, 파일, 파일이름을 받아와서 s3에 전송해주는 기능을 한다.
아래는 전에 만들어둔 delete api에 s3_delete_image만 추가한 것이다.
파일이름을 받아서 삭제해주는 기능을 한다.
마지막으로 edit기능이다.
edit창에 들어가면 get_image_url을 사용하여 img이름을 s3의 주소로 바꿔주는 작업이다.
이렇게 하면 edit화면에서 바로 보여줄 수 있다.
먼저 form을 통해서 id와 file, 그리고 text를 받아온다. 여기서 2가지의 경우를 생각해야한다. img파일이 바뀌었을 경우와 그대로인 경우이다. img파일이 바뀌었다면 request.files에 데이터가 들어올 것이고, 안바뀌었다면 request.files가 비어있을 것이다. 따라서 분기문을 활용하여 존재하는 경우 그 파일을 네이밍 시켜서 s3에 업로드하고 이전 파일을 삭제해주면된다. 이전 파일을 추적하기 위해서는 old라는 변수를 만들고 거기에서 기존의 img이름을 가져와서 지워주는 방식을 활용했다. 그리고 새로운 파일이름을 img에 넣어주자
만약 img가 안들어온 경우는 수정시각과, text-area만 바꿔주면 된다.
'AI 웹개발 트랙 - 내배캠 > 4주차' 카테고리의 다른 글
np.random.seed(int) (0) | 2022.01.06 |
---|---|
df drop (0) | 2022.01.06 |
flask 이미지 업로드 방식 2 gridfs사용 (1) | 2022.01.05 |
간단 flask 초기 셋팅, 데코레이터, login_required (0) | 2022.01.04 |
flask config 진짜 기본적인 내용 (0) | 2022.01.04 |