私の作ったこのコマンドを使用すれば、すぐに操作可能なのですが、今回はソースコードレベルでの解説をしたいと思います。
ここでは
- Vaultの作成
- Vaultの詳細取得
- Vaultの一覧取得
- Vaultの削除
について紹介します。
今回関係あるのは以下の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にアクセスするための秘密の暗号を記述するプロパティファイルです。
こんな感じの内容が書いてあります。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public GlacierTools() throws IOException { | |
this(getDefaultEndpoint(), new File(AWS_PROPERTIES_FILENAME)); | |
} | |
public GlacierTools(String endpoint, File awsProperties) throws IOException { | |
credentials = new PropertiesCredentials(awsProperties); | |
client = new AmazonGlacierClient(credentials); | |
client.setEndpoint(endpoint); | |
} |
このコンストラクタ内で、リージョンの指定(endpoint)とAwsCredentials.properties(awsProperties)の指定も行なっています。
デフォルトのリージョンと.propertiesを使用する場合は上の引数無しのコンストラクタを、明示的に指定したい場合は下の引数有りのコンストラクタを使います。
そして、コンストラクタ内でインスタンス化したAmazonGlacierClientインスタンスを、フィールドとして保持しています。
なお、これ以降のAmazon Glacierに対する操作は此処で指定したリージョン(endpoint)に対する操作になります。
Vaultを作成した時と別のリージョンに対してlistVault等を実行しても期待する結果を得ることはできません。
※補足
リージョンとは?
リージョンとはデータセンターが設置してある場所です。
アメリカやヨーロッパ等好きな場所を選ぶことができます。但し、場所によって料金が違うので注意。
AwsCredentials.propertiesとは?
AWSにアクセスするための秘密の暗号を記述するプロパティファイルです。
こんな感じの内容が書いてあります。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#Insert your AWS Credentials from http://aws.amazon.com/security-credentials | |
#Wed Jul 18 19:02:08 PST 2012 | |
secretKey=*** Your Account Secret Access Key*** | |
accessKey=***Your Account Access Key ID** |
AmazonGlacierClientインスタンスに使用するリージョンを指定する
上で行ったので説明を省きます。CreateVaultRequestをインスタンス化する
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public CreateVaultResult createVault(String vaultName) { | |
CreateVaultRequest createVaultRequest = new CreateVaultRequest().withVaultName(vaultName); | |
CreateVaultResult createVaultResult = client.createVault(createVaultRequest); | |
return createVaultResult; | |
} |
辺りです。
引数のvaultNameに作成したVaultの名前を指定します。
簡単ですね。
簡単ですね。
createVaultメソッドを実行する
次にAmazon Glaicerに実際にリクエストを送ります。
上でnewしたCreateVaultRequestのインスタンスを引数としてAmazonGlacierClientのcreateVaultメソッドを呼んでいるだけです。
上でnewしたCreateVaultRequestのインスタンスを引数としてAmazonGlacierClientのcreateVaultメソッドを呼んでいるだけです。
本当に簡単です。
レスポンスとしてCreateVaultResultオブジェクトを得る
リクエストに対するレスポンスはcreateVaultの戻り値として取得できます。
2.Vaultの詳細取得
処理の流れはVaultの作成の時とほとんど同じです。AmazonGlacierClientのインスタンスを作って、リクエストのインスタンスを作って、今度はdescribeVaultを実行します。
リクエストのインスタンスの作成時に詳細を取得したいVault名を指定します。
コードはVaultController.javaの
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public DescribeVaultResult describeVault(String vaultName) { | |
DescribeVaultRequest describeVaultRequest = new DescribeVaultRequest() | |
.withVaultName(vaultName); | |
DescribeVaultResult describeVaultResult = client.describeVault(describeVaultRequest); | |
return describeVaultResult; | |
} |
辺りです。
これもほんの数行です。
3.Vaultの一覧取得
今度はlistVaultsメソッドを実行します。
今回は引数すらありません。
上にも書きましたが、リージョンが違うとVaultの情報が取得できないので気をつけて下さい。
上にも書きましたが、リージョンが違うとVaultの情報が取得できないので気をつけて下さい。
コードはVaultController.javaの
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public List<DescribeVaultOutput> listVaults() { | |
ListVaultsRequest listVaultsRequest = new ListVaultsRequest(); | |
ListVaultsResult listVaultsResult = client.listVaults(listVaultsRequest); | |
return listVaultsResult.getVaultList(); | |
} |
辺りです。
4.Vaultの削除
最後に削除です。
これも処理の流れは変わらず、deleteVaultを実行するだけです。なおこのメソッドは戻り値を持ちません。
これも処理の流れは変わらず、deleteVaultを実行するだけです。なおこのメソッドは戻り値を持ちません。
コードはVaultController.javaの
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public void deleteVault(String vaultName) { | |
DeleteVaultRequest deleteVaultRequest = new DeleteVaultRequest().withVaultName(vaultName); | |
client.deleteVault(deleteVaultRequest); | |
} |
辺りです。
以上でVaultに対する基本的な操作は全て行えるようになりました。
どれも非常に単純で分かりやすいと思います。
実際にこのVaultController.javaを使用してコマンドの形にしているコードがVaultControllerCmd.javaになります。ほとんどコマンドライン引数の処理になってしまっていますが、コードの下部で実際にAWSに対して操作を行なっています。
もし興味を持っていただけたら是非読んでみて下さい。
次はVaultの中に保存するArchiveに対する操作に関して説明したいと思います。
参考ページ
0 件のコメント:
コメントを投稿