はじめに
EC2インスタンスのスナップショットをスクリプトで取得しようとした際、下記情報をコマンドで取得する必要がありました。備忘録です。
※sedコマンドとかしていますが、ダブルクォーテーションを削除するためです。
①自分自身のインスタンスID
②自分自身のボリュームID
③自分自身のボリュームから取得したスナップショットID一覧
④自分自身のTAG(Name)
前提
- AWS CLIがインストールされていること。
-
aws configure
コマンド実行済み。 - EC2FullAccessの権限を持った、IAMユーザーのアクセスキーとシークレットキーを取得済み。
①自分自身のインスタンスID取得
169.254.169.254にインスタンスのメタデータがあるらしいです。
curl 'http://169.254.169.254/latest/meta-data/instance-id'; echo -en "\n"
②自分自身のボリュームID取得
- ${AWS_REGION}: リージョンを記載する。(例:ap-northeast-1)
- ${INSTANCE_ID}: ①で取得したインスタンスIDを記載する。
aws ec2 describe-instances --region ${AWS_REGION} --instance-id ${INSTANCE_ID} --query 'Reservations[].Instances[].BlockDeviceMappings[].Ebs[]' | grep vol | sed 's/^.*"\(.*\)".*$/\1/'
③自分自身のボリュームから取得したスナップショットID一覧取得
- ${EBS_VOLUME_ID}: ②で取得したボリュームID
aws ec2 describe-snapshots --filters Name=volume-id,Values=${EBS_VOLUME_ID} | grep snap- | sed 's/^.*"\(.*\)".*$/\1/'
④自分自身のTAG(Name)
- ${AWS_REGION}: リージョンを記載する。(例:ap-northeast-1)
- ${INSTANCE_ID}: ①で取得したインスタンスIDを記載する。
aws ec2 describe-instances --region ${AWS_REGION} --instance-id ${INSTANCE_ID} --query 'Reservations[].Instances[].Tags[].Value[]' | grep [0-9a-zA-Z] | sed 's/^.*"\(.*\)".*$/\1/'