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 환경이름 입력후 엔터
▫️기다리면 적용됨