【小ネタ】 AWS CLI コマンドを利用して、SSM のマネージドノードとして登録されていない EC2 インスタンスを確認してみた
はじめに
テクニカルサポートの 片方 です。
AWS Systems Manager(SSM)を利用すると、EC2 インスタンスをマネージドノードとして一元管理できて便利ですよね。
多くの EC2 インスタンスを起動している場合、どのインスタンスがマネージドノード登録されているか把握しづらくなるケースもあります。
基本的にはタグ付けを行えば管理可能ですが、今回は AWS CLI コマンドを利用して、マネージドノードとして登録されていない EC2 インスタンスの確認方法を小ネタとして紹介します。
補足
AWS Systems Manager(SSM)のマネジメントコンソール画面より、Diagnose and remediate (診断と是正) から確認可能なのではないかと、疑問に思われます。

こちらのマネジメントコンソール画面では、一度もマネージドノードとして登録されていない EC2 インスタンスに対しては出力されません。
確認してみた
今回は、AWS CLI コマンドを利用して、EC2 インスタンスと SSM マネージドノードに登録されているノードの差分を取る方法を試しました。
例) [EC2 インスタンスの一覧] - [SSM ManagedInstance 一覧]
bash -c 'comm -23 <(aws ec2 describe-instances --region ap-northeast-1 --filters "Name=instance-state-name,Values=running" --query "Reservations[].Instances[].InstanceId" --output text | tr "\t" "\n" | sort) <(aws ssm describe-instance-information --region ap-northeast-1 --query "InstanceInformationList[].InstanceId" --output text | tr "\t" "\n" | sort)'
もし特定の OS のみを対象にしたい場合は、platform フィルタを付与します。
bash -c 'comm -23 <(aws ec2 describe-instances --region ap-northeast-1 --filters "Name=platform,Values=windows" "Name=instance-state-name,Values=running" --query "Reservations[].Instances[].InstanceId" --output text | tr "\t" "\n" | sort) <(aws ssm describe-instance-information --region ap-northeast-1 --query "InstanceInformationList[].InstanceId" --output text | tr "\t" "\n" | sort)'
※ 適宜修正してください。
コマンド実行結果より出力された EC2 インスタンス ID が、マネージドノードとして登録されていないノードであることが確認可能です。
$ bash -c 'comm -23 <(aws ec2 describe-instances --region ap-northeast-1 --filters "Name=platform,Values=windows" "Name=instance-state-name,Values=running" --query "Reservations[].Instances[].InstanceId" --output text | tr "\t" "\n" | sort) <(aws ssm describe-instance-information --region ap-northeast-1 --query "InstanceInformationList[].InstanceId" --output text | tr "\t" "\n" | sort)'
i-004xxxxxxxxxxxxxx
i-00cxxxxxxxxxxxxxx
i-00dxxxxxxxxxxxxxx
i-010xxxxxxxxxxxxxx
i-010xxxxxxxxxxxxxx
i-011xxxxxxxxxxxxxx
i-017xxxxxxxxxxxxxx
i-018xxxxxxxxxxxxxx
i-01bxxxxxxxxxxxxxx
i-02xxxxxxxxxxxxxxx
まとめ
本ブログが誰かの参考になれば幸いです。
参考資料
- タグとは - AWS リソースのタグ付けのベストプラクティス
- 診断と修復 - AWS Systems Manager
- describe-instances — AWS CLI 2.32.12 Command Reference
- describe-instance-information — AWS CLI 2.32.12 Command Reference
アノテーション株式会社について
アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。








