AWS SDK for Java を使用して 1 回のオペレーションでアーカイブをアップロードする - Amazon S3 Glacier

このページは、ボールトと 2012 RESTAPI年のオリジナルを使用する S3 Glacier サービスの既存のお客様のみを対象としています。

アーカイブストレージソリューションをお探しの場合は、Amazon S3、S3 Glacier Instant Retrieval、S3 Glacier Flexible Retrieval、S3 Glacier Deep Archive の S3 Glacier ストレージクラスを使用することをお勧めします。これらのストレージオプションの詳細については、「Amazon S3 ユーザーガイド」の「S3 Glacier ストレージクラス」およびS3 Glacier ストレージクラスを使用した長期データストレージ」を参照してください。 Amazon S3 これらのストレージクラスは Amazon S3 を使用しAPI、すべてのリージョンで利用でき、Amazon S3 コンソール内で管理できます。Storage Cost Analysis、Storage Lens、高度なオプションの暗号化機能などを提供します。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS SDK for Java を使用して 1 回のオペレーションでアーカイブをアップロードする

両方高レベル API と低レベル APIAmazon SDK for Java で提供されており、アーカイブをアップロードする方法を提供します。

AWS SDK for Java の高レベル API を使用してアーカイブをアップロードする

高レベル API の ArchiveTransferManager クラスには、ボールトへのアーカイブのアップロードに使用できる upload メソッドが用意されています。

注記

upload メソッドを使用して、小さなアーカイブや大きなアーカイブをアップロードできます。このメソッドでは、アップロードするアーカイブのサイズに応じて、1 回のオペレーションでアップロードするか、マルチパートアップロード API を使用してアーカイブをパート単位でアップロードするかを決定します。

例: AWS SDK for Java の高レベル API を使用してアーカイブをアップロードする

次の Java コード例では、米国西部(オレゴン リージョン (us-west-2)のボールト (examplevault) にアーカイブをアップロードします。サポートされているAWSリージョンとエンドポイントのリストについては、「Amazon S3 Glacier へのアクセス」を参照してください。

この例を実行するための詳しい手順については、「Eclipse を使用した Amazon S3 Glacier の Java 実行例」を参照してください。ここに示したコードは、アップロードするボールトの名前とファイルの名前で更新する必要があります。

import java.io.File; import java.io.IOException; import java.util.Date; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.glacier.AmazonGlacierClient; import com.amazonaws.services.glacier.transfer.ArchiveTransferManager; import com.amazonaws.services.glacier.transfer.UploadResult; public class ArchiveUploadHighLevel { public static String vaultName = "*** provide vault name ***"; public static String archiveToUpload = "*** provide name of file to upload ***"; public static AmazonGlacierClient client; public static void main(String[] args) throws IOException { ProfileCredentialsProvider credentials = new ProfileCredentialsProvider(); client = new AmazonGlacierClient(credentials); client.setEndpoint("https://glacier.us-west-2.amazonaws.com/"); try { ArchiveTransferManager atm = new ArchiveTransferManager(client, credentials); UploadResult result = atm.upload(vaultName, "my archive " + (new Date()), new File(archiveToUpload)); System.out.println("Archive ID: " + result.getArchiveId()); } catch (Exception e) { System.err.println(e); } } }

AWS SDK for Java の低レベル API を使用して 1 回のオペレーションでアーカイブをアップロードする

低レベル API には、アーカイブに関するあらゆるオペレーションのメソッドが用意されています。以下では、AWS SDK for Java を使用してアーカイブをアップロードするステップを説明します。

  1. AmazonGlacierClient クラスのインスタンス(クライアント)を作成します。

    アーカイブのアップロード先となる AWS リージョンを指定する必要があります。このクライアントを使用して実行するすべてのオペレーションは、そのAWSリージョンに適用されます。

  2. UploadArchiveRequest クラスのインスタンスを作成することにより、リクエスト情報を指定します。

    アップロードするデータのほかにも、ペイロードのチェックサム (SHA-256 木構造ハッシュ)、ボールト名、データのコンテンツの長さ、およびアカウント ID を指定する必要があります。

    アカウント ID を指定しなかった場合には、リクエストに署名する際に使用した認証情報に関連付けられているアカウント ID が使用されます。詳細については、「Amazon S3 Glacier でのAWS SDK for Javaの使用」を参照してください。

  3. リクエストオブジェクトをパラメータとして指定して、uploadArchive メソッドを実行します。

    レスポンスでは、Amazon S3 Glacier (S3 Glacier) によって新しくアップロードされたアーカイブのアーカイブ ID が返されます。

以下の Java コードスニペットは、前述の手順を示しています。

AmazonGlacierClient client; UploadArchiveRequest request = new UploadArchiveRequest() .withVaultName("*** provide vault name ***") .withChecksum(checksum) .withBody(new ByteArrayInputStream(body)) .withContentLength((long)body.length); UploadArchiveResult uploadArchiveResult = client.uploadArchive(request); System.out.println("Location (includes ArchiveID): " + uploadArchiveResult.getLocation());

例: AWS SDK for Java の低レベル API を使用して 1 回のオペレーションでアーカイブをアップロードする

以下の Java コード例では、AWS SDK for Java を使用してボールト (examplevault) にアーカイブをアップロードします。この例を実行するための詳しい手順については、「Eclipse を使用した Amazon S3 Glacier の Java 実行例」を参照してください。ここに示したコードは、アップロードするボールトの名前とファイルの名前で更新する必要があります。

import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import com.amazonaws.auth.profile.ProfileCredentialsProvider; import com.amazonaws.services.glacier.AmazonGlacierClient; import com.amazonaws.services.glacier.TreeHashGenerator; import com.amazonaws.services.glacier.model.UploadArchiveRequest; import com.amazonaws.services.glacier.model.UploadArchiveResult; public class ArchiveUploadLowLevel { public static String vaultName = "*** provide vault name ****"; public static String archiveFilePath = "*** provide to file upload ****"; public static AmazonGlacierClient client; public static void main(String[] args) throws IOException { ProfileCredentialsProvider credentials = new ProfileCredentialsProvider(); client = new AmazonGlacierClient(credentials); client.setEndpoint("https://glacier.us-east-1.amazonaws.com/"); try { // First open file and read. File file = new File(archiveFilePath); InputStream is = new FileInputStream(file); byte[] body = new byte[(int) file.length()]; is.read(body); // Send request. UploadArchiveRequest request = new UploadArchiveRequest() .withVaultName(vaultName) .withChecksum(TreeHashGenerator.calculateTreeHash(new File(archiveFilePath))) .withBody(new ByteArrayInputStream(body)) .withContentLength((long)body.length); UploadArchiveResult uploadArchiveResult = client.uploadArchive(request); System.out.println("ArchiveID: " + uploadArchiveResult.getArchiveId()); } catch (Exception e) { System.err.println("Archive not uploaded."); System.err.println(e); } } }