AWS https 자동 배포 기록

손연주·2021년 10월 28일
1

PROJECT

목록 보기
2/4
post-thumbnail
post-custom-banner

EC2, Codepipeline, Route53, 로드밸런서를 이용해 서버 https로 자동배포 하는 법은 위의 영상을 참고하며 따라했다. 어떻게 하는지의 방법 보다는 이걸 왜 써야하는지 이유에 대해서 추후에 서술하려고 한다.

EC2 생성과 파이프라인 연결

인스턴스 생성과 파이프라인 연결은 나름 간단(?)하기 때문에 집중해서 진행한다면 쉽게 마칠 수 있다.


물론 .. 시행착오는 있었다. 파이프라인을 새로 만들어도 deploy에서 항상 실패가 떠서 아예 인스턴스를 삭제하고 새로 생성해서 연결해보니 잘 됐다. 인스턴스 보안그룹 설정에 실수가 있었다.

EC2와 로드 밸런서의 연결

진짜 문제는 로드밸런서를 생성하고 EC2와 연결을 진행하면서 시작됐다. 배포를 끝내고 도메인에 접속해 보니 https가 아닌 http로 배포가 되어 있었다. 분명 보안그룹에 https와 http 설정은 잘 되어있었고, 또 AWS에서 도메인을 구매했기에 자동으로 EC2에 인증서 발급이 됨으로 인증서 문제도 아니었다.

억지로 https:// 를 앞에 붙이고 도메인 주소를 이어 적으니

이런 게 떴다. 검색을 해보니 그냥 고급을 눌러서 무시하고 접속하라는 글만 나왔다.

결국 원인을 몰라 처음부터 하나하나 살펴 보다가 로드 밸런서의 대상 그룹을 확인하니 상태 하나가 unhealthy라는 걸 발견했다.

저 곳에서 알려주는 나름의 오류 메세지는
unhealthy Health checks failed with these codes: [200]
였다.

해결 방법

How to fix 'Health checks failed with these codes: ' on elasticbeanstalk instace?
구글링을 하다가 이런 글을 찾았다.

the fix was to change the health check's "Success codes" setting from 200 to 200,301.

순간 초기 세팅 때 성공 코드를 201로 설정했던 게 떠올랐다.
로드밸런서-> 대상 그룹 -> 고급 상태 검사 설정에 들어가서 성공 코드를 다시 200으로 바꾸니 healthy로 바뀌었다.

로드밸런서 HTTP -> HTTPS 리다이렉션

그럼에도 불구하고 여전히 http였다. 이번에는 http와 https의 배포 방법에 대해서 구글링을 계속 하다가 이런 글을 발견하였다.
AWS 로드밸런서 HTTP → HTTPS 리다이렉션

글에 나온대로 HTTP로 접속하면 자동으로 HTTPS로 리다이렉션이 되게끔 설정을 해줘야 한다.

해결 방법

로드밸런서->리스너에서 HTTP:80을 확인하니 리다이렉션 값이 없었다. 편집을 눌러서 HTTPS로 리다이렉션이 되게끔 설정해줬다.

Route53 호스팅 영역, 레코드

Route53으로 이동해 호스팅 영역에서 레코드를 살펴 보니 배포에 성공한 케이스에서는 A유형이 2개라는 걸 캐치했다.

  1. www.도메인이름.link
  2. 도메인이름.link

레코드 생성을 할 때 1번과 2번 둘 다 해줘야 하는데 나는 1번밖에 안 했었다.
Route53 설정하기를 보면서 다시 레코드를 추가해줬다.

HTTPS 자동 배포

세 번의 변경을 통해 다시 한 번 EC2 생성부터 배포까지 플로우를 그려볼 수 있었고, 배포에 성공하였다!

profile
할 수 있다는 생각이 정말 나를 할 수 있게 만들어준다.
post-custom-banner

2개의 댓글

comment-user-thumbnail
2021년 11월 1일

으악 https

1개의 답글