このページは、ボールトと 2012 年リリース当時の REST API を使用する、Amazon Glacier サービスの既存のお客様のみを対象としています。
アーカイブストレージソリューションをお探しの場合は、Amazon S3 の Amazon Glacier ストレージクラス (S3 Glacier Instant Retrieval、S3 Glacier Flexible Retrieval、S3 Glacier Deep Archive) を使用することをお勧めします。これらのストレージオプションの詳細については、「Amazon Glacier ストレージクラス
Amazon Glacier (元のスタンドアロンボールトベースのサービス) は、新規顧客を受け入れなくなりました。Amazon Glacier は、ボールトにデータを保存する独自の API を備えたスタンドアロンサービスであり、Amazon S3 および Amazon S3 Glacier ストレージクラスとは異なります。既存のデータは Amazon Glacier で無期限に安全性が確保され、引き続きアクセス可能です。移行は必要ありません。低コストの長期アーカイブストレージの場合、 は Amazon S3 Glacier ストレージクラス
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 Glacier へのアクセス」を参照してください。
この例を実行するための詳しい手順については、「Eclipse を使用した Amazon 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 を使用してアーカイブをアップロードするステップを説明します。
-
AmazonGlacierClientクラスのインスタンス(クライアント)を作成します。アーカイブのアップロード先となる AWS リージョンを指定する必要があります。このクライアントを使用して実行するすべてのオペレーションは、そのAWSリージョンに適用されます。
-
UploadArchiveRequestクラスのインスタンスを作成することにより、リクエスト情報を指定します。アップロードするデータのほかにも、ペイロードのチェックサム (SHA-256 木構造ハッシュ)、ボールト名、データのコンテンツの長さ、およびアカウント ID を指定する必要があります。
アカウント ID を指定しなかった場合には、リクエストに署名する際に使用した認証情報に関連付けられているアカウント ID が使用されます。詳細については、「Amazon Glacier でのAWS SDK for Java の使用」を参照してください。
-
リクエストオブジェクトをパラメータとして指定して、
uploadArchiveメソッドを実行します。レスポンスでは、Amazon Glacier (Amazon 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 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); } } }