S3 버킷 + cloudfront

2024. 5. 29. 15:39
728x90

S3 버킷 생성 후 버킷에 대한 접근성 설정 > cloudfront로 제한을 두어 S3 버킷에 직접 접근하지 못하도록 한다.

 

1. S3 버킷 생성
- 버킷 생성 (기본값으로 생성하였다)

 

2. cloudfront 퍼블릭 키 생성 

- 터미널에서  키 생성 

openssl genrsa -out private_key.pem 2048
openssl rsa -in private_key.pem -pubout -out public_key.pem

 

- 터미널에서 키 생성 후 public key.pem을 열어 확인 후 복사

- cloudfront 퍼블릭 키 생성 (key 그대로 붙여넣기)

 

3. 해당 키를 관리하는 키 그룹 생성

: 여기서 내가 만든 키를 선택해주고 생성한다. 

 

4. 배포 생성

- 원래 도메인 (origin domain) 설정 : 접근하려고 하는 S3 버킷 선택 

- 이름 : 알아서 설정

- 원본 액세스 : 원본 액세스 제어 설정 (액세스를 제한하여 OAC를 따른다) > 이후 S3 버킷 정책을 업데이트해야 한다. 

- 뷰어 프로토콜 정책 : Redirect HTTP to HTTPS (HTTP로 접속시 HTTPS로 리다이렉트 한다)

- 뷰어 액세스 제한 : 제한을 하여 서명된 signed url을 통해 접근할 수 있도록 한다. > 여기서 아까 만든 키 그룹을 선택하면 된다. 이 키 그룹의 키들로 접근 가능한지 인증을 하는 것! 

> 이렇게 배포를 생성하면 된다. 

이후에 바로 cloutfront 정책 설명을 복사하여 S3 정책에 붙여넣기

 

5. 배포의 동작 설정

- 경로 패턴 : S3 버킷 내부의 폴더 이름으로 설정해주면 된다.

ex. /images/* (이미지 폴더 내의 모든 객체)

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

- 뷰어 액세스 제한 : 아까와 같이 key group을 골라주면 된다. >> 이렇게 하면 signed url을 가지고 있는 사람만 접근이 가능하고, 
만약 뷰어 액세스 제한을 No로 설정하면 cloudfront url로 접근하는 모든 사용자가 접근 가능하게 된다. (public의 의미!) 

 

6. 실제 사용시 yaml 파일 설정

- cloudfront 에서 publicKeyId 설정 (배포 ID를 넣어준다)

- domain : 배포 도메인 이름을 넣어준다.

- privateKeyFullPath : 해당 프로젝트 내의 private pem key의 절대경로를 설정해준다.

 

** signed url을 설정하는 로직은 다음에 다시 정리할 예정이다. 

728x90

BELATED ARTICLES

more