본문 바로가기

STUDY/Spring

Spring Boot | S3 Pre-Signed URL 생성

📌S3 연동

 

Spring Boot | S3 파일 업로드

1. gradle 설정 프로젝트 생성 후 AWS 의존성을 추가 dependencies { implementation 'org.springframework.boot:spring-boot-starter-thymeleaf' implementation 'org.springframework.boot:spring-boot-starter-..

gaemi606.tistory.com


Pre-SignedURL?

S3 버킷에 업로드된 컨텐츠는 기본적으로 비공개인데, 미리 서명된 URL을 사용하게 되면 설정해둔 시간동안 URL을 통해 모두 접근이 가능하도록 할 수 있다. 

✔️fileName은 key와 동일

✔️expire는 2분으로 설정해 두었음 밀리세컨단위임

✔️amazonS3Client는 yaml설정값으로 자동으로 연결됨 위에 링크 참고

    private String getPreSignedURL(File uploadFile, String dirName) {
        String preSignedURL = "";
        String fileName = dirName + "/" + uploadFile.getName();

        Date expiration = new Date();
        long expTimeMillis = expiration.getTime();
        expTimeMillis += 1000 * 60 * 2;
        expiration.setTime(expTimeMillis);
        
        log.info(expiration.toString());
        
        try {

            GeneratePresignedUrlRequest generatePresignedUrlRequest =
                    new GeneratePresignedUrlRequest(bucket, fileName)
                            .withMethod(HttpMethod.GET)
                            .withExpiration(expiration);
            URL url = amazonS3Client.generatePresignedUrl(generatePresignedUrlRequest);
            preSignedURL = url.toString();
            log.info("Pre-Signed URL : " + url.toString());
            
        } catch (Exception e) {
            e.printStackTrace();
        }

        return preSignedURL;
    }

 

 

Java용 AWS SDK를 사용하여 미리 서명된 객체 URL 생성 - Amazon Simple Storage Service

다음 예제에서는 S3 버킷에서 객체를 검색할 수 있도록 다른 사용자에게 제공할 미리 서명된 URL을 생성합니다. 자세한 내용은 다른 사용자와 객체 공유 단원을 참조하십시오. 실제 예제를 작성

docs.aws.amazon.com