AWSのサービスをコンソールから操作するための、awscliというツールがあります。
このツールのコマンドの一つ、aws s3 sync
を使うと、rsyncのようにファイルをS3にバックアップできます。
バックアップしたファイルはaws s3 sync
で復元することも可能です。
この記事はバックアップ先となるS3のBucketを作るところから、aws s3 sync
を使ってバックアップするまでの手順を説明します。
プライベートBucket作る
Amazon Management ConsoleのS3管理ページから、Create Bucketを選ぶ。
Bucketは、デフォルトでは非公開になってて、Bucketを作ったユーザのみがアクセスできるようになってる。
IAMにバックアップ用ユーザ作る
Amazon Management ConsoleのIAM管理ページから、ユーザを追加する。
ユーザのアクセスキーは、アカウントを作った時しかダウンロード出来ない。情報を控えておくこと。
次に作成したユーザに、Bucketにアップロードする権限を付与する。バックアップに使うだけなので、指定したBucket以外にはアクセスできないように制限する。
ユーザの一覧画面で、作ったユーザを選択し、画面下のPermissionsタブを開いて、Attach User Policyボタンをクリック。
開いたダイアログのPolicy Generatorにチェックして、Selectボタンをクリックしてポリシー作成画面に進む。以下の権限を付与。
- AWS ServiceからAmazon S3を選択
- ActionsからAll Actions(*) をクリックしてから、DeleteBucket, DeleteBucketPolicy, DeleteBucketWebsite を削除。
- Amazon Resource Nameに、arn:aws:s3:::[バケット名] , arn:aws:s3:::[バケット名]/* をセット。continueするとpolicyのxmlが見れるので、Resourceにこの2つがセットされてることを確認する。
- Add Statementを押して権限付与
awscliをインストール
pip install awscli
実行すればインストールできる。pythonインストールされてればたぶんpipコマンドが使える。
その後、aws configure
を実行して、access_keyを設定する。
ここまでできたら設定、権限が正しくセットされているか、aws s3 ls
コマンドを使って検証してみる。
-
aws s3 ls s3://[Bucket名]/
を実行。エラーが起きないことを確認する。(バケットを操作できる権限の確認) -
aws s3 ls
を実行。AccessDeniedになることを確認する。(他のバケットは見れないことの確認)
aws s3 sync を使ってバックアップする
バックアップの実行は簡単で、
aws s3 sync /path/to/backup/ s3://[Bucket名]/
を実行すれば、/path/to/backup/ ディレクトリ以下のファイルをすべてバックアップしてくれる。
S3にあるデータをローカルにダウンロードするとき
aws s3 sync の引数を逆にすれば、S3にバックアップしたデータをローカルにダウンロードできる。
aws s3 sync s3://[Bucket名]/ /path/to/sync/
以上です。