AWS Elastic Beanstalk 으로 배포하기

박영준·2023년 5월 30일
0

배포

목록 보기
1/3

1. AWS 란?

  • 아마존(Amazon)에서 제공하는 클라우드 서비스 (클라우드 컴퓨팅 플랫폼)

  • 다양한 사용자들이 사용하고 있으며(현재 소규모 법인(회사) 및 개인을 포함),
    클라우드 컴퓨팅의 장점을 이용하기 위해 많은 거대 기업에서도 활용하고 있다.

    • 엔터프라이즈 고객 : 넥플릭스, SEGA, 아마존 ...
    • 스타트업 고객 : Spotify, Funplus ...
    • 공공 부문 고객 : NASA, CDC ...

    참고: 클라우드 (Cloud)

2. 장점

1) 저렴한 비용

  • 사전 확약금이나 장기 약정 없이 저렴한 종량 과금제 방식으로 운영

  • 확장형 글로벌 인프라를 구축 및 관리 + 더 저렴한 요금의 형태로 사용자에게 비용 절감 혜택을 돌려줌

2) 속도 및 민첩성 개선

  • 데이터센터운영 및 유지관리에 비용투자 필요 X

  • 몇 분만에 전세계에 배포 가능

  • 언어 및 운영 체제에 구애받지 않는 플랫폼

3) 민첩성, 즉각적 융통성

  • 오랫동안(몇 주 또는 몇 개월 동안) 물리적인 서버 구축을 기다리기 보다는 즉시 새로운 앱을 배포하고,
    수요를 기준으로 축소할 수도 있다.

  • 필요한 가상 서버의 수 or 서버가 필요한 시간과는 관계없이, 사용한 만큼만의 비용이 청구

4) 용량추정불필요 하며 데이터 센터 운영 및 유지관리에 비용 투자 불필요

5) 규모의 경제로 얻게되는 이점

6) 몇 분 만에 전 세계에 배포 가능 등

3. AWS Elastic Beanstalk

  • 쉽게 배포할 수 있도록 돕는 AWS의 서비스

  • 해당 서비스가 없다면, 서버를 따로 사서 파일을 옮기고 등... 해야 할 일들이 많아진다.

  • FileZilla를 이용한 배포를 간소화시킨 것!

    FileZilla를 이용한 배포 방법

단, window 에서는 cmd 를 사용하기 위해서는 따로 설정이 필요하므로
Git Bash 를 이용하여 진행하면 된다.

1) 사이트 접속

Amazon Elastic Beanstalk

2) 액세스 키 생성하기

참고: AWS 에서 액세스 키, 비밀 액세스 키 만들기

3) 배포하기

(1) 터미널에 명령어 입력

해당 명령어들을 터미널에 하나씩 입력해준다.

mkdir deploy : 폴더 하나 만들어라

cp app.py deploy/application.py : app.py 파일을 하위에 application.py 로 복사해라

cp -r templates deploy/templates : templates 폴더를 통째로 복사해라

pip freeze > deploy/requirements.txt : requirements.txt 파일에 지금까지 설치한 라이브러리를 적어둬라

cd deploy : deploy 폴더로 이동하라

(2) appication.py 세팅하기

appication.py 로 이동해서 코드를 수정해준다.

① application = app = Flask(name)

from flask import Flask, render_template, request, jsonify
#app = Flask(__name__)		수정 전
application = app = Flask(__name__)

② app.run()

if __name__ == '__main__':
   #app.run('0.0.0.0', port=5000, debug=True)		수정 전
   app.run()

(3) 패키지 설치

pip install awsebcli

(4) 컴퓨터 구매

① eb init

보안 자격 증명을 위해 eb init 명령어를 입력하고, 서울인 '10'을 입력한다.

만약 이 과정에 에러가 발생한다면 참고하기
참고: 보안 자격증명 eb init 명령어 에러

주의!
ERROR: ServiceError - Configuration validation exception: Your region does not have a default VPC. You might have deleted it. When you create a load-balanced environment without a specified VPC, Elastic Beanstalk requires your region to have a default VPC.
이러한 에러가 발생할 경우

원인 : default VPC 가 없기 때문

해결법
VCP 로 들어가기 > '기본 VPC 생성' > default VPC 를 확인할 수 있음


(5) 배포하기

eb create myweb

해당 명령어(eb create 환경이름)를 터미널에 입력

약 5분 정도 소요된다.

② 확인

Amazon Elastic Beanstalk 으로 접속.

'애플리케이션'

  • 환경 : 해당 이름에 myweb이라고 뜬다

    주의!
    애플리케이션은 '하나'만 있어야 한다. 그렇지 않으면, 과금이 될 수도 있다.
    해당 애플리케이션 선택 > 작업 > 애플리케이션 삭제 로 하나만 남겨두자.

'환경'

  • 상태 : pending -> OK 로 변하면 완료된 상태
  • 도메인 : 해당 도메인으로 들어가면, 내가 배포한 사이트가 뜬다.

3) 배포 후 수정하기

(1) 수정하기VScode를 키고, venv 로 맞춰준다.

새 터미널을 켜서 확인해본다.

(2) 실행되는지 확인

app.py 로 가서 python 실행해서 웹페이지가 정상적으로 작동한는지 확인해본다.

(3) 원하는 부분을 수정

정상 작동을 확인 후, index.html에서 원하는 부분을 수정후, 해당 부분을 복사

(4) 똑같이 수정

deploy > index.html

'index.html'에서 수정된 부분을 똑같이 수정

왜 deploy?
'deploy' 폴더가 인터넷에 배포된 부분이므로,
내 컴퓨터에 저장된 index.html과 동일하게 'deploy > index.html' 에서도 수정해주면 된다.

(5) 업로드

① deploy 폴더로 이동

cd deploy

  • 이때 반드시 deploy 폴더로 이동한 다음, 업로드 해야한다.
  • 터미널에 해당 명령어 입력

② 수정/업데이트 명령어 입력

eb deploy myweb

eb 명령어 에러 : command not found
혹시나 이러한 에러가 뜬다면, pip install awsebcli로 패키지 설치 시도해보고 다시 시도하기

③ 변경사항 확인

웹페이지로 들어가, 해당 부분이 변경됐는지 확인한다.


참고: [AWS] 1.AWS란?

profile
개발자로 거듭나기!

0개의 댓글