AWS S3 + CloudFront

GreenBean·2022년 9월 2일
0
post-thumbnail

AWS S3 + CloudFront

AWS CloudFront와 S3 연동 방법 알아보기
[Redmine on AWS] S3/CloudFront 연동

구조

  • S3는 웹 스토리지이고 CloudFront는 글로벌 컨텐츠 전송 네트워크 (CDN)
    • S3는 높은 신뢰성과 안정성을 제공하고 CloudFront는 전세계 어디서나 빠른 속도로 접속 할 수 있도록 해줌
    • 두 서비스를 함께 사용하는 것은 여러가지 측면에서 환상의 조합으로 다양한 장점을 얻을 수 있음

  • Private Content 전달 방법도 S3와 CloudFront의 역할을 분리해서 원하는 목표를 달성하고 있음
    • 데이터는 S3에 저장하고 그 데이터에 접속하는 권한은 CloudFront에게 할당하며 CloudFront는 URL 또는 쿠키에 달려있는 signature를 확인 후 데이터의 접근 여부를 결정하는 방식

Tip! 추가 내용

  • AWS S3를 Origin으로 사용하는 CloudFront 배포를 만드는 경우가 있음
    • 예를 들면 S3에 저장된 파일들을 CDN으로 배포하려는 경우
    • S3에서 정적 웹호스팅 기능을 사용하면서 SSL을 적용하기 위해서 CloudFront를 이용하는 경우
  • 위의 두 경우 모두 S3 Bucket에 저장한 파일을 Public Internet에 제공하기 위한 것이기 때문에 S3 Bucket의 정책을 퍼블릭하게 설정하게 됨
    • 하지만 CloudFront를 이용해서 S3 Bucket의 파일들을 Public Internet에 공개한다면 Bucket의 정책을 퍼블릭하게 설정하지 않고 CloudFront 배포에서만 접근하도록 설정 가능
  • 방법은 아주 간단
    • S3 Bucket 정책의 Pricipal에 허용하려는 CloudFront 배포의 Origin Access Identity (OAI) 를 명세하는 것

작업 내용

  • S3에 컨텐츠가 있어야 하고 S3에서 컨텐츠 접근 권한을 모두 제거
    • Public으로 해두면 아무나 접근 가능
  • S3는 CloudFront에서 Origin으로 표시되고 Origin 탭에서 설정 변경이 가능한데, 여기에서 Restrict Bucket AccessYes로 선택해서 접근을 제한
    • S3에서도 접근 권한을 설정해주고 CloudFront에서도 해줘야 함
    • Your Identities 항목이 중요한데, 이 항목은 생성한 Cloudfront Distribution이 연결된 S3에 접근하는 계정에 대한 설정
      • S3의 Bucket 설정에서도 반드시 권한을 추가해 줘야 Access Denied 에러가 나지 않음
      • 권한을 추가할 때는 Canonical User ID 가 필요한데 Origin Access Identity 메뉴로 진입하면 계정별 ID를 확인 할 수 있음
      • 버킷 정책 업데이트 부분은 자동 업데이트로 설정해두는 것을 권장
profile
🌱 Backend-Dev | hwaya2828@gmail.com

0개의 댓글