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() はこの状態だと比較的出来ない子である)

それはともかく、出来てしまえばアップロードは非常に簡単。ダウンロードはまだ試してない

#!/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時間かかるの」とか書いてあるので、なおのこと感触を掴んでおくべきだと思う。その注意書きの通りに読めば、緊急で復旧するのには使えない。アマゾンが氷河になった所以である。

その他だらだら読めば良いと思うのはこちら (上記記事にもあるけどん)

読んでて私が覚えとくべきだと思ったポイントは (リリースから大体予想できるのだけど)

  • アップロード自体は早く終わるが、そのあと反映されるまでにひどく時間がかかる (1日?)
  • ダウンロードはダウンロード準備まで4時間?かかる。そのあとSNSという仕組みで通知が来るのでダウンロードする。多分「解凍」に準じる作業をする必要があるのだろう
  • Vaultというのを用意する必要があるが、これはコード上からもできるしなんと消せる。……セキュリティホール1つで完全消滅する気がしないか?


それにしても、検索結果が「試した」で埋まらない程度に記事が少ないので、これを読んだPythonの関係者はちゃんとした記事を書いた方が良いと思うにょ > ぼらんたす氏


このブログの人気の投稿

LibreOfficeで表紙、目次、本体でフッターのページ番号のスタイルを変える

WiiUのコントローラが通信不良に陥った話

技術書典2 あ-03 『もわねっとのPythonの本』