Posted at

EC2インスタンスで作業前にバックアップをとりましょう

More than 3 years have passed since last update.

EC2で作業するときに、yumアップデートなど不可逆な作業をする前には、

必ずAMIイメージをとってからやりましょう!

よく耳にします。

ただ、マネジメントコンソール派(ほとんどの人)は、

マネジメントコンソールからAMIを取得していると思います。

でも、その際に対象インスタンスを間違っていないか?

No Rebootのチェックは漏れてないか?

ヒヤヒヤします。

手作業はいつか事故りそうなのでスクリプト化しました。

<インスタンス名(TAG: Name)>_<タイムスタンプ>

の名前でAMIをno-rebootで取得します。


backup_me.sh


#!/bin/bash

instance_id=$(curl http://169.254.169.254/latest/meta-data/instance-id)

region=$(curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone | sed -e 's/.$//')

instance_name=$(aws ec2 describe-tags --region ${region} --filters "Name=resource-id,Values=${instance_id}" | grep "Value" | awk '{print $2}' | sed -e "s/\"//" | sed -e "s/\",//")

date_str=$(date "+%Y%m%d%H%M%S")

ret=$(aws ec2 create-image --region ${region} --instance-id ${instance_id} --name ${instance_name}_${date_str} --description "created by backup-me" --no-reboot)

echo "${instance_id}'s ami backup created!"
echo $ret


あえて、jqとか使わないようにしておいたので、AWS-CLIさえ入っていれば動くはず。

これで、yum updateも怖くない(?)

$ ./backup_me.sh

$ sudo yum update