AWS 배포 완벽 가이드 | Section 9, 10
Section 9 | Cloud Security 101
Virtual Private Network (VPC) & Subnets 알아보기
- Virtual Private Network (VPC) ⊃ Available Zones ⊃ subnets
Load balancer 더 자세히 알아보기: listener rules & target groups
- listener rules: HTTP로 들어온 걸 443, HTTPS로 redirect하는 규칙 등 경로에 따라서, 혹은 아예 다른 포트로 받는 등 다양한 규칙을 만들 수 있음
- target groups: Load Balancer가 redirecting을 해주기 위해서 Private IP들의 리스트를 가지고 있음.
서버를 생성/삭제할 때마다 결국은 target group을 업데이트해줘야 함
방화벽: Security Groups
- Inbound (외부로부터 요청을 받을 때), Outbound (서버 내부에서 외부로 요청을 보낼 때)

IAM (Identity and Access Management) user 만들어서 권한 제한 해보기
- AWS에 처음 로그인할 때 아래와 같이 Root user와 IAM user로 나뉜다. 예를 들면 깃허브 리포지토리 만들 때 처음 생성한 사람이 root user이고, 그 후 root user에게 각자 권한을 받아서 (예를 들어 A는 읽기 권한만, B는 쓰기, 레포 삭제 권한도 등등) 들어온 user들을 IAM user라고 한다고 비유할 수 있다.

- 로그인 후 IAM 에 들어와서 User에 들어오기


- 새로운 User 만들기: ecs 관련 모든 걸 총괄하는 admin을 만든다고 가정하고 이름도 ecs-admin이라고 지어보자






- 순서대로 ID, username, PW

- 로그아웃하고 IAM user로 로그인해보기
- 콘솔 로그인 URL로 접속하기

- 사용자이름, 콘솔암호 차례로 입력하고 로그인
- 권한 중
AdministerAccess는 root user나 다름없이 모든 권한을 허용함
- 이것저것 user 권한 상 제한되는 것들이 있음.. 이걸 어떻게 선택하지? 이후에 다시 root user로 들어가서 추가로 권한을 부여하면 됨.
Section 10 | Container Orchestration
Kubernetes vs Elastic Container Service (ECS) vs Elastic Beanstalk
- Kubernetes: 오픈소스 made by 구글, 로컬에서 구현 가능
- ECS: 로컬에서는 구현 불가, AWS에서 돌릴 때 Kubernetes에 비해 상대적으로 저렴 ✅
- Elastic Beanstalk: 로컬에서는 구현 불가
AWS ECS : hello world
- Docker Hub에 있는 Public image 중 하나인 Engine X (
nginx)를 사용해서 ECS에 배포하기
- 로컬 터미널에서
docker run -it -p 80:80 nginx으로 실행해보기
(여기에서 80포트가 이미 window 시스템 프로세스에 의해 점유되어있다는 문구가 떠서 부득이하게 4000포트로 우회함. 터미널에서는 성공적으로 run 후 http//localhost:4000 에서도 연결 확인함.)


- 이제는 AWS에서 해보자!
- AWS 창에서 ECS로 검색해서 들어가기
- 클러스터 → 클러스터 생성 누르기
- 클러스터 이름은
nginx-cluster1, 인프라는 AWS Fargate로 설정한 후 나머지는 디폴트로 두고 생성
- 생성된 클러스터로 들어와서 task definition 클릭 후
nginx-definition 이라는 이름의 task definition 생성

- 그 아래에 있는 컨테이너도 설정해주기: 이름
nginx만 설정하면 됨
- 아래와 같이 들어가서 task 설정하고 생성하기




- 배포 완료 확인하기


- 그냥 종종 AWS 내부 네트워크 문제로 실패하기도 하나보다.. 스택 삭제하고 다시 시도하면 됨

Cloudwatch 이용해서 Task 단위 로그 확인하기 그리고 관련 주의사항!
- Loggroup은 디폴트로 Task 생성하기 전에 무조건 있어야 함 (원래 있음 삭제하면 안됨)

AWS ECS: Service 사용해서 여러개의 Task 생성하고 Load balancer 연결해주기
- Cluster에 들어가서 Service 생성하기로 들어가기

- Service 생성하기


loadBalancer 추가해줘야 함


- 생성완료된 것 확인!

- 이전과 달리 이번에는 Task의 PublicIP로 접속해도 접속할 수 없음
- Load balancer로 접속해보자

- Security groups 추가하기


- 이제 아래의 도메인으로 접속하면 접속가능함

AWS ECS Cluster 삭제하기
- Service 삭제

- task 삭제 확인
- cluster 삭제