AWS S3のデータを取り出す
現在、社内で利用しているサーバのデータはAWSにバックアップしています。いざという時のために復元の練習をしておこうと思います。現在バックアップはスタンダードタイプとglacierで行っています。glacierは復元に時間を要すようなのでとりあえずスタンダードのファイルを復元してみます。
まずは復元するサーバーで環境の整備です。
1.AWSとの接続はAWS CLIというツールを使用します。linux環境ではpythonが必要なのでインストールの確認をします。
[ats@www70 ~]$ python --version Python 2.6.6
2.入ってました。よかった。次にAWS CLIのインストールにpipが必要とのことですが入っていなかったのでインストールします。
<code class="nohighlight">[ats@www70 ~]$ curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py" [ats@www70 ~]$ </code><code class="nohighlight">sudo python get-pip.py </code>[ats@www70 ~]$ pip --version pip 7.1.2 from /usr/lib/python2.6/site-packages (python 2.6)
無事インストールできました。
3.最後にAWS CLIを入れます。
[ats@www70 ~]$ sudo pip install awscli [ats@www70 ~]$ aws --version aws-cli/1.6.0 Python/2.6.6 Linux/2.6.32-431.5.1.el6.x86_64
入りました。これでS3にバックアップしているファイルをダウンロードできるはずです。
4.インストールをしたらAWS CLIの環境構築が必要です。aws configureで環境設定します。amazonの説明では下記の設定が必要なようです。
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Default region name [None]: us-west-2
Default output format [None]: json
Access Keyってなんでしょう。説明にはアカウントの認証情報と書いてありますけどよくわかりません。アクセスキー ID と秘密アクセスキーの取得にはIAMコンソールで作成できるとあります。バックアップがあるのだからIAMに入ればどこかにあるだろうと思ったのですがどこにも見つかりません。説明をよく読んだら一度作成すると再確認はできないと書いてありました。すでにバックアップはしているのでアクセスキーは作成済のはずです。
よくよく考えればバックアップ時に使用してるはずです。結果バックアップのスクリプトからアクセスキーをようやく見つけることができました。次にリージョンの設定です。東京にバックアップしているのでRegions and Endpointsで東京は「ap-northeast-1」であることがわかりました。フォーマットはよくわからないのでjsonにしときました。
5.ようやく確認です。
リストとってみます。
[ats@www70 ~]$ aws s3 ls s3://MyBackup 2015-11-03 06:00:20 3065268 file2.tar.gz 2015-11-04 06:00:45 3065267 file3.tar.gz 2015-11-05 06:00:44 5088835 file4.tar.gz 2015-11-06 06:00:43 10804634 file5.tar.gz
出てきました。じゃ戻してみます。「cp」コマンドがあるようですので使ってみます。
[ats@www70 ~]$ aws s3 cp s3://MyBackup/file2.tar.gz ./ download: s3://MyBackup/file2.tar.gz to ./file2.tar.gz [ats@www70 ~]$ ls file2.tar.gz -la -rw-rw-r-- 1 atsike atsike 3065268 Nov 3 06:00 file2.tar.gz
ダウンロードできました。あとは元に戻すスクリプトを作成しておけば障害発生時にすぐに対象できます。
次はglacierのファイルの復元を試してみます。
※最初コピーしたとき「The difference between the request time and the current time is too large」というエラーメッセージがでました。これはサーバーとAWSの時間がずれているとき出るみたいです。時間合わせすることで解決しました。