LightsailインスタンスをAWS CLIで自動バックアップする

当Blogを動かしているAmazon Lightsailは、今まで気付いた時に手動でインスタンススナップショットを撮ってバックアップをしていましたが、今回はAWS CLIを使って自動バッックアップにトライしてみました。ベストなやり方ではないかもしれませんが、Linuxのサーバーはインスタンスが起動していてもスナップショットを取れるので、自分自身のインスタンスで自分自身のスナップショットを撮ってみます。

1. AWS CLI用のIAMユーザーを作成する

コマンドラインからAWSを操作するAWS CLI用のユーザーを作成します。今回はLightsailを操作しますが、EC2やS3など他のAWSサービスを操作する場合も同様です。

-1. サービス – IAM

-2. ユーザー – ユーザを追加
-3. 適当なユーザー名を入力、プログラムによるアクセスにチェック

-4. 既存のポリシーを直接アタッチ – PowerUserAccess 権限を付与

-5. 何もせず、次のステップ:確認
-6. ユーザーの作成
-7. アクセスキーIDと、シークレットアクセスキー取得

アクセスキーIDシークレットアクセスキーは、AWS CLIの初期設定で使用するので控えておきます。

 

 

2. AWS CLIをいれる

-1. AWS CLIをインストール

LightsailインスタンスにSSHログインし、pipからインストールします。対象のOSはCentOS7です。

$ sudo -i
# curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
# python get-pip.py
# pip install awscli
# pip install --upgrade pip
# pip install requests --ignore-installed
# pip install --upgrade --force-reinstall 'requests==2.6.0'
-2. AWS CLIの初期設定

先ほど取得した、アクセスキーIDシークレットアクセスキー、Lightsailのリージョン(例えばap-northeast-1aなら、ap-northeast-1)、json を入力します。

# aws configure
AWS Access Key ID [None]: AKIARCxxxxxxxxxxxxxxxxx
AWS Secret Access Key [None]: ufr5j0juyyyyyyyyyyyyyyyyyyyyyyyyyy
Default region name [None]: ap-northeast-1
Default output format [None]: json

 

 

3. Lightsail インスタンス スナップショットのシェルスクリプトを作成

AWS CLIで、インスタンス名(CentOS-512MB-Tokyo-2)と、スナップショット名(CentOS-512MB-Tokyo-2-Auto-yyyyMMdd)を指定します。スナップショット名は重複できないので、末尾に年月日を付加します。

today=$(date “+%Y%m%d”)

aws lightsail create-instance-snapshot –instance-name CentOS-512MB-Tokyo-2 –instance-snapshot-name CentOS-512MB-Tokyo-2-Auto-${today}

# vim /root/autobackup.sh
#!/bin/bash

today=$(date "+%Y%m%d")
aws lightsail create-instance-snapshot --instance-name CentOS-512MB-Tokyo-2 --instance-snapshot-name CentOS-512MB-Tokyo-2-Auto-${today}
exit 0
----------------
:wq
# chmod 700 /root/autobackup.sh

 

4. 定時実行用に noanacronをいれる

すでに入っている場合は、5. へ。

# yum -y install cronie-noanacron
# yum -y remove cronie-anacron

 

5. 作成した autobackup.sh を 週一で実行させる

/etc/cron.d/dailyjobs を編集し、AWS_CONFIG_FILE=”/root/.aws/config”と、weekly 末尾に、&& /root/autobackup.sh を付加します。

# vim /etc/cron.d/dailyjobs
# Run the daily, weekly, and monthly jobs if cronie-anacron is not installed
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=hogehoge@ji0vwl.com
AWS_CONFIG_FILE="/root/.aws/config"

# run-parts
02 4 * * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.daily
22 4 * * 0 root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.weekly && /root/autobackup.sh
42 4 1 * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.monthly
----------------
:wq
# systemctl restart crond

毎週日曜日、午前4:22ごろにインスタンススナップショットによる自動バックアップが実行されます。これで、いつこのサーバーが逝っても1週間前の状態には復元ができるようになりました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

リンクが含まれる投稿はサイト管理者の承認後に表示されます(スパム対策)