본문 바로가기

개발이야기/AWS

elasticbeanstalk + route53 으로 SSL(443) 접속 flask application 생성하는 가장 간단한 방법

elasticbeanstalk와 route53을 통해 443이나 SSL 설정을 하지 않은 Flask application을 route53을 통해 접속할 수 있도록 설정 할 수 있습니다.

준비물

- AWS 계정
- route53으로 등록된 DNS 1개

1. ACM 인증서 등록

ACM(AWS Certificate Manage)을 통해 aws에서 무료 ssl 인증서를 등록할 수 있습니다.

인증서 요청을 눌러 특정 도메인에 인증서를 발급받기를 시작합니다
신규 amazon 공인 인증서를 발급 요청합니다
기존에 가지고 있던 도메인에 subdomain을 붙여 요청합니다
이미 route53을 통해 도메인이 등록되어 있다면 DNS검증으로 편리하게 인증서 등록이 가능합니다
확인 및 요청 클릭
route53에 CNAME을 추가하여 자동검증되도록 진행합니다
모두 완료되게 되면 30분안에 검증이 완료되게 됩니다.(그전에는 검증 보류 상태)
검증이 완료되었습니다

2. elasticbeanstalk 설정

443 ssl 설정을 하지않은 flask에 ssl을 연동하기 위해서는 아래와 같은 형태로 작업할 수 있습니다. 굳이 application에 ssl을 붙이는 힘든 과정이 없더라도 load balancing 앞단에서 443을 받도록 하는 것입니다.

80만 지원하는 application에 443 ssl 호출 받기 in elasticbeanstalk

이제 아래와 같이 elasticbeanstalk 설정을 수행합니다

elastic beanstalk의 새환경 생성
flask 웹서버 환경을 생성합니다
사용하고자 하는 애플리케이션 이름을 작성합니다
관리형 플랫폼으로서 Python을 선택합니다
샘플 애플리케이션을 사용해도되고, 기존 Flask 애플리케이션이 있다면 코드를 업로드하셔도 됩니다. 추가 옵션 구성을 클릭합니다
고가용성을 클릭하면 ELB(로드밸런서)를 설정할 수 있습니다.
443 리스너 추가를 위해 로드밸런서를 편집합니다
리스너를 추가하도록 합니다
443 port의 https 프로토콜을 추가하고 아까 ACM에서 만든 ssl인증서를 등록, ssl정책도 등록합니다
저장을 눌러 로드밸런서 변경사항을 저장합니다
모든 준비가 완료되었습니다 환경 생성을 눌러 줍니다

3. route53 A record 설정

elasticbeanstalk에서 등록된 elb ip와 연동하기 위해 아까 인증서로 만들었던 도메인과 연결시키도록 합니다.

elastic beanstalk의 url을 A record로 등록합니다.
https 경로로 정상접속됨을 확인할 수 있습니다