메뉴
Amazon Simple Storage Service
개발자 안내서 (API Version 2006-03-01)

AWS SDK for Java를 사용하여 미리 서명된 객체 URL 생성

다음 작업은 Java 클래스를 사용하여 미리 서명된 URL을 만드는 방법을 보여줍니다.

객체 다운로드

1

AmazonS3 클래스의 인스턴스를 만듭니다. 자격 증명 제공에 대한 자세한 내용은 AWS SDK for Java 사용 단원을 참조하십시오. 이러한 자격 증명은 미리 서명된 URL 생성 시 인증 서명을 만드는 데 사용됩니다.

2

AmazonS3.generatePresignedUrl 메서드를 실행하여 미리 서명된 URL을 만듭니다.

버킷 이름, 객체 키 및 만료일 등의 정보를 제공하여 GeneratePresignedUrlRequest 클래스의 인스턴스를 만듭니다. 요청은 기본적으로 GET 작업을 수행하도록 설정됩니다. 미리 서명된 URL에서 PUT 등, 다른 작업을 수행하게 하려면 요청을 만들 때 verb에 원하는 작업의 값을 지정해야 합니다.

다음은 위에서 설명한 작업을 실행하는 Java 코드 샘플입니다.

Copy
AmazonS3 s3Client = new AmazonS3Client(new ProfileCredentialsProvider()); java.util.Date expiration = new java.util.Date(); long msec = expiration.getTime(); msec += 1000 * 60 * 60; // 1 hour. expiration.setTime(msec); GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(bucketName, objectKey); generatePresignedUrlRequest.setMethod(HttpMethod.GET); // Default. generatePresignedUrlRequest.setExpiration(expiration); URL s = s3client.generatePresignedUrl(generatePresignedUrlRequest);

다음 Java 코드 예제는 객체를 검색할 수 있도록 다른 사용자에게 제공할 미리 서명된 URL을 생성합니다. 생성된 미리 서명된 URL을 사용하여 객체를 검색할 수 있습니다. 미리 서명된 URL에서 PUT 등, 다른 작업을 수행하게 하려면 GetPreSignedUrlRequestverb에 원하는 작업의 값을 지정해야 합니다. 실제 예제를 작성하여 테스트하는 방법에 대한 자세한 내용은 Java 코드 예제 테스트를 참조하십시오.

Copy
import java.io.IOException; import java.net.URL; import com.amazonaws.AmazonClientException; import com.amazonaws.AmazonServiceException; import com.amazonaws.HttpMethod; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3Client; import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest; public class GeneratePreSignedUrl { private static String bucketName = "*** Provide a bucket name ***"; private static String objectKey = "*** Provide an object key ***"; public static void main(String[] args) throws IOException { AmazonS3 s3client = new AmazonS3Client(new ProfileCredentialsProvider()); try { System.out.println("Generating pre-signed URL."); java.util.Date expiration = new java.util.Date(); long milliSeconds = expiration.getTime(); milliSeconds += 1000 * 60 * 60; // Add 1 hour. expiration.setTime(milliSeconds); GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(bucketName, objectKey); generatePresignedUrlRequest.setMethod(HttpMethod.GET); generatePresignedUrlRequest.setExpiration(expiration); URL url = s3client.generatePresignedUrl(generatePresignedUrlRequest); System.out.println("Pre-Signed URL = " + url.toString()); } catch (AmazonServiceException exception) { System.out.println("Caught an AmazonServiceException, " + "which means your request made it " + "to Amazon S3, but was rejected with an error response " + "for some reason."); System.out.println("Error Message: " + exception.getMessage()); System.out.println("HTTP Code: " + exception.getStatusCode()); System.out.println("AWS Error Code:" + exception.getErrorCode()); System.out.println("Error Type: " + exception.getErrorType()); System.out.println("Request ID: " + exception.getRequestId()); } catch (AmazonClientException ace) { System.out.println("Caught an AmazonClientException, " + "which means the client encountered " + "an internal error while trying to communicate" + " with S3, " + "such as not being able to access the network."); System.out.println("Error Message: " + ace.getMessage()); } } }