ページ

2012-08-27

人生に役立つかもしれないAmazon GlacierでVaultの操作についての知識

Amazon GlacierのJava APIを使用してVaultを操作する方法を紹介します。

私の作ったこのコマンドを使用すれば、すぐに操作可能なのですが、今回はソースコードレベルでの解説をしたいと思います。


ここでは
  1. Vaultの作成
  2. Vaultの詳細取得
  3. Vaultの一覧取得
  4. Vaultの削除
について紹介します。

説明に使うソースコードはAmazonが提供しているコードでも良かったのですが、再利用性も考慮して作りなおした私のコードを図々しくも使わせて頂きます。

今回関係あるのは以下の2つのコードです。
GlacierTools.javaにはAmazon Glacier共通の処理やパラメータ(リージョンのURL等)を記述しています。

VaultController.javaにはAmazon GlacierのVault操作に固有な処理が記述してあります。


ではコードの説明に移りたいと思います。

まずはVaultの作成からです。

1.Vaultの作成

AmazonGlacierClientをインスタンス化する

まずはAmazon Glacierを操作するためのクラスをインスタンス化します。

コードはGlacierTools.java
辺りです。
このコンストラクタ内で、リージョンの指定(endpoint)とAwsCredentials.properties(awsProperties)の指定も行なっています。

デフォルトのリージョンと.propertiesを使用する場合は上の引数無しのコンストラクタを、明示的に指定したい場合は下の引数有りのコンストラクタを使います。

そして、コンストラクタ内でインスタンス化したAmazonGlacierClientインスタンスを、フィールドとして保持しています。

なお、これ以降のAmazon Glacierに対する操作は此処で指定したリージョン(endpoint)に対する操作になります。
Vaultを作成した時と別のリージョンに対してlistVault等を実行しても期待する結果を得ることはできません。

※補足
リージョンとは?
リージョンとはデータセンターが設置してある場所です。
アメリカやヨーロッパ等好きな場所を選ぶことができます。但し、場所によって料金が違うので注意。

AwsCredentials.propertiesとは?
AWSにアクセスするための秘密の暗号を記述するプロパティファイルです。
こんな感じの内容が書いてあります。


AmazonGlacierClientインスタンスに使用するリージョンを指定する

上で行ったので説明を省きます。

CreateVaultRequestをインスタンス化する

次に、Amazon Glacierに送るリクエストのインスタンスを作成します。

コードはVaultController.java

辺りです。

引数のvaultNameに作成したVaultの名前を指定します。
簡単ですね。

createVaultメソッドを実行する

次にAmazon Glaicerに実際にリクエストを送ります。

上でnewしたCreateVaultRequestのインスタンスを引数としてAmazonGlacierClientのcreateVaultメソッドを呼んでいるだけです。

本当に簡単です。

レスポンスとしてCreateVaultResultオブジェクトを得る

リクエストに対するレスポンスはcreateVaultの戻り値として取得できます。


2.Vaultの詳細取得

処理の流れはVaultの作成の時とほとんど同じです。
AmazonGlacierClientのインスタンスを作って、リクエストのインスタンスを作って、今度はdescribeVaultを実行します。

リクエストのインスタンスの作成時に詳細を取得したいVault名を指定します。


コードはVaultController.java

辺りです。


これもほんの数行です。

3.Vaultの一覧取得

これも処理の流れは他と変わりません。
今度はlistVaultsメソッドを実行します。
今回は引数すらありません。

上にも書きましたが、リージョンが違うとVaultの情報が取得できないので気をつけて下さい。

コードはVaultController.java

辺りです。

4.Vaultの削除

最後に削除です。
これも処理の流れは変わらず、deleteVaultを実行するだけです。なおこのメソッドは戻り値を持ちません。


コードはVaultController.java

辺りです。



以上でVaultに対する基本的な操作は全て行えるようになりました。
どれも非常に単純で分かりやすいと思います。

実際にこのVaultController.javaを使用してコマンドの形にしているコードがVaultControllerCmd.javaになります。ほとんどコマンドライン引数の処理になってしまっていますが、コードの下部で実際にAWSに対して操作を行なっています。

もし興味を持っていただけたら是非読んでみて下さい。

次はVaultの中に保存するArchiveに対する操作に関して説明したいと思います。

参考ページ

0 件のコメント:

コメントを投稿