【AWS】特定のEC2インスタンスがどのターゲットグループに所属しているか確認するPythonスクリプト【Python】

当初はどの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 -*-
import boto3
import sys

# コマンドラインからの引数を受け取ります。
if len(sys.argv) != 2:
    print(“Usage: python script.py “)
    sys.exit(1)

# 確認したいEC2インスタンスIDを受け取ります。
ec2_instance_id = sys.argv[1]
elbv2 = boto3.client(‘elbv2’)
 
# 全てのターゲットグループを取得します。
response = elbv2.describe_target_groups()
 
for target_group in response[‘TargetGroups’]:
  target_group_arn = target_group[‘TargetGroupArn’]
 
  # ターゲットグループ内の全てのターゲット(インスタンス)を取得します。
  response = elbv2.describe_target_health(TargetGroupArn=target_group_arn)
 
  for target in response[‘TargetHealthDescriptions’]:
    if target[‘Target’][‘Id’] == ec2_instance_id:
      print(f”Instance {ec2_instance_id} is part of target group {target_group_arn}”)

 

 

コードを書いたら保存します。

保存したら 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
Instance i-xxxxxxxxxxx is part of target group arn:aws:elasticloadbalancing:ap-northeast-1:1234567890:targetgroup/web-service-tg-2/xxxxxxxxxxxx

 

EC2 インスタンス(i-xxxxxxxxxxx)は以下の2つのターゲットグループに所属していることが分かりました。

  • web-service-tg-1
  • web-service-tg-2

 

 

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

AlphaOmega Captcha Medica  –  What Do You See?
     
 

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください