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