環境
実行環境は以下。
- Windows 8.1
- Python 3.3
- aws-cli 1.6.10
aws-cli
とはCUIでAWSを操作できるインタフェースです。詳細は後ほど。
仕組み
仕組みとしては、Pythonスクリプト経由でaws-cliのコマンド叩き、返り値(JSON)をもとにS3アーカイブにリストアするリクエストを送る、という形です。
aws-cliの準備
awsをコマンドラインで操作するためのインタフェースをインストールします。Pipがインストールされているのであれば下記のコマンドでいけます。
次に初期設定を行います。aws configure
を実行してください。すると以下のように対話的になります。求められている必要情報を入力します。
Access Key ID と Secret Access Keyについて
もし手元にAccess Keyを持っていなければ新規に発行する必要があります。また、過去に作ったことがあるものの忘れてしまったという人も新規に発行してください(再発行されないはず)。
発行方法は以下のURLが詳しいです。
リージョン情報について
リージョン情報はTOKYO
という表記では認識されません。以下のリンク先にRegion Name とRegionの対応表がありますので、ここで記載されているRegionの項のラベルをご利用ください。
対応表
http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
東京リージョン場合、Asia Pacific (Tokyo)
ですからap-northeast-1
とすればOKです。
自分のS3(というかbucket)がどこのリージョンか解らない場合はAWSのコンソール上で確認できます(下図)。
もし複数のbucketを持っており、それぞれ違うリージョンを利用している場合は主に利用したいリージョンを一旦選択してください。
「え?」と思うかもしれませんが、
aws configure
で入力したリージョン情報はC:\Users\[User]\.aws\config
に保存されており、後ほど変更できます。また、スクリプトを実行する際に、個別でリージョンは指定できるようにしてあります。
aws-cliをテストする
aws-cliがきちんと動作するかは以下のコマンドで確認できます。
上手くいけば以下のようなファイル情報を表したJSONが返ってくるはずです。
PythonからRestore Requestを叩く
aws-cliが準備できたらリストアリクエストを送ります。
以下のスクリプトを利用します。
実行した際にもしこんなエラーが出たらbucketのリージョンが間違っていると思われます。
この場合は以下のコマンドでbucketのリージョンを確認してください。
上記コマンドでリージョンの値がNullだったら、それはStandard Regionを意味しており、リージョンはus-east-1
(
もしくはus-west-1
)となります(参考:Leveraging the s3 and s3api Commands)。
リクエストを出したら、だいたい1~2時間後くらいに通常のbucketに戻されます。そしたらまとめてダウンロードできます。
以上です。