メニュー
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 を使用して、オブジェクトを取得できます。署名付き URL を、オブジェクトの PUT などの他のオペレーションで使用するには、GetPreSignedUrlRequest 内で明示的に verb を設定する必要があります。実際に動作するコードを作成、テストする方法については、「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()); } } }