え?まだバックアップで消耗してるの?AMIMOTOのスナップショットを自動で毎日とる。

AMIMOTOアドベントカレンダーの1日目の記事です。

明日からWordCamp USに参加するためにフィラデルフィアにいくので時差ぼけですいません!

 

あまり宣伝が出来てなくて申し訳ないのですが、AMIMOTOチームでは、GitHubにいろいろと便利なワンライナー集を公開しています。

https://github.com/amimoto-ami/

ここで、公開されているものは、どれも curl ... | bash みたいな感じで実行できるようになっているので、今日はその中からスナップショットを取るワンライナーをご紹介します。

https://github.com/amimoto-ami/create-snapshots

 

スナップショットとは

AMIMOTOに限らずAWSのEC2では、その時のマシンのハードディスクイメージをスナップショットとして保存することができます。

この記事のゴールは以下のような感じです。

  • AMIMOTOのスナップショットを毎日決まった時間に取得する。
  • スナップショットは無限に増やさないで、上限を2つ(2世代)とし、古いものから順番に削除していく。

では順番に設定していきましょう。

 

IAMを設定する

まず、IAMというものを設定します。

IAMというのはみなさんのAWSアカウントを操作するための新しいユーザーを作るみたいな機能で、ここでは新規のIAMユーザーを作成して、そのユーザーに対してスナップショットを作るために必要な権限を割り当てます。

まずAWSマネージメントコンソールの以下のURLにアクセスしてください。

https://console.aws.amazon.com/iam/home

IAM_Management_Console

次に左側のメニューの中の「Users」というメニューをクリックして「Create New Users」をクリック。

IAM_Management_Console

以下のような画面が出るはずなのでそこでユーザー名を入力してください。

このユーザー名は名前とかそういうのではなくて、何をするユーザーなのかとか対象はどれなのかとか、そういう具体的なものじゃないと1年ぐらい経ってから「あれ?これ誰?」ってなります。

IAM_Management_Console

次に、以下の右下の青いボタンをクリックして、アクセスキーとシークレットアクセスきーをダウンロードしてください。

これは無くしてしまうと新しくユーザーを作り直さないといけないので、取り扱いには注意してください。

IAM_Management_Console

ダウンロードが終わって「Close」をクリックしたら、ユーザーの一覧で先ほど追加したユーザーが増えてるはずです。

そのユーザーの行をクリックしてください。

この画面はユーザーもろもろを確認するための画面なんですが、その中に「Permissions」というタブがあります。

その画面で以下の場所をクリックしてください。

IAM_Management_Console

そして「Custom Policy」を選択して「Select」をクリック。

(あー、実際にやるとすぐなんですけど画面で説明すると面倒くさそう。笑)

IAM_Management_Console

最後に以下の画面で名前と権限を入力します。

IAM_Management_Console

名前は適当にわかりやすいものを。

権限は以下のテキストをそのまんまコピペしてください。

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

終わったら「Apply Policy」をクリックしてください。

 

AMIMOTO側の設定

まずAMIMOTOインスタンスにSSHでログインしてください。

$ ssh ec2-user@<ip-address>

そしてAMIMOTOマシン内で以下のコマンドを実行してください。

$ aws configure

するとアクセスキーとシークレットアクセスキーを聞かれると思います。

先ほどIAMユーザーを作った時にダウンロードしたファイルを開いて、アクセスキーとシークレットアクセスキーをそれぞれコピペしましょう。

以上が終わったら以下のコマンドを実行して試運転。

$ curl -L https://raw.githubusercontent.com/amimoto-ami/create-snapshots/master/create_snapshot.sh | bash

マネージメントコンソールで以下のようにスナップショットが作成されてたら成功です。

もし何もできてなかったら上の手順を再度見直してください。

定期的に実行するには以下のようにCronに登録しましょう。

$ crontab -e

例えば毎朝4時にスナップショットを取りたいならこんな感じ。

00 04 * * * /usr/bin/curl -s https://raw.githubusercontent.com/amimoto-ami/create-snapshots/master/create_snapshot.sh | /bin/bash

 

そうそう、AMIMOTOのマネージドホスティングなら自動的にスナップショットを取ってくれる上に、専用のコントロールパネルで好きな時にスナップショットを取ることもできます。

03_amimoto_hosting_single_1008_01_40