WEB開発備忘録

AWSコマンドラインツールでS3にバックアップ/リストアする

ざっくりとした流れ

1.「AWS/IAM」でS3バックアップ用のユーザーを作成
2.「AWS/S3」にバケット作る
3.対象サーバでawsコマンドラインツールの準備
4.awsコマンドラインツールにユーザー情報設定
5.バックアップ(アップロード)する
6.ダウンロードする

1.「AWS/IAM」でS3バックアップ用ユーザーを作成する

まずはAWS/IAMにてS3バックアップ用のユーザーを作成します。
IAMのダッシュボードへ移動して
1.IAMへ

ユーザー一覧へ移動します。
2.個々のユーザー管理へ

ユーザー作成ボタンをクリックして
3.新規ユーザーを作成

任意のユーザー名を設定します。
4.ユーザー名入力

必ずユーザーごとにアクセスキー生成を有効にしてユーザーを作成しましょう。
5.アクセスキー生成を有効に

ユーザーが作成されるとアクセスキーが入手できます。
6.アクセスキーを入手

ユーザーの権限を設定するために、グループを作成します。
8-2.グループを作る

グループに「ポリシー」つまり権限を設定します。
AWSで用意されたポリシーより「S3」をキーワードとして検索してみます。
8-4.S3用のポリシーを探す

こちらのポリシーを選択し、グループにアタッチ(紐づけ)します。
8-5.ポリシー選択

作成したグループに先ほど作成したユーザーを紐づけます。
グループの詳細情報画面より「グループにユーザーを追加」ボタンが用意されています。
8-6.作成したユーザーをこのグループに追加(追加ボタン)

グループにユーザーを追加しました。
8-6.作成したユーザーをこのグループに追加

 

2.「AWS/S3」にバケット作る

バックアップを保管する場所をS3に作っていきます。
作成した保管場所には、前段で作成したバックアップ用のAWSユーザーへ権限を付与します。

まずS3のダッシュボードを表示します。
9.S3のダッシュボードへ

バケットを作成します。
10.バケットを作成

ダイアログより名前とリージョンを指定します。「Tokyo」で良いでしょう。
11.バケットを作成するダイアログ

出来上がったバケットに権限を設定します。
後ほど設定する認証をパスしたユーザーには、読み書きを許可します。
12.読み書き権限を認証ユーザーに付与

 

3.対象サーバでawsコマンドラインツールの準備

AWSコマンドラインツールをインストールします。

[prompt] # curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
[prompt] # python get-pip.py
[prompt] # pip install awscli
[prompt] # aws help
4.awsコマンドラインツールにユーザー情報設定

先ほど作成したAWSユーザー情報で設定を行います。

[prompt] # aws configure
AWS Access Key ID [None]: 書き込むAWSユーザーのアクセスキー
AWS Secret Access Key [None]: 書き込むAWSユーザーのシークレットアクセスキー
Default region name [None]: ap-northeast-1
Default output format [None]: json
5.バックアップ(アップロード)する

バックアップのコマンドは以下です。

[prompt]# aws s3 sync --exact-timestamps アップロードするディレクトリパス s3://バケット名/

–exact-timestampsオプションを指定すると、ファイルのタイムスタンプを基準に同期を行います。
指定が無ければファイルサイズ基準での同期になります。

また–deleteオプションを指定すると、同期元に無い同期先のファイルが削除されます。

[prompt]# aws s3 sync --exact-timestamps --delete アップロードするディレクトリパス s3://バケット名/
6.ダウンロードする

AWSのS3からダウンロード、つまりリストアは以下のコマンド

[promtp]# aws s3 cp --region ap-northeast-1 s3://バケット名/ 保存先ディレクトリパス --recursive