Amazon Glacier でのAWS SDK for Java の使用 - Amazon Glacier

このページは、ボールトと 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 (元のスタンドアロンのボールトベースのサービス) は、2025 年 12 月 15 日以降、新規のお客様を受け入れなくなります。既存のお客様に影響はありません。Amazon Glacier は、ボールトにデータを保存する独自の API を備えたスタンドアロンサービスであり、Amazon S3 および Amazon S3 Glacier ストレージクラスとは異なります。既存のデータは Amazon Glacier で無期限に安全性が確保され、引き続きアクセス可能です。移行は必要ありません。低コストの長期アーカイブストレージをお探しの場合、AWS は Amazon S3 Glacier ストレージクラスを推奨します。このストレージクラスは、コストを抑えながら、S3 バケットベースの API、AWS リージョン全体での可用性、AWS サービス統合により、優れたカスタマーエクスペリエンスを提供します。拡張機能が必要な場合は、Amazon Glacier ボールトから Amazon S3 Glacier ストレージクラスにデータを転送するための AWS ソリューションガイダンスを使用して、Amazon S3 Glacier ストレージクラスへの移行を検討してください。

Amazon Glacier でのAWS SDK for Java の使用

Amazon Glacier での AWS SDK の使用」で説明したように、AWS SDK for Java には Amazon Glacier (Amazon Glacier) 用の高レベル API と低レベル API があります。AWS SDK for Java のダウンロードの詳細については、「Amazon SDK for Java」を参照してください。

注記

AWS SDK for Java は、Amazon Glacier にアクセスするためのスレッドセーフのクライアントを提供します。最善の方法としては、ご利用のアプリケーションでクライアントを 1 つ作成し、そのクライアントをスレッド間で再利用することです。

低レベル API の使用

低レベルの AmazonGlacierClient クラスには、Amazon Glacier の基盤となる REST オペレーションに対応するメソッドがすべて用意されています (Amazon Glacier の API リファレンス)。これらのメソッドを呼び出すときには、対応するリクエストオブジェクトを作成するとともに、そのメソッドがオペレーションに Amazon Glacier のレスポンスを返すためのレスポンスオブジェクトを指定する必要があります。

たとえば、AmazonGlacierClient クラスには、ボールト作成のための createVault メソッドがあります。このメソッドは、ボールトの作成 REST オペレーションに対応するものです (「ボールトの作成 (PUT vault)」を参照してください)。このメソッドを使用するには、以下の Java コードスニペットに示すように、Amazon Glacier レスポンスを受け取る CreateVaultResult オブジェクトのインスタンスを作成する必要があります。

AmazonGlacierClient client = new AmazonGlacierClient(credentials); client.setEndpoint("https://glacier.us-west-2.amazonaws.com/"); CreateVaultRequest request = new CreateVaultRequest() .withAccountId("-") .withVaultName(vaultName); CreateVaultResult result = client.createVault(createVaultRequest);

このガイドの低レベル API の例では、すべてこのパターンを使用しています。

注記

ここに挙げたコードスニペットでは、リクエストの作成時に AccountID を指定しています。ただし、AWS SDK for Java を使用する場合であれば、リクエストに AccountId を含めるかどうかは任意であるため、このガイドの低レベル API の例では、この値を設定していません。-AccountIdはAWS アカウントID。この値はリクエストの署名に使用した認証情報に関連する AWS アカウント ID と一致する必要があります。AWS アカウント ID、または Amazon Glacier がリクエストの署名に使用した認証情報に関連する AWS アカウント ID を使用している場合はオプションで「-」のどちらかを指定できます。お客様のアカウント ID を指定する場合は、ハイフンを含めないでください。AWS SDK for Java を使用する場合に、アカウント ID を指定しなかったときは、ライブラリによってアカウント ID が「-」に設定されます。

高レベル API の使用

AWS SDK for Java では、アプリケーションの開発をさらに簡素化するため、低レベル API の一部のメソッドの抽象化のレベルを高めた ArchiveTransferManager クラスが用意されています。このクラスには、uploaddownload など、アーカイブオペレーションのための便利なメソッドがあります。

たとえば、以下の Java コードスニペットでは、アーカイブのアップロードに upload 高レベルメソッドを使用しています。

String vaultName = "examplevault"; String archiveToUpload = "c:/folder/exampleArchive.zip"; ArchiveTransferManager atm = new ArchiveTransferManager(client, credentials); String archiveId = atm.upload(vaultName, "Tax 2012 documents", new File(archiveToUpload)).getArchiveId();

実行したオペレーションはいずれも、ArchiveTransferManager オブジェクトの作成時に指定したAWSリージョンに適用される点に注意してください。AWSリージョンを指定しなかった場合は、AWS SDK for Java によって us-east-1 がデフォルトのAWSリージョンに設定されます。

このガイドの高レベル API の例では、すべてこのパターンを使用しています。

注記

高レベルの ArchiveTransferManager クラスは、AmazonGlacierClient インスタンスまたは AWSCredentials インスタンスを使用して構築できます。

Eclipse を使用した Amazon Glacier の Java 実行例

Java コード例の使用を最も手早く開始する方法は、最新の AWS Toolkit for Eclipse をインストールすることです。最新ツールキットのインストールと更新については、http:///eclipse を参照してください。以下のタスクは、このセクションに示した Java コード例を作成およびテストする手順を示しています。

Java コード例作成の一般的な手順

1

AWS のAWS SDK for Java トピック「Providing AWSCredentials in the SDK for Java」で説明しているように、認証情報のデフォルト 認証情報プロファイルを作成します。

2

Eclipse で新しい AWS Java プロジェクトを作成します。プロジェクトは AWS SDK for Java 用にあらかじめ設定されています。

3

任意のセクションからプロジェクトにコードをコピーします。

4

必要なデータを指定してコードを修正します。たとえばファイルをアップロードする場合は、ファイルのパスとバケットの名前を指定します。

5

コードを実行します。AWS マネジメントコンソール を使用して、オブジェクトが作成されることを確認します。AWS マネジメントコンソール の詳細については、http://aws.amazon.com/console/ を参照してください。

エンドポイントの設定

デフォルトで、AWS SDK for Java はエンドポイント https://glacier.us-east-1.amazonaws.com を使用しています。以下の Java コードスニペットに示すように、エンドポイントは明示的に設定できます。

以下のスニペットには、低レベル API で 米国西部(オレゴン リージョン (us-west-2) にエンドポイントを設定する方法を示しています。

client = new AmazonGlacierClient(credentials); client.setEndpoint("glacier.us-west-2.amazonaws.com");

以下のスニペットには、高レベル API で 米国西部(オレゴン) リージョンにエンドポイントを設定する方法を示しています。

glacierClient = new AmazonGlacierClient(credentials); sqsClient = new AmazonSQSClient(credentials); snsClient = new AmazonSNSClient(credentials); glacierClient.setEndpoint("glacier.us-west-2.amazonaws.com"); sqsClient.setEndpoint("sqs.us-west-2.amazonaws.com"); snsClient.setEndpoint("sns.us-west-2.amazonaws.com"); ArchiveTransferManager atm = new ArchiveTransferManager(glacierClient, sqsClient, snsClient);

サポートされているAWSリージョンとエンドポイントのリストについては、「Amazon Glacier へのアクセス」を参照してください。