前提・実現したいこと
EC2で起動したサーバについて日次でAMIイメージを取得するバックアップスクリプトで
AMIイメージを取得しようとしています。ほぼ下記のサイトのままでスクリプトを準備しました。
https://web-pencil.com/blog/auto_ami_backup/
但し、AMI取得時に生成されたスナップショットにタグが付いていない状態なので
スナップショットにタグを付けたいと考えております。どの様にすればAMI生成された際に作成されるスナップショットにタグを付けることができるでしょうか。いい方法が思いつかないのでご教示いただけますでしょうか。
該当のソースコード
shell
1#!/bin/bash 2export HOME=/root; 3 4PROFILE=BackUpRollName 5REGION="ap-northeast-1" 6 7## tmpディレクトリチェック 8if [ ! -e "/tmp" ];then 9 mkdir -p /tmp 10fi 11 12## 「Backup-Generation」というタグが付いている、インスタンスID,世代数(Backup-GenerationのValue)を取得 13/usr/local/bin/aws ec2 describe-tags --profile ${PROFILE} --region ${REGION} --filters "Name=tag-key,Values=ServerName-Backup-Generation" | awk '{print $3" "$5}' > /tmp/tmp_get_data 14 15while read INSTANCE_ID SEDAI_NO; do 16 if [ ! -z ${INSTANCE_ID} -a ! -z ${SEDAI_NO} ];then 17 ## AMIの数を確認 18 NOW_AMI_CNT=`/usr/local/bin/aws ec2 describe-images --profile ${PROFILE} --region ${REGION} --filters Name=tag-key,Values=Backup-Type Name=tag-value,Values=auto --query 'sort_by(Images[].{YMD:CreationDate,Name:Name,ImageId:ImageId,DESC:Description},&YMD)' | grep "${INSTANCE_ID}" | wc -l` 19 20 ## Backup-GenerationのValueと現在のAMI数を比較し、現在のAMI数がBackup-GenerationのValueに達していた場合は、一番古いAMIを削除する 21 if [ ${NOW_AMI_CNT} -eq ${SEDAI_NO} ];then 22 ## 削除対象のAMI_ID取得 23 DELETE_AMI_ID=`/usr/local/bin/aws ec2 describe-images --profile ${PROFILE} --region ${REGION} --filters Name=tag-key,Values=Backup-Type Name=tag-value,Values=auto --query 'sort_by(Images[].{YMD:CreationDate,Name:Name,ImageId:ImageId,DESC:Description},&YMD)' | grep "${INSTANCE_ID}" | head -1 | awk '{print $4}'` 24 25 ## AMI登録の解除 26 /usr/local/bin/aws ec2 deregister-image --profile ${PROFILE} --region ${REGION} --image-id ${DELETE_AMI_ID} 27 28 ## 削除対象のスナップショットID取得 29 DELETE_SNAPSHOT_ID=`/usr/local/bin/aws ec2 describe-snapshots --profile ${PROFILE} --region ${REGION} --filters Name=description,Values=*${DELETE_AMI_ID}* --query 'Snapshots[*].{ID:SnapshotId}'` 30 ## スナップショットの削除 31 /usr/local/bin/aws ec2 delete-snapshot --profile ${PROFILE} --region ${REGION} --snapshot-id ${DELETE_SNAPSHOT_ID} 32 fi 33 34 ## インスタンス名取得 35 INSTANCE_NAME=`/usr/local/bin/aws ec2 describe-tags --profile ${PROFILE} --region ${REGION} --filters "Name=tag-key,Values=Name" | grep "${INSTANCE_ID}" | awk '{print $5}'` 36 37 ## AMI作成 38 DATE=`date +%Y%m%d%H%M%S` 39 CREATE_AMI_ID=`/usr/local/bin/aws ec2 create-image --profile ${PROFILE} --region ${REGION} --instance-id ${INSTANCE_ID} --name "${INSTANCE_NAME}_${DATE}" --description "Create from ${INSTANCE_ID}" --no-reboot` 40 41 sleep 2 42 43 ## AMIにタグを付けする(例: Name:amazon-linux-test-SV Backup-Type:auto) 44 /usr/local/bin/aws ec2 create-tags --profile ${PROFILE} --region ${REGION} --resources ${CREATE_AMI_ID} --tags Key=Name,Value=${INSTANCE_NAME} Key=Backup-Type,Value=auto Key=Billing,Value=BillingGroupName 45 46 ## スナップショットにタグ付 47 48 fi 49done < /tmp/tmp_get_data 50 51rm -f /tmp/tmp_get_data 52 53exit 0 54 55
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。