🙈

⃝ 동글동글 ⃝

🪐ᐩ˖ 🍎

AWS

[Spring Boot] AWS CodeDeploy + GitHub Actios 자동 배포 및 HTTPS 통신 - EC2편

JONG_UK 2023. 4. 3. 16:48
728x90
반응형
SMALL

AWS EC2(Instance, Elastic IP, Security Group, Load Balancer, Target Group), IAM, S3 Bucket, CodeDeploy, Route53, ACM + GitHub Actions를 이용하여 Spring Boot 프로젝트를 AWS에 자동 배포 및 HTTPS 통신을 하려고 합니다. 

 

제가 했던 자동 배포 과정을 담고 있는 글이니 처음 글부터 하나하나 차근차근 봐주시면 감사하겠습니다.

배포 과정

2023.04.03 - [AWS] - [Spring Boot] AWS CodeDeploy + GitHub Actios 자동 배포 및 HTTPS 통신 - EC2편

2023.04.03 - [AWS] - [Spring Boot] AWS CodeDeploy + GitHub Actios 자동 배포 및 HTTPS 통신 - IAM편

2023.04.03 - [AWS] - [Spring Boot] AWS CodeDeploy + GitHub Actios 자동 배포 및 HTTPS 통신 - S3 버킷편

2023.04.03 - [AWS] - [Spring Boot] AWS CodeDeploy + GitHub Actios 자동 배포 및 HTTPS 통신 - CodeDeploy편

2023.04.03 - [AWS] - [Spring Boot] AWS CodeDeploy + GitHub Actios 자동 배포 및 HTTPS 통신 - GitHub Actions편

 

구현 과정을 담기 이전에 각 파트별 개념을 먼저 짚고 시작해 보도록 하겠습니다.

1. [Spring Boot] AWS CodeDeploy + GitHub Actios 자동 배포 및 Https 통신 - EC2편 

EC2의 큰 개념만 짚고 넘어가도록 하겠습니다. 아래 구현 과정 중간중간에 Elastic IP(탄력적 IP), Security Group(보안 그룹), Load Balancer(로드 밸런서), Target Group(대상 그룹)에 대한 설명이 있으니 읽으시면서 봐주시면 감사하겠습니다!

💡 EC2의 개념

EC2 간단한 설명

EC2는 AWS에서 제공하는 클라우드 컴퓨팅 서비스입니다. 

클라우드 컴퓨팅 서비스는 각 세계에 아마존이 구축한 데이터센터의 서버 컴퓨터들의 자원을 사용하는 만큼의 비용을 지불하고 원격으로 사용하는 것입니다.

즉 사용자가 아마존에서 한 대의 컴퓨터를 임대하는 것입니다.

 

EC2를 사용하는 것의 장점

1. Amazon Elastic Compute Cloud(Amazon EC2)는 Amazon Web Services(AWS) 클라우드에서 확장 가능 컴퓨팅 용량을 제공합니다.

- 어디서든 원하는 만큼 사용할 수 있다.

 

2. Amazon EC2를 사용하면 하드웨어에 선투자할 필요가 없어 더 빠르게 애플리케이션을 개발하고 배포할 수 있습니다.

- 개인이 서버 컴퓨터를 배치해야 하는 데이터센터를 만들 필요가 없어 비용이 절감된다.

 

3. Amazon EC2를 사용하여 원하는 수의 가상 서버를 구축하고 보안 및 네트워킹을 구성하며 스토리지를 관리할 수 있습니다.

- 원하는 만큼 가상 서버를 구축할 수 있다.

- 보안 및 네트워크를 마음대로 구성할 수 있다.

- 사용자가 인스턴스를 완전히 제어할 수 있다.

 

4. Amazon EC2에서는 확장 또는 축소를 통해 요구 사항 변경 또는 사용량 스파이크를 처리할 수 있으므로 트래픽을 예측할 필요성이 줄어듭니다.

- 탄력성

- 용량을 늘리거나 줄일 수 있다. 

 

사용되는 용어

- 인스턴스(Instance) : 가상 컴퓨팅 환경

- 인스턴스 유형 : 인스턴스를 위한 CPU, 메모리, 스토리지, 네트워킹 용량의 여러 가지 구성 제공
- 키 페어(Key Pair) : 인스턴스 로그인 정보 보호(AWS는 퍼블릭 키를 저장하고 사용자는 개인 키를 안전한 장소에 보관하는 방식)
- 보안 그룹(Security Group) : 인스턴스에 연결할 수 있는 프로토콜, 포트, 소스 IP 범위를 지정하는 방화벽 기능
- 탄력적 IP 주소(EIP - Elastic IP) : 동적 클라우드 컴퓨팅을 위한 고정 IPv4 주소

⭐️ EC2 설정

작업 목록
1. 키페어 생성
2. EC2 생성
3. 보안 그룹 생성 및 교체
4. EC2 접속 후 Git, CodeDeploy 설치
추후 포스팅에서 EC2 관련 설정 변화가 있을 예정...

 

EC2 초기 세팅

먼저 아래 링크에서 콘솔에 로그인을 한 뒤 EC2를 검색하여 초기 화면으로 이동

 

무료 클라우드 컴퓨팅 서비스 - AWS 프리 티어

Q: AWS 프리 티어란 무엇입니까? AWS 프리 티어는 고객에게 서비스별로 지정된 한도 내에서 무료로 AWS 서비스를 살펴보고 사용해 볼 수 있는 기능을 제공합니다. 프리 티어는 12개월 프리 티어, 상

aws.amazon.com

EC2 아이콘

서울 Region EC2 홈에서 인스턴스 시작 누르기

 

EC2 홈

이름은 여러분이 지정하고 싶은 이름으로 하신 뒤 

저는 Ubuntu로 배포할 예정이기 때문에 Ubuntu Server 22.04 LTS 버전으로 하도록 하겠습니다.

 

인스턴스 유형은 t2.micro로 정해두고, 키페어가 없다면 새 키 페어 생성을 눌러주세요.

 

키페어는 아래와 같이 만들어주세요.

 

네트워크 설정의 보안그룹은 '기존 보안 그룹 선택' 후 'default' 보안그룹을 선택해 주세요.

나중에 바뀔 예정입니다!

 

 

나머지 아래 부분은 건들지 말고 그냥 쭉쭉 Default로 진행해 줍시다. 사진은 아래 하나 제외하고 생략하겠습니다. 그리고 인스턴스 시작을 눌러주세요!

 

지금까지 했다면 아래와 같이 여러분이 만든 인스턴스를 볼 수 있습니다!

 

 

이제 여러분들은 AWS에서 가상 컴퓨터 1대를 빌린 것입니다.

 

EC2의 퍼블릭 IP 주소는 여러분들이 EC2를 재부팅할 때마다 새로 발급되기 때문에 재부팅을 해도 IP가 변하지 않도록 고정시키기 위해 탄력적 IP(Elastic IP - EIP)를 설정할 것입니다.

 

왼쪽 바에서 네트워크 및 보안의 탄력적 IP로 가셔서 탄력적 IP주소 할당을 눌러 진행해 주세요.

 

태그는 굳이 안 해도 되지만 EIP가 많으면 헷갈리니까 그냥 써 줍시다!

 

만드시고 IP주소를 클릭해 들어가시면 아래와 같이 볼 수 있는데 만약 잘못 만들었다면 '작업->탄력적 IP주소 릴리스'를 통해 제거할 수 있습니다.

 

이제 탄력적 IP주소를 여러분이 만든 인스턴스에 연결해 봅시다.

탄력적 IP 주소 연결을 누르시고 아래와 같이 선택해서 연결을 눌러봅시다.

 

 

그럼 이제 초록색 바에서 연결되었다는 메세지가 출력되고, 연결된 인스턴스 ID를 보시면 제가 만든 Anything-What-You-Want랑 연결되어 있는 것을 볼 수 있습니다. 또한 인스턴스 페이지에 들어가셔도 전에 IP가 탄력적 IP로 변한 것을 볼 수 있습니다.

 

 

이제 HTTPS 통신을 위한 보안 그룹을 세팅해 보도록 하겠습니다. 보안 그룹 세팅 완료 후 인스턴스의 보안 그룹을 바꿔줄 예정입니다.

 

보안 그룹 (Security Group)

보안 그룹은 AWS에서 임대한 인스턴스의 가상 방화벽입니다. 인바운드와 아웃바운드 규칙이 있습니다.

 

인바운드(Inbound) 규칙

- EC2 인스턴스로 들어오는 트래픽에 대한 규칙

 

아웃바운드(Outbound) 규칙

- 데이터를 인스턴스에서 내보낼 때 해당 트래픽에 대한 규칙

 

보안 그룹 생성하기

먼저 왼쪽 사이드바에서 보안 그룹을 선택 후 보안 그룹 생성을 눌러주세요.

 

인바운드 규칙에서 규칙 추가를 눌러서 하나씩 세팅해 보도록 합시다

 

- SSH : 나의 로컬 컴퓨터 IP, 아무 데서나 접근하면 안 되기 때문에 내 IP를 선택해 현재 내 IP에서만 인스턴스에 접속이 가능하도록 할 수 도록 합시다.

- HTTP : 일반적인 HTTP 통신용이며 포트는 80을 사용합니다.(고정)

- HTTPS : 보안그룹에서 HTTPS 설정을 해주지 않으면, https://에서 요청하는 url에 대해서는 처리할 수 없습니다.

- 사용자 지정 TCP : 스프링부트는 8080 포트를 사용해 주기 때문에 8080 포트로 보내는 요청을 처리하기 위해 추가합니다.

 

아웃바운드 규칙은 Default를 사용하고 보안그룹 생성을 눌러줍시다.

 

 

한글을 사용하면 아래와 같은 에러가 발생할 수도 있으니 뒤로를 눌러 한글을 제거해 줍시다.

 

이렇게 하고 다시 생성을 누르면 문제없이 잘 생성될 것이며, 이제 이 보안 그룹을 인스턴스에 연결하도록 합시다.

 

인스턴스로 들어가서 아까 만든 Anything 어쩌구 인스턴스를 클릭하고 아래와 같이 해줍시다.

작업 -> 보안 -> 보안 그룹 변경

 

 

Default로 있는 건 제거를 눌러 주시고 저희가 만든 Anything-SG를 클릭 후 보안 그룹 추가를 눌러 주신 후 저장을 눌러야 합니다.

 

 

EC2 접속 및 Git 설치

 

이제 여러분들이 만든 인스턴스에 접속해서 GitHub에 있는 프로젝트를 가져오기 위해 Git까지 설치해 보도록 합시다.

 

전에 Key Pair를 만든 게 있을 텐데 그걸로 SSH 접속을 할 예정입니다.

인스턴스 페이지로 돌아가 연결을 클릭해 보도록 합시다.

 

이제 SSH 클라이언트를 선택하면 아래와 같은 화면을 볼 수 있습니다.

 

 

먼저 위에서부터 차례대로 하나씩 진행해 볼 건데 키페어가 있는 Dir에서

chmod 400 TestDeploy.pem을 복사해서 터미널에서 저희가 만들었던 Key Pair의 접근 권한을 바꿔두도록 합시다.

 

그리고 키페어가 있는 Dir에서 아래 코드를 복사해서 EC2를 실행해 보도록 합시다.

⚠️ 코드와 키페어는 개인별로 다르기 때문에 저와 같지 않습니다.

ssh -i "TestDeploy.pem" ubuntu@ec2-43-201-192-14.ap-northeast-2.compute.amazonaws.com

아래와 같은 창이 출력되면 yes를 눌러 접속해 줍시다.

 

깃 설치는 아래 포스트를 따라 해 주세요

 

AWS EC2 Ubuntu git 설치 및 연결 - public, private 저장소 clone

깃 설치 / SSH KEY 생성 및 등록 / public 및 private 저장소 clone

velog.io

 

EC2 Ubuntu에 Java 11 설치

이제 우분투에 자바를 설치해 봅시다!! 아래 포스팅을 따라해주세요!

 

[AWS] ubuntu - open JDK 11 설치

ubuntu - open JDK 11 설치

velog.io

 

 

* 로드 밸런서와 대상 그룹에 대한 글 수정 필요 *

 

여기까지 문제없이 진행되셨다면 다음은 로드 밸런서(Load Balancer) 대상 그룹(Target Group)을 생성해 보도록 합시다.

 

로드 밸런서와 대상 그룹에 대한 설명은 아래 포스트를 참고해 주세요.

 

[AWS] 로드 밸런서란?

ELB 와 ALB에 대해 들어가기 앞서 로드밸런서에 대해 짚고 넘어가 봅시다. 로드 밸런서(Load Balancer) 서버에 가해지는 트래픽을 여러대의 서버에게 균등하게 분산시켜주는 역할을 하는 것이 로드 밸

yoo11052.tistory.com

 

[AWS] 📚 ELB(Load Balancer) 개념 원리 & 사용 세팅 💯 정리

ELB (Elastic Load Balancer) ELB(Elastic Load Balancer)란 애플리케이션 트래픽을 여러 대상에 자동으로 분산시켜 안정적인 AWS서버 환경을 운용하는데에 도움을 주는 서비스다. EC2뿐만 아니라 컨테이너(ECS), A

inpa.tistory.com

 

여기까지 하셨다면 일단 EC2에서의 초기 세팅은 완료하신 겁니다!!

 

다음은 IAM USER를 만들어 보는 작업으로 돌아오도록 하겠습니다!

2023.04.03 - [AWS] - [Spring Boot] AWS CodeDeploy + GitHub Actios 자동 배포 및 HTTPS 통신 - EC2편

2023.04.03 - [AWS] - [Spring Boot] AWS CodeDeploy + GitHub Actios 자동 배포 및 HTTPS 통신 - IAM편

2023.04.03 - [AWS] - [Spring Boot] AWS CodeDeploy + GitHub Actios 자동 배포 및 HTTPS 통신 - S3 버킷편

2023.04.03 - [AWS] - [Spring Boot] AWS CodeDeploy + GitHub Actios 자동 배포 및 HTTPS 통신 - CodeDeploy편

2023.04.03 - [AWS] - [Spring Boot] AWS CodeDeploy + GitHub Actios 자동 배포 및 HTTPS 통신 - GitHub Actions편

 

 

728x90
반응형
LIST