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はメタデータから取得しています。

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら