Programming/WEB

[16] AWS Elastic Beanstalk로 배포 : 웹서비스 런칭, AWS 가입, 보안설정

알 수 없는 사용자 2023. 7. 19. 16:08

1. AWS 가입 + 보안설정

1) 회원가입

더보기
 

AWS Console - Signup

 

portal.aws.amazon.com

  • 해외결제가 가능한 결제 수단을 입력해야 가입이 가능하다!
  • AWS는 개인에게 클라우드 환경의 가상 서버를 제공해준다. 
  • 기본 사양의 서버(EC2)를 1년 동안 무료로 사용 가능
  • 가입 시 결제된 금액은 다시 반환됨. 

 

2) IAM 사용자그룹 생성

더보기
  • IAM은 AWS의 서비스를 안전하게 제어할 수 있는 계정 내의 계정
  • 루트 계정을 사용할 경우 AWS에서 결제와 관련된 모든 접근 권한이 승인되어 있기 떄문에 위험하다
  • IAM 계정을 생성하고 관리해 큰 과금을 막고 해킹의 피해를 줄이도록 하자. 

 

1) 루트 계정 로그인 상태에서 오른쪽 위 계정이름 클릭 > 보안 자격 증명 

 

2) 사용자 그룹 클릭

 

3) 그룹 생성

 

4) 권한 정책 연결 > AdministratorAccess 선택

 

 

3) IAM 사용자 생성

더보기

1) IAM 탭에서 액세스 관리 > 사용자 클릭

 

 

2) 사용자 추가 클릭

 

 

3) 사용자 이름 입력 / 암호-AWS 관리 콘솔 액세스 선택 / 사용자 지정 비밀번호 입력 / 다음:권한 클릭

 

4) 생성한 그룹 선택하기 > 다음

 

 

5) 다음 로그인부터는 IAM 사용자로 로그인! 

  • 마지막에 뜨는 콘솔 로그인 URL로 들어가면 로그인할 수 있다!
  • URL 저장해두기!

 

 

2. MFA 이중인증 등록

더보기

1) 보안자격증명 > MFA > MFA 디바이스 할당

 

2) 이름 등록, 가상 MFA 디바이스 선택

 

3) 핸드폰에 google authenticator 다운로드 후 실행

 

4) QR 코드 찍어서 코드 입력

 

 

 

3. 배포하기 : 웹서비스 런칭하기

1) 기본 개념

더보기
  • 로컬 개발 환경에서는 언제나 요청에 응답하기 위해서 
    1) 컴퓨터가 항상 켜져있고, 프로그램이 실행되어 있어야 하고
    2) 모두가 접근할 수 있는 공개 주소인 공개 IP 주소(Public IP Address)로 나의 웹서비스에 접근이 가능해야 함. 

 

  • 내 컴퓨터 대신 계속 켜놓을 컴퓨터를 구매하는 것 : 서버를 구매하는 것
  • AWS라는 클라우드 서비스를 통해서 서버를 빌릴 예정

 

  • 그중에서도 AWS Elastic Beanstalk 빈스톡 이용 
    ▫️쉬운 배포 가능
    ▫️코드를 압축하여 업로드하고, AWS의 다양한 서비스 알아서 연결
    ▫️배포 링크를 통해 쉽게 공유 가능, 코드 업데이트도 가능

 

2) 배포하기

더보기

1) AWS 로그인

  • https://ap-northeast-2.console.aws.amazon.com/elasticbeanstalk/home?region=ap-northeast-2#/welcome

 

2) 보안 자격 증명 > 액세스 키 > 엑세스 키 만들기 

 

3) ID, key 복사해서 저장

 

4) 배포 명령어 모음

- 터미널 준비하기 - 
mkdir deploy
cp app.py deploy/application.py
cp -r templates deploy/templates
pip freeze > deploy/requirements.txt
cd deploy

- application.py 세팅하기 - 
application = app = Flask(__name__)
app.run()

- 패키지 설치하기 - 
pip install awsebcli

- 보안 자격증명 - 
eb init

- 초기 설정 - 
eb create myweb

- 코드 수정 & 업데이트 - 
eb deploy myweb

 

5) VSCode 열기

  • CTRL+C 눌러서 종료해준다. 
mkdir deploy 
     # deploy 폴더 만들기
     
cp app.py deploy/application.py 
     # app.py 파일을 deploy 폴더 아래에 application.py 이름으로 복사
     
cp -r templates deploy/templates 
     # templates 폴더를 통으로 복사해서 deploy 폴더 아래에 넣기
     
pip freeze > deploy/requirements.txt
     # txt 파일에 여기에 들어간 모든 라이브러리를 적어서 저장
     
cd deploy
     # deploy 폴더 안에서 명령어 수행할 예정

 

  • application.py 파일 : 위에 코드를 아래 코드로 수정
app = Flask(__name__)
>
application = app = Flask(__name__)
app.run('0.0.0.0', port=5000, debug=True)
>
app.run()

 

  • 다시 터미널에 입력
pip install awsebcli

eb init
Select a default region : 10 (seoul)

AWS Access Key ID [None]: 발급된 액세스 키 ID (복사 붙여넣기)
AWS Secret Access Key [None]: 발급된 비밀 액세스 키 (복사 붙여넣기)

Enter Application Name (default is "deploy") : enter
It appears you are using Python. Is this correct? : Y
Select a platform branch (default is 1) : enter

Do you want use Codecommit? : N
---
Cannot setup CodeCommit because there is no Source Control setup, continuing with initialization
Do you want to set up SSH for your instances? : Y

Select a keypair : [Create new Keypair]

Type a keypair name : enter
Enter passphrase : enter
Enter same passphrase again : enter

 

  • Eb create
eb create 환경이름

 

  • AWS 접속 > AWS 콘솔 연결 > Elastic Beanstalk 
  • 생성된 환경 이름 확인 > OK 표시 확인

 

  • Eb deploy 
    ▫️deploy 폴더에서 변경할 코드 적고 저장
    ▫️터미널 열고 eb deploy 환경이름 입력후 엔터
    ▫️기다리면 적용됨