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

元記事はこちら

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