브라우저에서 S3버킷에 있는 파일을 받아오려면 크게 두가지 방법이 있다.

signed url

  • aws-sdk S3 사용
  • s3.getSignedUrl('getObject', params);
  • s3버킷이름, path를 지정해서 download받을수있는 signed url을 제공받는 방식

Cloud Front

  1. AWS console에서 Cloud Front 설정을 해준다.
    route53 cloudfront 목적지
    cloudfront.test a1b2c3d4.cloudfront.net S3-mybuket
    위와 같이 설정하면 cloudfront CDN기능을 사용할수있게 된다.
  2. 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​
  3. aws-sdk CloudFront를 사용해서 signer를 생성한다.
    ex) const signer = new CloudFront.Signer(key_pair_id, private_key);
    private_key는 비대칭키 한쌍을 만들 때 생성된 private key이다.
  4. 정책을 작성한다.
    Statement: [
                {
                    Resource: 'https://cloudfront.test/' + path,
                    Condition: {
                        DateLessThan: {
                            'AWS:EpochTime': expires
                        }
                    }
                }
    ]​
    path는 S3버킷 내의 파일 경로이고
    expires는 유효 시간이다.
  5. signer를 이용해서 쿠키를 발행해서 프론트엔드로 넘겨준다.
    signer.getSignedCookie(정책);
  6. 개발자도구 - Application - Cookie를 확인해보면
    쿠키가 생긴것을 확인할수있다.
  7. 이제 해당 쿠키로 Cloud Front에 접근할 수 있다.

 

'Amazon AWS' 카테고리의 다른 글

[dynamoDB] Indexing  (1) 2021.08.25
[AWS 개발환경]  (1) 2021.08.25
[IAM]  (0) 2021.07.07

+ Recent posts