브라우저에서 S3버킷에 있는 파일을 받아오려면 크게 두가지 방법이 있다.
signed url
- aws-sdk S3 사용
- s3.getSignedUrl('getObject', params);
- s3버킷이름, path를 지정해서 download받을수있는 signed url을 제공받는 방식
Cloud Front
- AWS console에서 Cloud Front 설정을 해준다.
route53 cloudfront 목적지 cloudfront.test a1b2c3d4.cloudfront.net S3-mybuket - S3 버킷은 아무 브라우저에서나 접근할 수 없게 해야하기 때문에 쿠키를 만들어 넘겨줘야한다.
- 비대칭키 한 쌍을 만든다.
-----BEGIN RSA PRIVATE KEY----- 1289uQWh9128HQhu912..... -----END RSA PRIVATE KEY----- -----BEGIN RSA PUBLIC KEY----- 6HA1Z5911289uQWh9122..... -----END RSA PUBLIC KEY-----
- AWS console S3 - keys에 접속한다.
- public key를 import 한다. 그럼 key-pair-id가 생성된다.
A2BCH5S0WXGYFE
- 비대칭키 한 쌍을 만든다.
- aws-sdk CloudFront를 사용해서 signer를 생성한다.
ex) const signer = new CloudFront.Signer(key_pair_id, private_key);
private_key는 비대칭키 한쌍을 만들 때 생성된 private key이다. - 정책을 작성한다.
path는 S3버킷 내의 파일 경로이고Statement: [ { Resource: 'https://cloudfront.test/' + path, Condition: { DateLessThan: { 'AWS:EpochTime': expires } } } ]
expires는 유효 시간이다. - signer를 이용해서 쿠키를 발행해서 프론트엔드로 넘겨준다.
signer.getSignedCookie(정책); - 개발자도구 - Application - Cookie를 확인해보면
쿠키가 생긴것을 확인할수있다. - 이제 해당 쿠키로 Cloud Front에 접근할 수 있다.
'Amazon AWS' 카테고리의 다른 글
[dynamoDB] Indexing (1) | 2021.08.25 |
---|---|
[AWS 개발환경] (1) | 2021.08.25 |
[IAM] (0) | 2021.07.07 |