プログラマでありたい

おっさんになっても、プログラマでありつづけたい

Amazon Glacierのサンプルソース アップロード編

 Amazon Glacierを試そうと思ったのですが、Ruby版SDKがまだ対応していないのでJava版SDKで試してみました。開発環境としては、Mac OS X Lion + Eclipse + AWS Toolkit for Eclipseを使いました。

SDK for JavaとAWS Toolkit for Eclipseの設定



 JavaとEclipseを設定した後に、AWS Toolkit for Eclipseをインストールします。Eclipse起動後に、Help -> Install New Softwareで、次のURLを指定するとインストールできます。

http://aws.amazon.com/eclipse/

AWSプロジェクトの作成



 AWS Toolkit for Eclipseをインストールすると、AWSのひな形プロジェクトを作れるようになります。AWS Java Projectを選択し、AWSのアカウント設定を行いましょう。Access KeyとSecret Access Keyは、WebのAWS管理コンソールのAccount Activityから取得できます。適当な名前でプロジェクトを作成します。

Valutの作成



 Amazon Glacierのデータは、Valutという単位で管理されます。Valutはリージョンごとに最大1,000個まで作成可能で、Valutあたり最大40TBまで保存することが出来ます。とりあえず保存量の制限で悩むことは無さそうです。Valutの作成は、APIから作成する他に、AWS管理コンソールからも可能です。お試しなので、今回は画面から行いました。管理コンソールにログインした後でGlacierを選び、リージョンを確認した上でCreate New Valutをするだけです。とりあえず使いたいだけであれば、名前を決めるだけで作成可能です。他には必要に応じて、SNS(Simple Notification Service)の設定も行います。今回は、デフォルトのUS East(Virginia)で作成しました。

データのアップロード



 Valutを作成できたら、今度はAPIからデータのアップロードを行います。先ほどEclipseで作成したプロジェクトに、適当な名前でクラスを新規で作成します。サンプルでは、クラス名がArchiveUploadHighLevelとなっているので、それを使うのがよいでしょう。サンプルソースをコピーして、vaultNameとarchiveToUploadを変更しアップロードするファイルを配置すると使えるようになります。注意点としては、US East(Virginia)以外で作っている場合は、Endpointの変更も必要になります。
 設定が終わると、EclipseからRun As Java Applicationでとりあえず実行できます。問題なければコンソールログにArchive IDが出るので、それで成功です。注意点としては、アップロードに成功しても、管理コンソールにはすぐには出て来ません。アップロード後にすぐ管理コンソールを見ても、ステータスは"Inventory Last Updated: Not updated yet"のままで変わりません。フォーラムを見ていると、ステータスが反映されるのは大体1日くらい掛かるとのことです。さすが氷河!!翌日見てみると、無事に反映されていました。ちょっと開発しづらいですね。

感想



 サンプルの通り作ると、単純アップロードは簡単に出来ました。あと実装すべき機能としては高速にアップロードするために分割しての多重アップロードや、アーカイブの削除やValut自身の管理機能等です。Glacier側のファイル一つ一つのステータスを見るというAPIもないので、基本的には一方向にアップロードするだけです。所定のディレクトリ以下のファイルを再帰的にアーカイブするというプログラムを作るのは、それ程難しくないと思います。しかし、エラー処理やサイズごとの最適化等考えると面倒くさいので、本格運用には信頼性が高いサードパーティ製品が出てくること望みます。Glacierを使った企業向けサービスは、きっと恐ろしい勢いで出てくるかと思います。企業においてバックアップの運用というのは、頭の痛い問題なので下手したら一気にAWSに雪崩れ込むくらいの破壊的なサービスになるでしょう。きっとAWS Storage Gatewayとの連携もすぐに出てくるでしょうし。
 また、それなりにプログラム出来る人が個人レベルのバックアップに使えると思いますが、一般の方が各々使うといったレベルの普及はないと思います。Amazonもその辺りはターゲットにしていないと思います。あるとすれば、B2CでTimemachineみたいなアーカイブサービスを提供するかといったくらいでしょうか。
 次はダウンロードを試してみます。


See Also:
Mac OS X Lionに、Javaの開発環境をインストールする
Amazon Glacierも出たので、改めて個人のバックアップ戦略を考えてみる


参照:
What Is Amazon Glacier? - Amazon Glacier
Upload an Archive to a Vault in Amazon Glacier Using the AWS SDK for Java
【AWS発表】 Glacier – 1GBあたり月額約1円で利用可能なアーカイブストレージが登場
月額1GBあたり1円以下で上限無制限に利用可能なオンラインストレージ「Amazon Glacier」 - GIGAZINE