가상 호스팅 방식
가상 호스팅 : 한 웹 서버에 있는 여러 웹 사이트에 서비스를 제공하는 기능
-
형식 (버킷이름이 도메인의 일부로 들어감)
https://bucket-name.s3.region-code.amazonaws.com/key-name
-
Pre-signed url
- 해당 API 를 호출한 서버의 자격증명으로 임시 서명한 URL 을 가져옴
- 퍼블릭 접근 권한을 열어두지 않더라도 S3 객체를 가져옴
- 브라우저에서 읽을 수 있는 파일 형태면 바로 읽어지고 읽을 수 없는 파일 형태는 다운로드함 (jpg 는 다운로드함)
- 만료 시간을 정할 수 있음 → 버킷을 퍼블릭으로 설정하면 만료시간 없음
// https://docs.aws.amazon.com/ko_kr/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrl-property // **Pre-signing a getObject operation (synchronously)** var params = {Bucket: 'bucket', Key: 'key'}; var url = s3.getSignedUrl('getObject', params); console.log('The URL is', url);
// 예시 public String getFileUrl(String bucketName, String key) { GetObjectRequest request = GetObjectRequest.builder() .bucket(bucketName) .key(key) .build(); GetObjectPresignRequest presignRequest = GetObjectPresignRequest.builder() .signatureDuration(Duration.ofMinutes(1)) .getObjectRequest(request).build(); URL url = s3Presigner.presignGetObject(presignRequest).url(); return url.toString(); }
-
버킷 설정
경로 방식
- 형식 (버킷이름이 resource path 일부로 들어감)
- 이후 중단될 서비스
Reference
https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/VirtualHosting.html https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html https://docs.aws.amazon.com/ko_kr/AWSJavaScriptSDK/latest/AWS/S3.html#getSignedUrl-property https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html#access-control-block-public-access-options