메뉴 닫기

Amazon CloudFront을 활용한 Streamlit 80/443포트 사용 방법

Streamlit 80/443포트 사용 방법 2부-CloudFront

 

이전 글에서는 AWS Application Load Balancer(ALB)와 Route 53을 활용하여 Streamlit 앱을 80/443 포트에서 실행하는 방법을 설명했습니다.

이번 글에서는 CloudFront를 활용하여 Streamlit을 80/443 포트에서 실행하는 방법을 소개드리겠습니다.

AWS CloudFront를 사용하면 전 세계 사용자에게 더 빠르고 안전한 서비스 제공이 가능하며, ALB 없이도 HTTPS(443)로만 통신할 수 있도록 설정할 수 있습니다.


1. AWS 인프라 개요

CloudFront를 활용하는 경우 전체적인 구조는 다음과 같습니다.

  • CloudFront: 전 세계 엣지 로케이션을 통해 빠르게 Streamlit 콘텐츠를 전달하며, HTTPS(443)으로만 접근할 수 있도록 제한 가능.
  • SSL/TLS 인증서: AWS Certificate Manager(ACM)에서 발급하여 CloudFront에 적용하여 HTTPS 트래픽을 지원.
  • EC2: Streamlit 애플리케이션이 실행되는 서버.

2. AWS CloudFront를 통해 Streamlit 앱을 443(HTTPS)으로만 접근하도록 설정하는 방법

1) Streamlit 앱 실행 환경 준비

EC2에서 Streamlit 앱을 실행합니다.

streamlit run app.py

2) CloudFront 배포 설정

      2-1. AWS CloudFront 콘솔로 이동 → “Create Distribution”

      2-2. Origin 설정

    • Origin domain: Streamlit이 실행되는 EC2 퍼블릭 DNS 입력
    • Protocol: HTTP only
    • HTTP port: 8501

   

 

 

 

 

 

 

 

     

 

 

2-3. Viewer Protocol Policy

    • Redirect HTTP to HTTPS

 

  • Cache Policy 설정
    • Cache Policy: UseOriginCacheControlHeaders(기본값)
    • Origin Request Policy: AllViewr(기본값)

    

 

 2-4. SSL/TLS 설정

  • AWS Certificate Manager(ACM)에서 발급받은 인증서를 적용

2-5. 배포 생성 후 도메인 확인

    • CloudFront 배포가 완료되면 CloudFront의 Domain Name을 확인 (예: d123abc.cloudfront.net)

 

3) Route 53에서 도메인 연결

  1. Route 53 콘솔로 이동 → “Hosted Zones” → 도메인 선택
  2. “Create Record” 클릭
    • Record Type: A
    • Alias: Yes
    • Alias Target: CloudFront Domain Name 선택
  3. Save 후 적용 완료

3. CloudFront를 통한 443 포트 사용

CloudFront 설정이 완료되면, 다음과 같은 방식으로 Streamlit을 HTTPS(443)으로만 접근하도록 설정할 수 있습니다.

  1. HTTP 요청 차단
    • CloudFront에서 “Redirect HTTP to HTTPS” 설정을 적용하면, HTTP 요청을 HTTPS로 자동 리디렉션합니다.
  2. 테스트
    • https://chatbot.a-cloud.info 접속하여 정상 작동 확인
    • http://chatbot.a-cloud.info 접속 시 HTTPS로 리디렉션되는지 확인


4. 결론

CloudFront를 사용하여 Streamlit 앱을 80/443 포트에서 실행하는 방법을 알아보았습니다. CloudFront를 사용하면 ALB 없이도 HTTPS(443) 트래픽만 허용할 수 있으며, 글로벌 엣지 네트워크를 활용하여 성능 향상이 가능합니다.

요약

  1. EC2에서 Streamlit 앱 실행 (포트 8501)
  2. CloudFront 배포 설정 (HTTPS만 허용, HTTP 리디렉션)
  3. Route 53에서 CloudFront 도메인 연결
  4. 테스트 및 배포 완료

CloudFront를 이용하면 서버 로드를 줄이고, 보안성을 높이며, HTTPS(443)로만 안전하게 통신할 수 있는 환경을 만들 수 있습니다.

감사합니다.