클라우드/AWS

[AWS] S3, CloudFront, Route53 연동하기

코딩하는 도람쥐 2024. 11. 14. 21:15
728x90
반응형

 

오늘은 제 멀티클라우드 프로젝트의 AWS 앞 부분을 구현해보겠습니다. 

 

제 프로젝트의 웹사이트는 주로 HTML, CSS, 및 JavaScript 파일로 구성되어, 동적인 처리가 필요하지 않으므로 정적 웹 호스팅을 하는 것이 서버 관리와 비용에 효율적입니다. 

이 부분 !

 

< 정적 웹 호스팅 >

  • 정적 파일을 호스팅할 웹 서버 → S3
  • 도메인 이름을 호스팅 서버의 IP 주소와 연결 → Route53
  • HTTPS를 통해 사이트를 보호하고, 사용자와의 통신을 암호화 → ACM + CloudFront
  • 사용자가 사이트에 접속할 수 있는 URL을 제공하기 위해 도메인 이름이 필요 → Route53

 

<사전 준비물>

  • aws 계정 
  • 가비아 도메인 구매
  • S3 버킷
  • aws route 53 호스팅
  • acm 
  • cloudfront 생성 

 

↓↓↓ACM 발급, Route53 호스팅, 가비아 설정 참고 ↓↓↓

 

https://doyeon-charm.tistory.com/16

 

[aws] - ACM, ROUTE 53, HTTPS

route53과 ACM인증서를 LB앞에 탑재하여 https를 통해 도메인을 사용할 수 있도록 하겠습니다.  ACM이란? AWS Certificate Manager의 줄임말로 SSL/TLS 인증서를 관리하고 사용할 수 있도록 돕는 서비스로보

doyeon-charm.tistory.com

 

준비가 되었으면, 시작해보겠습니다.


< 사전 지식> 

✔ CloudFront

AWS CloudFront는 AWS에서 제공하는 CDN 서비스로서, 정적 및 동적 컨텐츠를 사용자에게 더 빨리 배포할 수 있도록 지원하는 서비스입니다. 

 

CloudFront는 edge location라는 전 세계의 네트워크를 통해 컨텐츠를 제공합니다.

AWS 백본 네트워크를 통해 Edge location을 이용하여 컨텐츠를 효과적으로 서비스합니다.

사용자 요청→지연 시간이 가장 낮은 엣지 로케이션으로 요청을 라우팅합니다.

 

✔ S3

객체 스토리지 서비스 

 

- 대량의 트래픽 처리

- S3와 CloudFront를 함께 사용하면, S3에서 직접 데이터를 제공하는 대신 CloudFront가 자주 요청되는 파일을 캐싱하여, S3의 데이터 전송량과 요청 횟수를 줄여줌 → 비용 절감

- 사용한 만큼만 비용을 지불. 데이터를 저장한 용량, 요청 횟수, 데이터 전송량에 따라 비용이 결정

- 데이터의 양이 증가하면 S3가 자동으로 용량을 확장


Route53

확장 가능한 고가용성의 DNS 웹 서비스입니다.

사용자 요청을 AWS 또는 온프레미스에서 실행되는 인터넷 애플리케이션에 연결하는 역할을 합니다.

 

  • 도메인에 대한 DNS 레코드를 생성하고 관리합니다.
    • 레코드 : 특정 도메인을 관리하는 항목
    • A 레코드: 고정된 ip 주소에 도메인을 매핑한 것
    • cname: 도메인 주소에 또 다른 도메인 주소를 매핑한 것
  • 로드밸런싱 기능 ⇒ 여러 대의 서버에 트래픽을 분산 ⇒ 웹 어플리케이션의 성능을 최적화합니다.
  • 자동화된 헬스 체크 : 서버가 다운되거나 장애가 발생하면 Route 53는 자동으로 트래픽을 정상적인 서버로 리다이렉트하여 가용성을 높입니다.
  • Route 53은 다양한 라우팅 정책을 제공하여 트래픽을 효율적으로 관리하고, 사용자에게 최적의 경로로 연결될 수 있도록 합니다.

 ACM

ACM(AWS Certificate Manager)은 CloudFront 배포에 연결됩니다. 이를 통해 CloudFront를 통해 제공되는 콘텐츠가 HTTPS를 통해 안전하게 전달됩니다.

 

SSL/TLS 인증서의 발급, 배포, 갱신을 자동으로 처리 → 매년 갱신할 필요 x

비용 효율적으로 HTTPS 구현 가능(무료)

비공개 키에 접근할 필요가 없기 때문에, 키 관리의 복잡성을 줄이고 보안을 강화


 

- 도메인 등록, ACM 발급. 

 

1. S3 버킷 준비. 

※버킷 생성 시 ACL 비활성화 체크 

 

- 내가 배포할 도메인 선택(S3 버킷)

 

- S3 버킷 정책 업데이트 

 

> Static website hosting에서 Edit 선택 

 

- 정적 웹 사이트 호스팅 : 활성화 

- 호스팅 유형 : 정적 웹 사이트 호스팅 

- 인덱스 문서 : login.html

- 오류 문서 : error.html

 

버킷 호스팅 링크가 생성됨.

 버킷 호스팅 링크로 접속이 잘 되는 것 확인. 


2. cloudfront 배포하기

- 기존 S3 버킷에 Cloudfront를 추가 

 

기존 S3버킷을 프론트로 설정하였지만, 아직 외부에서 접근할 수 없는 상태이므로

Route 53과 ACM을 사용하여 CloudFront를 통해 적절한 도메인 주소로 접근할 수 있도록 설정

 

 CloudFront 배포 생성

 

버킷 호스팅 주소를 원본 도메인에 붙여넣기

S3 버킷을 선택하고 'Use website endpoint'를 선택

 

 

- 뷰어 프로토콜 정책 : Redirect HTTP to HTTPS 체크  

- Legacy cache settings 체크

- 객체 캐싱 : Customize 체크 > 기본 TTL 0 

- 도체 도메인 이름(CNAME) : 항목추가 > S3 버킷 이름 복사 붙여넣기 

- 사용자 정의 SSL 인증서 : 사전에 만든 퍼블릭 인증서 선택 

 

생성완료

 


Route53 레코드 생성

 

1) 레코드 생성 정보 입력 

위에서 생성한 Cloudfront 선택 

 

2)

 

생성한 레코드 주소

www.docharm.store 로 접속하여 웹페이지가 정상적으로 나오는 것을 확인

 

 

 

3) 사전 준비된 ACM 

4) 인증서에서 Route 53 레코드 생성 

 

↓↓↓ACM 발급, Route53 호스팅, 가비아 설정 참고 ↓↓↓

 

https://doyeon-charm.tistory.com/16

 

[aws] - ACM, ROUTE 53, HTTPS

route53과 ACM인증서를 LB앞에 탑재하여 https를 통해 도메인을 사용할 수 있도록 하겠습니다.  ACM이란? AWS Certificate Manager의 줄임말로 SSL/TLS 인증서를 관리하고 사용할 수 있도록 돕는 서비스로보

doyeon-charm.tistory.com

 


✔ 추가 설정 

 

S3 > 버킷 > 권한 > 버킷 정책 

 

{
    "Version": "2012-10-17",
    "Id": "Policy1546336529826",
    "Statement": [
        {
            "Sid": "Stmt1546336528005",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "S3버킷명/*"
        }
    ]
}

 

 

728x90
반응형