내일배움캠프 D+8(AWS 기초1)

enyo9rt·2022년 4월 25일

TIL-S

목록 보기
6/79

☁️ AWS클라우드 배포환경 구축 기초 1주차


  ✅ Check Point
1. 	클라우드 서비스 개발자 입장에서 이해하려고 하기. 
	서버리스로 배포를 할 수 있는 편리한 도구!
    다른 클라우드를 쓰더라도 툴으로 잘 받아들일 수 있도록.

2. 	왜 이렇게 되는지, 응용 방법 생각해보기.

1-1

      클라우드

  • 기존의 서버 컴퓨팅 시장을 대체
  • 서버 컴퓨터? 인프라 환경을 직접 구축할 필요없이, 클라우드 서비스를 사용해 클릭 몇 번만으로 인프라를 구축할 수 있다.
  • AWS는 아마존에서 만들어진 것으로, 대표적인 클라우드 서비스이다.

1-3

      AWS를 잘 활용하려면?

  • 기존의 회사들이 사용하는 방식을 참고해본다.
  • 설명서에서 원하는 부분을 찾아본다.

      리전과 존

  • 리전: IDC센터가 있는 나라.
  • 존: 그 리전에서 좀 더 자세한 위치

1-4

      S3 파일을 저장하는 서비스

  • 예를 들어 서비스 사용자가 계정의 프로필 사진을 업로드하는 경우.
    그걸 디스크가 아니라 클라우드에 저장하고 불러오고..
    이런 용도로 쓰일 수 있다.

S3 - 버킷 파일을 저장하는 장소를 폴더링

  • 버킷별로 권한을 다르게 설정할 수도 있다.

1-5

\qquadIAM AWS Identity and Access Management AWS 접근 제어

  • AWS의 내의 계정을 관리할 수 있게 해준다.

\qquadAWS SDK Software Development Kit 프로그래밍을 돕는 라이브러리

  • 개발과 연동해서 AWS 사용을 가능케 한다.

\qquad설정 명령어 aws configure

  • 키 넣은 후 리전 설정하고 output format은 json


1-6

\qquadboto3 파이썬에서 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에는 자신의 버킷 이름을 넣어주면 된다.

    [출처]

1-7

S3 - 정적 호스팅 기능

  • s3는 파일 저장 뿐 아니라, 저장된 파일들을 가지고 호스팅하는 기능도 있다.
    웹사이트 소스(html,css 등)을 웹호스팅 업체에 전달하면 사이트를 띄워주는 거.
  • 버킷 정적호스팅 기능 활성화할 때, 오류 문서의 경우 그걸 관리하는 쪽에서도 index.html을 쓰면 그렇게 설정해주면 됨.

SAVE 💾

  도큐먼트와 레퍼런스 참고를 굉장히 강조하셨다. 한 강의에 한 번은 꼭 말씀하신 듯🤣
  핵심만 짚고 넘어가는 강의이기에 궁금한 점이 생기면 스스로 찾아보기...!

0개의 댓글