AWS CLI
사용을 위해서는 다음과 같이 AWS Configure
를 구성해 주어야 한다.AWS IAM
을 통해 먼저 Access Key ID
와 Secret Access Key
를 할당받아야 한다.AWS IAM
액세스 키를 발급받아야 하는데 액세스 키 발급 과정은 다음과 같다.IAM
에 접속해 준 뒤 사용자
에 들어간다. 그렇게 되면 생성한 사용자
의 목록이 뜨게 되는데 AWS CLI
사용을 해 줄 사용자 계정
을 선택해 준다. 사용자 계정
을 선택하면 사용자
의 상세 정보를 확인 및 관리하는 창이 뜨게 되는데 그중 자격 증명
을 선택한다.자격 증명
들이 나오게 되는데 이때 액세스 키
-> 액세스 키 생성
을 들어가 준다. 액세스 키
를 생성하기 위한 목적을 선택하게 되는데 해당 액세스 키
는 AWS CLI
에서 AWS 계정에 액세스 하기 위해 사용될 것이므로 Command Line Interface(CLI)
를 선택해 준다.액세스 키
는 .csv 파일로 받아 보관 가능하며 이후 AWS CLI
를 실행한 후 다음과 같이 configure
설정을 해 준다. aws configure
설정의 예시이다.$ aws configure
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: ap-northeast-2
Default output format [None]: json
aws configure
내용을 확인하기 위해서는 aws configure list
명령어를 사용해 준다.aws s3 ls
s3 bucket
들을 확인할 수 있다. `aws s3 mb s3://'생성할 bucket명'
AWS CLI
를 통해 s3 서비스에 새로운 bucket을 간략하게 생성할 수 있는 명령어이다.aws s3 sync . s3://
업로드할 bucket명'
sync
명령어를 통해 업로드할 수 있다.bucket
에 업로드가 된다.aws s3 rm s3://'삭제할 파일이 있는 bucket명' --recursive
rm
이라는 명령어를 통해 파일을 삭제할 수 있다.--recursive
는 하위 폴더 및 파일들 역시 모두 포함하여 제거한다는 명령어이다.⏪ 어제까지 실습 내용 (요약)
1. 먼저 백엔드(Back-end)단의 서비스를Spring Boot
를 통해 만들어 준다.
2.Github Repository
에 1에서 만든 백엔드(Back-end) 서비스를commit
및push
해 준다.
3.VPC 구성
4.Elastic Beanstalk
애플리케이션 생성
5.Baston host
에 해당하는EC2
생성
콘솔 접속
Baston host
는 public으로 설정했기 때문에 콘솔에서 ssh -i ec2-user.ppk(ppk 혹은 pem 파일로 key 페어) ec2-user(계정)@EC2 IP
명령어로 접속한다. Baston host
는 public이기 때문에 다음과 같은 명령어로 접근이 가능하나 4의 과정에서 생성해 준 애플리케이션은 private subnet
영역에 있기 때문에 바로 접근이 불가하다.Baston host
에 먼저 키 페어를 연결해 준다. (ppk 혹은 pem)Elastic Beanstalk
에서 EC2 키 페어
를 연결한 적이 없다면 Elastic Beanstalk
-> 환경
-> 연결해 줄 애플리케이션
-> 구성
-> 보안 수정
-> 가상 머신 권한
-> EC2 키 페어
를 먼저 연결해 준다.애플리케이션의 Private IP
로 접속해 준다. CLI
에서 ssh -i 연결해 준 key 페어 ec2-user(계정)@Private IP
를 입력한다. 이 과정을 거치면 public subnet
에 있는 Baston host
에 먼저 접속해 주고 그를 통해 Private subnet
에 있는 Elastic Beanstalk
의 애플리케이션에 접속해 준다.cd /var/log
로 이동해 주면 된다. 이때 web.stdout.log
를 통해 로그 파일을 볼 수 있다. Beanstalk
콘솔에서도 로그
를 요청해서 받을 수 있다. tail
로 보고 싶다면 콘솔을 통해 tail -200f web.stdout.log
명령어를 사용해서 볼 수 있다. sudo su -
-> tail -200f web.stdout.log
Private subnet
안에 DB
가 구성될 수 있도록 생성해 준다.RDS
에서는 서브넷 그룹
을 생성할 수 있는데 이때 서브넷 그룹
을 먼저 생성해 준다.Amazon RDS
-> 서브넷 그룹
-> 서브넷 생성
을 하게 되면 다음과 같이 DB 서브넷 그룹
을 생성할 수 있는 화면이 뜨게 된다. 서브넷 그룹의 세부 정보를 먼저 입력해 준다.VPC
를 생성할 때 생성해 준 두 개의 Private subnet
주소를 선택해 주고, 이 subnet
이 속해 있던 가용 영역 (AZ)
를 설정해 준다.subnet
그룹 안에 데이터베이스
가 들어올 수 있도록 다시 RDS
홈페이지로 돌아가 데이터베이스 생성
을 해 준다. EC2
에서 바로 연결을 해 두기 위해서는 연결
-> EC2 컴퓨팅 리소스에 연결
을 선택해 준다.VPC
를 먼저 선택한 후 해당 VPC
에 속하는 미리 생성해 둔 서브넷 그룹
을 선택한다.파라미터 그룹
을 통해서 할 수 있다.엔드 포인트
가 나오게 되면 이 엔드 포인트
를 데이터베이스 주소
로 사용하면 된다. 호출할 때 3306
포트와 엔드 포인트
를 Host
로 입력하면 된다.보안 그룹
-> 인바운드 규칙
에서 3306이 생성되어 있는지 확인해야 한다. 3306이 MySQL에 접속할 수 있게 해 주는 포트이다.Private subnet
에 DB
를 생성했기 때문에 바로 연결이 가능하지 않다. 그렇기 때문에 SSH configure을 통해 Baston host
를 먼저 SSH Connection을 해 준 후에 DB
를 호출하면 Private subnet
에 있는 DB
에 접속이 된다.Front
에 있는 소스를 bucket
에 올려야 하기 때문에 s3
에서 bucket
을 만들어 준다. 버킷 이름
은 도메인명
으로 설정해 주어야 하며 추후에 호스팅을 할 때도 해당 도메인명
을 사용해 주어야 한다.정적 웹 사이트
로 호스팅을 할 것이기 때문에 생성한 bucket을 눌러 준 후 상세 정보가 있는 창에서 정적 웹 사이트 호스팅 편집
을 누르게 되면 다음과 같은 화면이 뜨게 된다.npx create-react-app front-app명
과 같이 명령어를 입력해 주면 react
기본 템플릿 페이지가 생성된다. 이때 npx
명령어를 위해 npx
를 설치해 주어야 한다.VS CODE
의 터미널
에서 serve -s build
명령어를 입력하면 빌드된 내용을 웹에 띄울 수 있다.build
프로젝트에 있는 파일들을 S3
에 올려서 생성한 bucket
에 업로드 해 준다. 이때 퍼블릭 액세스 차단 편집
을 가서 모든 퍼블릭 액세스 차단
을 해제해 준다.버킷 정책
-> 편집
을 눌러 누구든 접속할 수 있도록 정책을 수정해 준다. 정책 생성기
를 사용해 준다.S3 Bucket Policy
를 생성할 것이기 때문에 S3
정책을 선택해 주고, Allow
허가로 설정해 준다. 이때 대상은 *
을 통해 모두에게 적용되도록 해 준다. ARN
은 본인의 버킷 ARN
을 복사해 주고 모두에게 적용할 것임으로 /*
을 붙여 준다.버킷 정책
에 넣어 준다.Code Pipeline
을 먼저 생성해 준다. 파이프라인 생성
을 해 준 후 소스
는 github
에 있는 내용을 연동해 준다. (git
에 push
했기 때문에. 만약 다른 곳에 소스를 두었다면 소스 공급자를 수정해 주어야 한다.)브랜치 선택
이 가능하다. 해당 리포지토리의 브랜치
를 가지고 오는 것임으로 만약에 개발, 스테이징, 프로덕션이 나누어져 있다면 각각의 브랜치
를 모두 사용해야 한다.빌드 스테이지 추가
시 Code Build
를 생성해야 하는데 만약 Code Build
가 존재하지 않는다면 하나 생성해 주어야 한다. 다음과 같이 빨간 상자로 표시해 놓은 부분을 추가해 주어야 한다.배포 스테이지 추가
시 현재 구조는 private
안에 들어가 배포를 해야 하기 때문에 ELB
를 통해서 배포할 수 있도록 구성해야 한다. Code Deploy
생성 시 환경 구성
->Amazon EC2 Auto Scaling 그룹
을 체크 표시해 두고 그룹을 선택해 준다.ELB
를 통해서 배포할 것이기 때문에 로드 밸런서
->로드 밸런싱 활성화 체크
-> Application Load Balancer 또는 Network Load Balancer
를 선택하고 대상 그룹(Beanstalk의 EC2)를 생성해 준다. Code Deploy
를 사용할 때는 루트 위치에 appspec.yml
을 추가해 주어 github
에 배포를 해 주어야 한다. Code Deploy
가 이를 읽고 배포되는 위치를 알게 되고 정상적으로 돌아가게 된다.console
에서 Bastonhost
에 먼저 접속해 주고 Private
의 애플리케이션에 접속하기 위해 Private IP
로 접속해 준다.Code Deploy-agent
를 설치하지 않았다면 Code Deploy-agent
를 설치해야 한다. less /var/log/aws/codedeploy-agent/codedeploy-agent.log
Code Pipeline
이 구성되게 되면 만약 Code
에 변화하는 이벤트가 일어날 경우 Code
-> Build
-> Deploy
의 파이프라인이 자동적으로 진행되게 된다.Route 53 대시보드
에 접근해 도메인 등록
에 원하는 도메인
을 검색한다. 해당 도메인을 사용할 수 있는지 없는지 알려 주며 사용할 수 없는 경우 관련 도메인을 제안해 준다.Route 53
으로 구입하지 않고 외부에서 도메인을 등록했다면 호스팅 영역 생성
->도메인 이름
에 외부에서 구매한 도메인을 입력해 주고 생성해 준다. 그러면 값/트래픽 라우팅 대상
에 DNS
가 생성된다.값/트래픽 라우팅 대상
에 있는 서버로 교체해 준다.CloudFront
-> 배포
-> 생성
에서 원본 도메인에 Route 53에서 생성한 DNS
를 선택해 준다.기본 캐시 동작
-> 뷰어 프로토콜 정책
에서 HTTPS
에서만 사용할 건지 HTTP
와 HTTPS
모두 사용할 건지를 선택해 준다.설정
->AWS WAF 웹 ACL
을 통해 등록해 주면 된다.사용자 정의 SSL 인증서
를 필요하다면 ACM
에서 발급받고 해당 도메인의 사용자 정의 SSL 인증서
를 입력한다. 실제 도메인이 아니라면 검증이 불가하기 때문에 SSL
인증서를 발급받을 수 없다.Route 53
에서 레코드를 추가해 준다. 값/트래픽 라우팅 대상
을 S3 웹 사이트 엔드 포인트
로 선택해 주고 레코드 유형을 A~IPv4 주소 및 일부 AWS 리소스로 트래픽 라우팅
을 선택해 주게 되면 Route 53
으로 등록한 도메인으로 접속해도 주소창에 엔드 포인트
주소를 입력하는 것과 똑같이 접속할 수 있다. 1. 파라미터 그룹
파라미터 그룹
은AWS
에서 제공하는 기능으로DB 옵션
을 설정하기 위해 제공하는 기능이다.- 즉, 데이터를 다루기 위해 여러 세팅을 정해야 하는데 그 데이터베이스 구성을 다음과 같이
파라미터 그룹
을 생성하여 생성된파라미터 그룹
과 연결하는 것이다.- 특정 설정을 바꾸기 위한 과정의 복잡함을 줄이기 위해서 이 설정을
파라미터 그룹
으로 두고, 구성 방법을 지정할 수 있다.
2. npx 명령어를 위한 설치
- 실습 과정에서
npx
명령어를 통해react
의 기본 템플릿을 생성하는 과정이 있었는데npx
명령어를VS Code 터미널
로 바로 호출 시에 다음과 같은 오류가 발생했다.- 해당 오류가 발생하는 이유는
npx
가 설치되지 않았기 때문인데 먼저node.js
를 설치해 주어야 한다.
🔗 node.js 설치 링크node.js
를 설치했다면 cmd에 접속해node -v
로 제대로node.js
가 설치되었는지 확인한다. 이때node.js
를 설치하면npm
도 같이 설치되므로npm -v
명령어로npm
도 제대로 설치가 되었는지 확인한다.
npm install npx -g
- 다음과 같이 버전이 나오고 제대로 설치된 것을 확인하였다면
npm install npx -g
라는 명령어를 통해npx
를 설치해 준다.- 이후 다시
npx creat-react-app test-pro(생성할 프로젝트명)
을 입력하면 react의 기본 템플릿으로 프론트엔드 단이 생성된 것을 확인할 수 있다. (생성 과정까지는 시간이 걸린다.)npm start
명령어를 통해 실행하면 다음과 같이 기본react
화면이 생성됐음을 알 수 있다. (AWS로 배포 전에는 localhost로만 접속 가능)