Auto Scalingから起動されたEC2には、下記のようにaws:autoscaling:groupNameタグが付与されます。
これにより、このタグの存在をチェックすれば自分がAuto Scalingから起動されたEC2かどうか確認できるはずです。
そこで、以前紹介したEC2のコマンドラインツールのインストールと起動時にホスト名をNameタグの値とする方法のコマンドラインツールを利用し確認してみます。
タグは下記のように確認することができます。
# ec2-describe-tags TAG instance i-da1fdcd9 aws:autoscaling:groupName vpc-ag-2 TAG instance i-965bb495 Name OpwnVPN TAG instance i-cde3f7cd Name Win TAG instance i-da1fdcd9 Name VPC-AS TAG image ami-04289f05 Name CDP TAG snapshot snap-f5db769e Name suz-lab_ebs_centos-core-x86_64-6.0.0
特定のインスタンスのみを取得するには–filterオプションを使います。
# ec2-describe-tags --filter resource-id=i-da1fdcd9 TAG instance i-da1fdcd9 aws:autoscaling:groupName vpc-ag-2 TAG instance i-da1fdcd9 Name VPC-AS
–filterオプションの指定方法は、DescribeTags – Amazon Elastic Compute Cloudで詳しく説明されています。
これを、aws:autoscaling:groupNameでgrepします。
# ec2-describe-tags --filter resource-id=i-da1fdcd9 > | grep aws:autoscaling:groupName TAG instance i-da1fdcd9 aws:autoscaling:groupName vpc-ag-2
そして、wcで行数を取得し、1ならばAuto Scalingから起動、0ならば普通に起動していることになります。
# ec2-describe-tags --filter resource-id=i-da1fdcd9 > | grep aws:autoscaling:groupName > | wc -l 1
最後に上記内容をシェルスクリプト化します。
#!/bin/sh # エラー発生時にNGと終了ステータスコードを出力 set -e trap 'echo NG:$?' ERR # コマンドラインツールを利用する環境変数を指定(環境に応じて) export JAVA_HOME=/usr/lib/jvm/jre export EC2_HOME=/opt/ec2-api-tools export PATH=$PATH:$EC2_HOME/bin export EC2_URL=https://ec2.ap-northeast-1.amazonaws.com export AWS_ACCESS_KEY=XXXXXXXX export AWS_SECRET_KEY=YYYYYYYY # インスタンスIDの取得 INSTANCE_ID=`curl -s http://169.254.169.254/latest/meta-data/instance-id` # "aws:autoscaling:groupName"タグの存在チェック ec2-describe-tags --filter resource-id=${INSTANCE_ID} | grep aws:autoscaling:groupName | wc -l # 正常終了 exit 0
自身のインスタンスIDはメタデータから取得しています。