Amazon S3アップロード用Antタスク
S3へのデプロイ
発表当初、Amazon S3はデータストレージとしての用途として使用されていました。 しかし、S3の低コスト化/多機能化していくにしたがって、Cloud Frontと組み合わせてCDN(コンテンツデリバリネットワーク。Webコンテンツをインターネット経由で配信するために最適化されたネットワーク)として使用することも増えてきました。 現在作成しているアプリケーションで、ローカル環境ではjsファイルや画像ファイルはローカルを見ていますが、 本番環境ではAmazon S3上にコンテンツを配置してCloud Frontでキャッシュさせています。
最初はS3上のコンテンツも少なかったので手動でよかったのですが、数が増えてきたりHTTPヘッダにメタ情報を追加したりして、 手動でのデプロイが非常に面倒になっていました。 アプリケーションはEclipseで開発しており、ちょうどAntを使用していた処理があったため、 S3へのアップロードもAntタスクでできればよいと思い、新規タスクを作成しました。 (たぶん探せばS3アップロードのAntタスクはすでにあったと思わますが・・・)
今回使用した動作環境は以下のとおりです。
- OS : MacOS X 10.7.2
- Java : 1.6.0_26
- Apache Ant : 1.8.3
S3UploadのAntタスク
ソースはgithubにあげてあります。 中身は非常に単純で、org.apache.tools.ant.Taskクラスを継承したS3uploadクラスとJavaBeansが1つあるだけです。 build.xmlで指定したバケットに対してfilesetで指定したファイルをアップロードします。 アップロードするファイルによってはHTTPヘッダ情報を付加する必要があったので、Content Encoding,Content Type,Cache-Controleをbuild.xmlで指定できるようにしています。 ただ、アップロードするファイルの権限は全ユーザーに対してREAD権限を付与するので注意してください。
まとめ
githubから落としたプロジェクトに依存ライブラリを追加し、jar化すればどこでも使用できます。 いまのところ期待どおりに動いていると思われます。(もし使う際には一応ご注意を) かなりやっつけでつくったものなのでアレですが、何かの参考にしてください。