Amazon GlacierにPython使ってアップロード
暇でもないのだけどとれーにんぐの一環として遊んでいた。
まず簡単に出来るためにはPIPから最新のbotoを落とす必要がある。Ubuntu 12.04 LTSの2012-10-03時点のバージョンでは足りない。boto.glacierがない
現在PIPから取れる最新版でも一部ベーシックな機能が足りておらず、おお、とても先進的で微妙、と思った。具体的には boto 2.6.0 ではboto.glacier自体はあるが、create_archive_from_file にdescriptionを追加する引数がない。ええ、それ困るんじゃ、と思ったら最新の開発版ソースにはあるので、まぁいいか。 (description はアップロード後に「変更できない」ため、create_archive_from_file() はこの状態だと比較的出来ない子である)
それはともかく、出来てしまえばアップロードは非常に簡単。ダウンロードはまだ試してない
振り返ってみれば、なんと単純ですか!
なお、一つ目の記事の通り、アップロード直後にアップロードしたことが反映されず、ただIDのみが返される。そのため、素早いイテレーションで開発する上では前もって感触をつかんで置くほうが良い。もっとも、超カンタンに出来る気がするけどね。
ダウンロードは「ダウソ準備に4時間かかるの」とか書いてあるので、なおのこと感触を掴んでおくべきだと思う。その注意書きの通りに読めば、緊急で復旧するのには使えない。アマゾンが氷河になった所以である。
その他だらだら読めば良いと思うのはこちら (上記記事にもあるけどん)
それにしても、検索結果が「試した」で埋まらない程度に記事が少ないので、これを読んだPythonの関係者はちゃんとした記事を書いた方が良いと思うにょ > ぼらんたす氏
まず簡単に出来るためにはPIPから最新のbotoを落とす必要がある。Ubuntu 12.04 LTSの2012-10-03時点のバージョンでは足りない。boto.glacierがない
現在PIPから取れる最新版でも一部ベーシックな機能が足りておらず、おお、とても先進的で微妙、と思った。具体的には boto 2.6.0 ではboto.glacier自体はあるが、create_archive_from_file にdescriptionを追加する引数がない。ええ、それ困るんじゃ、と思ったら最新の開発版ソースにはあるので、まぁいいか。 (description はアップロード後に「変更できない」ため、create_archive_from_file() はこの状態だと比較的出来ない子である)
それはともかく、出来てしまえばアップロードは非常に簡単。ダウンロードはまだ試してない
#!/usr/bin/python
import boto.glacier
import boto.glacier.layer2
ACCESS_KEY_ID = 変更してね
SECRET_ACCESS_KEY = 変更してね
layer2 = boto.glacier.layer2.Layer2(aws_access_key_id = ACCESS_KEY_ID,
aws_secret_access_key = SECRET_ACCESS_KEY,
region_name='ap-northeast-1')
vault = layer2.get_vault('TestVault')
assert vault
id = vault.create_archive_from_file(filename=ファイル名をしていする)
- プログラミングする上でのKEY_IDとACCESS_KEYをゲット
- vaultというのをまずWeb上から作る、か、プログラムからも作れる (上記のは作っといた)
- アップロードするファイルを指定すると少しすると終わる (え、非同期じゃないのか)
振り返ってみれば、なんと単純ですか!
なお、一つ目の記事の通り、アップロード直後にアップロードしたことが反映されず、ただIDのみが返される。そのため、素早いイテレーションで開発する上では前もって感触をつかんで置くほうが良い。もっとも、超カンタンに出来る気がするけどね。
ダウンロードは「ダウソ準備に4時間かかるの」とか書いてあるので、なおのこと感触を掴んでおくべきだと思う。その注意書きの通りに読めば、緊急で復旧するのには使えない。アマゾンが氷河になった所以である。
その他だらだら読めば良いと思うのはこちら (上記記事にもあるけどん)
- http://docs.amazonwebservices.com/amazonglacier/latest/dev/uploading-an-archive.html
- http://docs.amazonwebservices.com/amazonglacier/latest/dev/working-with-archives.html
- アップロード自体は早く終わるが、そのあと反映されるまでにひどく時間がかかる (1日?)
- ダウンロードはダウンロード準備まで4時間?かかる。そのあとSNSという仕組みで通知が来るのでダウンロードする。多分「解凍」に準じる作業をする必要があるのだろう
- Vaultというのを用意する必要があるが、これはコード上からもできるしなんと消せる。……セキュリティホール1つで完全消滅する気がしないか?
それにしても、検索結果が「試した」で埋まらない程度に記事が少ないので、これを読んだPythonの関係者はちゃんとした記事を書いた方が良いと思うにょ > ぼらんたす氏