계속 할 때마다 요리저리 참고하면서 하는게 귀찮아서 정리해놓는다!!
EC2 생성부터 도커로 CI/CD 까지!!

위와 같은 아키텍처로 만들어볼 것이다
EC2 생성하는거까지는 금방할 수 있을 것이다
우선 VPC를 생성한다. ex) 10.0.0.0/16

vpc란 클라우드 환경에서 사용자가 마치 독립된 개인 네트워크처럼 사용할 수 있는 가상 네트워크 공간이라고 생각하면 된다.
1번 단계에서 만들어놓은 vpc 를 선택해서 public subnet을 생성해준다.
가용영역은 ap-northeast-2a 로 선택해준다.
ex) 10.0.1.0/24

참고로, 해당 서브넷은 외부와 통신할 수 있도록 할 것이기 때문에 인터넷 게이트웨이와 연결해야한다. 만약 외부와 통신할 수 없도록 하려면 인터넷 게이트웨이와 연결 안 하면 된다!

이제 외부와 통신하기 위한 인터넷 게이트웨이를 연결해준다. 생성한 인터넷 게이트 웨이를 VPC와 연결해주면 된다.
라우팅 테이블을 생성해서 해당 인터넷 게이트 웨이를 통해 라우팅해줄 것이다.
마찬가지로 만들어놓은 VPC를 선택하고 생성한다.


만든 후에는 라우팅 편집을 눌러 0.0.0.0/0과 만들었던 인터넷 게이트웨이를 추가하고 변경 사항을 저장한다. 이 의미는 10.0.0.0/16 CIDR 블록을 제외한 접근에 대해서는 인터넷 게이트웨이로 라우팅 한다는 뜻이다.

그리고 서브넷 연결 편집을 눌러 만들어둔 서브넷을 연결해준다.
EC2를 생성할 때 만들어도 되지만 미리 만들어놓고 들어가겠다. 나중에 private 보안 그룹도 만들거기 때문에 public 인 경우는 이름에 public이라고 명시하는게 편하다.

마찬가지로 만들어둔 VPC를 선택하고 인바운드, 아웃바운드 규칙을 설정하면 된다.
인바운드는 안으로 들어오는 트래픽에 관한 것이고 아웃바운드는 밖으로 나가는 트래픽에 관한 것인데 아웃바운드는 모든 트래픽에 대해 허용하면 된다.
인바운드 규칙은 HTTPS, HTTP, SSH를 기본으로 설명해주고, 나는 스프링부트를 사용할 것이기 때문에 스프링 부트 포트번호 8080 또한 설정해준다.
그리고 이후 nginx 설정도 할 것이기 때문에 ::/0 도 추가해준다.

이제 EC2 인스턴스를 생성해준다!!
나는 프리티어를 사용할 것이기 때문에 적절한 인스턴스 이름으로 작성해주고 Ubuntu로 할 것이다.

t2.micro로 설정되어있는 것을 유지해주고
키페어는 RSA & .pem 으로 생성해준 다음에 적절한 위치에 잘 이동시켜둔다.

네트워크 설정은 만들어둔 VPC를 설정해주고, 서브넷도 만들어둔 public subnet을 선택한다. 그렇게 되면 만들어놓은 보안그룹이 나올 건데 해당 보안그룹으로 설정해준다.

마지막으로 스토리지 설정을 해주면 되는데 프리티어는 30GiB까지 지원해준다. 나중에 변경 가능하긴 한데 그냥 처음부터 해두는게 편하다.. CPU 넘치고 난리나면 EC2 접속이 안돼서 힘들어짐

이렇게 설정해주면 EC2 생성이 끝난다.
그리고 고정된 IP 주소를 할당받기 위해 탄력적IP 주소를 할당해주면되는데, 만들고 나서 꼭꼭!! 탄력적 IP 주소 연결을 눌러서 만들어둔 EC2를 연결해준다.
얘는 할당받아놓고 연결 안 하면 요금 나오니까 꼭~ 연결해주기
이제 터미널에서 아까 받은 .pem 이 저장되어있는 위치로 이동한 다음에
chmod 400 {.pem이름}.pem으로 권한 설정을 해준다. 그 다음에
ssh -i "{.pem이름}" ubuntu@{IP주소} 를 입력해주면 연결이 될 것이다!!

curl http://checkip.amazonaws.com 을 입력해 IP 주소가 출력된다면 올바르게 연결된 것이다.
아니면
ping 15.165.194.164 로 핑테스트해보기!