当初はどのALBのターゲットグループにどのEC2インスタンスが所属しているか管理が出来ていますが、徐々に企業の規模が大きくなりリソースが増えてくると「そもそもこのEC2インスタンスってターゲットグループに所属していたっけ?所属していたならどのターゲットグループだっけ?」という疑問を持つことがあります。
EC2インスタンスのダッシュボードから所属するターゲットグループを確認することができればいいのですが、下図のようにそのような属性があるか調べてみた所、ありませんでした。
ではターゲットグループ1つ1つを確認していけばいいのでしょうか?
しかし試しにターゲットグループ一覧を見ると…
ターゲットグループが100個くらいあるとします。
命名規則がそれなりに運用できていれば名前から推察してターゲットグループのあたりを付けることができます。
しかしそこらへんの運用があいまいだと「何となくこのターゲットグループっぽいけど、他に所属しているたーげとグループはないの?」とか「10個くらいあたりを付けてさらっと探してみたけど、どのターゲットグループにも所属していなかったな…全部のターゲットグループを1つ1つしらみつぶしにすれば確実なんだけど数えたら200個もターゲットグループがあるし…」などあいまいな状態で作業をしなければいけないこともあるかもしれません。
AWSのリソースが何千、何万あっても全部Terraformでコード化ができて入れば、コードを見てすぐに分かりますが、コード化が出来ていないもしくは過渡期で中途半端な状態ということもあります。
そんな時に「特定のEC2インスタンスがどのターゲットグループに所属しているか確認する Python スクリプト」をご紹介します。
■Pythonファイルを作成する
$ vi ec2-in-target-group-check.py |
■Pythonコード
# -*- coding: utf-8 -*- # コマンドラインからの引数を受け取ります。 # 確認したいEC2インスタンスIDを受け取ります。 |
コードを書いたら保存します。
保存したら Python スクリプトを実行してみます。
■実行コマンド
$ python3.7 ./ec2-in-target-group-check.py i-xxxxxxxxxxxx |
※i-xxxxxxxxxxxx は EC2 インスタンス ID を指定します。
実行すると以下のように所属するターゲットグループが表示されます。
■実行コマンド
$ python3.7 ./ec2-in-target-group-check.py i-xxxxxxxxxxxx Instance i-xxxxxxxxxxx is part of target group arn:aws:elasticloadbalancing:ap-northeast-1:1234567890:targetgroup/web-service-tg-1/xxxxxxxxxxxx |
EC2 インスタンス(i-xxxxxxxxxxx)は以下の2つのターゲットグループに所属していることが分かりました。
- web-service-tg-1
- web-service-tg-2
コメント