SaaS - 클라우드 제공자가 당장 사용 가능한 소프트웨어를 제공
PaaS - 클라우드 제공자가 가상 컴퓨터를 제공
Development - Intergration - Staging - Production
개발환경과 배포환경을 동일하게 구성하기 위해 환경변수로 설정해야 한다
Elastic Compute Cloud
비용, 성능, 용량 면에서 탄력적인 클라우드 컴퓨터를 제공
다양한 운영체제, CPU, RAM, 외장하드로 구성 가능
AMI - 운영체제와 런타임 소프트웨어 구성이 기재된 템플릿(우분투 + node.js, 윈도우 + JVM 등). EC2의 이미지
Relational Database Service
데이터베이스 유지 보수와 관련된 일들을 RDS에서 전적으로 자동 관리
다양한 데이터베이스 엔진 선택지를 제공
Simple Storage Service
높은 확장성과 강한 내구성을 가짐
리전(AWS의 물리적인 서버의 위치) 내의 복수의 가용 영역(데이터센터)을 사용하여 안전성을 보장
버킷 - 파일을 저장하는 최상위 디렉터리, 버킷 정책을 생하여 엑세스 권한 부여
인스턴스 생성 - 서버를 인스턴스에 배포 - 인스턴스에서 서버 실행 - 서버
인스턴스 '종료'는 인스턴스의 삭제를 뜻한다. 인스턴스를 잠시 끄고 싶다면 인스턴스 '중지'를 하자
세션매니저를 통해 인스턴스에 연결한다.
cmd 터미널이 열리는데 $ bash 명령어로 좀더 편하게 사용할 수 있다
항상 sudo apt update 를 먼저 실행시켜 패키지 매니저를 최신 상태로 만들고 시작하자
sudo apt install openjdk-11-jre-headless 자바11 설치
java -version 설치 확인
새로운 호스트이기 때문에 해당 인스턴스의 SSH등록이 필요하다
ssh-keygen ssh키 생성 - 생성된 공개 키를 개인 Github 설정에서 등록
인스턴스의 기본경로는 /var/snap/amazon-ssm-agent/6563 로 시작된다
편의를 위해 홈 경로로 이동하자 cd ~
git clone git@github.com:..생략..git git 파일을 클론
해당 빌드 파일이 있는 곳에서./gradlew build 빌드
java -jar build/libs/DeployServer-0.0.1-SNAPSHOT.jar 어플리케이션 실행
'퍼블릭 IPv4 주소' 또는 '퍼블릭 IPv4 DNS' 로 진입(주의 http, https 확인할 것)
AWS 인스턴스의 가상 방화벽. 트래픽에 대해 인바운드와 아웃바운드에 대한 규칙을 설정한다
인바운드의 기본값은 ssh 규칙만 허용한다. 아웃바운드는 모든 트래픽을 허용한다
[보안 그룹] 탭에서 생성/관리 할 수 있다.
버킷 생성후 호스팅 활성화 - 정적 파일 업로드 - 정책 설정 - 엔드포인트 접속
1. 버킷 구성(호스팅용 정적 웹 사이트)
- S3 탭에서 버킷 생성 or 기존 버킷 선택
- [속성]-[정적 웹 사이트 호스팅]을 편집
- 호스팅을 활성화, 인덱스 문서와 오류 문서 설정 후 저장
- 생성된 [EC2 엔드 포인트] 확인
2. 정적파일(클라이언트 코드)을 버킷에 업로드
- 홈 화면 자바스크립트 파일(index.js)의 설정 주소를
EC2 엔드 포인트로 설정
**http://는 포함, url 끝의/제거- 버킷 선택, 객체 - 생성해둔 정적 파일 업로드
3. 정책 생성
- [권한] - [퍼블릭 액세스 차단(버킷 설정)] 해제
- 모든 [퍼블릭 액세스 차단 설정]을 해제하고 저장(타 사용자 접근 권한을 부여)
- [권한] - [버킷 정책] 편집 - [버킷 정책 생성기] 클릭하여 정책 생성
Policy: S3 Bucket Policy Effect: Allow Principal: * # 권한 적용 대상 = 모든 사용자 Action: GetObject # 접근 활동 = 모든 Get활동 ARN(Resource): arn:aws:s3:::[버킷 이름]/*
- 설정 후 [add statement] 클릭
- [Generate Policy] 눌러 생성한 JSON형태의 정책 복사
- 복사한 정책을 [정책] 에 붙여넣고 변경 사항 저장
4. 접속
설정된 엔드포인트로 접속
MySQL DB 인스턴스 생성 후, 로컬에서 MySQL 클라이언트로 연결하기
데이터베이스 생성
- RDS - 데이터베이스 탭에서 데이터베이스 생성
- 엔진 옵션 MySQL, 템플릿 옵션 프리티어
- 연결 옵션 - 식별자(DB클러스터 이름), 사용자 이름, 암호 설정
- DB 인스턴스 클래스 - t2.micro
- 연결 옵션 - 퍼블릭 엑세스 가능 '예'
- 보안 그룹 - default(로컬 터미널에서 테스트 가능)
- 데이터베이스 포트 설정
- 추가구성 - 초기 데이터베이스 이름 설정
- [데이터베이스 생성]을 눌러 DB인스턴스 생성
MySQL 클라이언트로 DB 인스턴스 연결
- 생성된 데이터베이스 인스턴스 클릭하여 엔드포인트 확인
- 로컬 터미널에서 명령어 사용
SQL를 통한 DB접속
mysql -u [마스터 이름] --host [엔드 포인트 주소] -P 13306(포트 번호) -p- 패스워드 입력(마스터 비밀번호)
명령어로 접속
EC2 인스턴스로 실행중인 서버를 데이터베이스, 클라이언트와 연결한다
서버 앱의 application.properties 파일의 URI에 대한 환경변수가 설정되어야 한다
nano를 사용하여 해당 파일에 접근하자
nano src/main/resources/application.properties
- RDS의 엔드포인트는 포트까지 설정되야 한다
- 해당 데이터베이스의 아이디와 패스워드를 입력한다
- S3 Endpoint에는 http://를 넣도록 하자
설정파일을 작성후 재빌드하고 재 실행한다
s3의 엔드포인트로 접속한다
클라이언트가 EC2 인스턴스에 HTTP 요청
- EC2 인스턴스의 보안 그룹 : 해당 요청이 허용된 포트로의 요청인지 확인
- IAM 정책: EC2 인스턴스를 통한 요청(할당된 IAM 역할)이 S3 버킷에 대한 적절한 권한을 가지고 있는지 확인
8080:80
8080는 외부포트 80은 내부포트, 8080 포트를 80 포트로 받는 다는 뜻.
보편적으로 웹 브라우저는 80, 443 외부 포트로 설정되어있다(기본 포트임으로 생략 가능)
http://example.com -> example.com:80 를 칭함
https://example.com -> example.com:443 를 칭함
AWS에서 제공하는 Route 53 서비스를 이용하면 직관적인 도메인 주소를 통해서 서비스에 접근하도록 할 수 있다
꾸준히 작성하시다니 멋져요....ㅇㅁㅇb