AWS EC2でスナップショットを定期的に自動で取得する

AWS

AWSを運用していくうえで、スナップショットを定期的に取得して自動バックアップする方法です。

なるべくEC2を構築した直後に設定しておきましょう。システムが稼働した後などに設定しようとするといろいろ考慮する点が多くなるので大変です。

慣れてしまえば、5分かからず設定できると思うので、ぜひ構築直後に設定してください。

構築までの流れとしては以下のようになります。

・IAMでポリシー作成
・グループ作成
・ユーザの作成
・AWS CLIの設定
・スナップショット作成用のスクリプト作成
・上記スクリプトをcronに設定する

 

■スナップショット取得専用のユーザを作成する

まずは、AWS CLI用のユーザを作成します。AWSの管理画面からスナップショット取得専用ユーザを作成します。

1.まずはAWSのIAM管理画面を開きます。

ポリシー作成

ポリシー作成

左側のメニューのポリシー→ポリシー作成と押していきます。

 

2.独自ポリシーを作成

画面が遷移したら【独自ポリシーを作成】を選択します。

独自ポリシーを作成

独自ポリシーを作成

 

3.ポリシーの設定をします

ポリシー名、説明、ポリシードキュメント(ポリシーの設定)をします。それぞれ以下のように設定しています。

説明は適当にわかるものを設定指定ください。ポリシードキュメントはスナップショットの作成と削除のみの権限設定となっています。

ポリシー作成ボタンを押すと、ポリシーが作成されます。

ポリシー設定

ポリシー設定

 

各項目に入力する値は以下のとおりです。

【ポリシー名】

AmazonEC2CreateSnapshots

 

【説明】

自動スナップショット用ユーザ(適宜わかりやすい感じで設定してください)

 

【ポリシードキュメント】

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "ec2:CreateSnapshot",
        "ec2:DeleteSnapshot"
      ],
      "Resource": "*"
    }
  ]
}

 

■グループの作成

次に管理しやすいようにグループの作成をしておきます。

 

1.まずはAWSのIAM管理画面を開きます。

グループ→新しいグループの作成を押します。

グループの作成開始

グループの作成開始

 

2.次にグループ名を設定します。

わかりやすい名前で設定します。create_snapshotなどわかりやすい名前にしましょう。

グループ名設定

グループ名設定

 

3.ポリシーをグループに関連付ける

ポリシーをグループにひもづける

ポリシーをグループに関連付ける

先ほど作成したポリシーを関連付けます。フィルタに先ほど作成したポリシー名AmazonEC2CreateSnapshotsを入力し、フィルターして選択するとわかりやすいと思います。

 

4.確認と完了

確認画面が表示されて作成して完了です。

確認

確認

 

■ユーザの作成

もう少しでAWSの管理画面での設定は完了します。ユーザを作成し、必要なキー情報を取得します。

 

1.まずはAWSのIAM管理画面を開きます。

ユーザ→新規ユーザの作成を押します。

ユーザ新規作成開始

ユーザ新規作成開始

 

2.ユーザ名の設定

ユーザ名を設定します。適当にわかりやすい名前を設定しておきましょう。ユーザの作成が成功すると、キー情報をダウンロードできるようになります。

ユーザ名設定

ユーザ名設定

 

3.キー情報の保存

右下の青いボタンを押すと、CSVファイルをダウンロードできます。

シークレットキー

シークレットキー

ダウンロードすると以下の様な感じのCSVファイルがダウンロードできます。ユーザ名,アクセスキー,秘密キーの順番で記述されています。このファイルは無くさないようにしてください。

"user_name",XXXXXXXXXXXXXXXXXXX,xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

 

4.作ったユーザをグループに設定する

作成したユーザをグループに所属させます。先ほど作成したユーザ名をクリックすると以下の様な画面になります。グループにユーザを追加ボタンを押して、先ほど作成したグループ名(サンプルだとcreate_snapshotグループ)を選択して保存します。

グループに追加

グループに追加

 

これで、AWS管理画面でのユーザの作成は完了です。

 

■AWS CLIの設定と自動スナップショット作成スクリプト設定

1.AWS CLIの初期設定

スナップショットを取得したいインスタンスへログインします。以下のコマンドを実行すると、AWS CLIのコマンド設定が完了します。それぞれ、以下のように設定してください。

$ aws configure
AWS Access Key ID [None]:【ダウンロードしたCSVのAccess Key Id】 
AWS Secret Access Key [None]: 【ダウンロードしたCSVのSecret Access Key】
Default region name [None]: 【東京リージョンの時はap-northeast-1】
Default output format [None]: からっぽのまま

ここで入力した値が保存される設定ファイルは ~/.aws/ ディレクトリ内に作成されます。config と credentials というファイルです。

2.スクリプトの作成

AWSCLIを使って、自動でスナップショットを取得するスクリプトです。網元AMIさまのスクリプトを使わせてもらいます。

変更点は以下のところです。

6行目 LOG_DIR="/var/log"

→ これはスクリプトを実行できるユーザが書き込み権限のあるディレクトリに変更します。

13行目  SNAPSHOTS_PERIOD=2

→ スナップショットを取得しておく世代数です。2が設定されているので、2世代前までスナップショットを取得します。適切な数値に変えてください

このスクリプトをcronで一定期間で実行することで自動でスナップショットが取得できます。テストで一度スクリプトを実行してみることをおすすめします。

万一のためにも設定しておきましょう。さよなら。