1. 클라우드 서비스 개발자 입장에서 이해하려고 하기.
서버리스로 배포를 할 수 있는 편리한 도구!
다른 클라우드를 쓰더라도 툴으로 잘 받아들일 수 있도록.
2. 왜 이렇게 되는지, 응용 방법 생각해보기.
클라우드
AWS를 잘 활용하려면?
리전과 존
S3 파일을 저장하는 서비스
S3 - 버킷 파일을 저장하는 장소를 폴더링
IAM AWS Identity and Access Management AWS 접근 제어
AWS SDK Software Development Kit 프로그래밍을 돕는 라이브러리
설정 명령어 aws configure
키 넣은 후 리전 설정하고 output format은 json
boto3 파이썬에서 AWS와 연동하게 해주는 라이브러리
<form id="upload-file">
<label for="post-url">이미지 파일</label>
<input type="file" name="file"/>
</form>
upload-file 이라는 id 를 가진 form 을 만든다.
file 타입의 input을 받는데 name을 file로 지정.
function save() {
var form_data = new FormData($('#upload-file')[0]);
$.ajax({
type: 'POST',
url: '/fileupload',
data: form_data,
processData: false,
contentType: false,
success: function (data) {
alert("파일이 업로드 되었습니다!!");
},
});
}
FormData(브라우저에서 지원하는 클래스) 의 인스턴스 fomr_data 만드는데 값을 upload-file 이라는 id 를 가진 element의 첫번째 객체 ( $('#upload-file')[0] 제이쿼리로 쓸 때는 배열 인덱스를 정해줘야 HTML DOM 객체로 리턴) 를 넣어준다.
@app.route('/fileupload', methods=['POST'])
def file_upload():
file = request.files['file']
s3 = boto3.client('s3')
s3.put_object(
ACL="public-read",
Bucket="mybucket-yj",
Body=file,
Key=file.filename,
ContentType=file.content_type)
return jsonify({'result': 'success'})
기존에 html폼에서 보낸 데이터를 불러올 때는 request.values 또는 request.form을 사용하였지만, 파일을 불러올 때는 request.files['name']를 사용하여 불러온다.
이는 파일명이 담겨있는 스트링객체가 아닌 파일객체이다.
put_object 함수의 bucket에는 자신의 버킷 이름을 넣어주면 된다.
S3 - 정적 호스팅 기능
SAVE 💾
도큐먼트와 레퍼런스 참고를 굉장히 강조하셨다. 한 강의에 한 번은 꼭 말씀하신 듯🤣
핵심만 짚고 넘어가는 강의이기에 궁금한 점이 생기면 스스로 찾아보기...!