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.logPrivate 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.logCode 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로만 접속 가능)