[小ネタ]Elastic Beanstalkで作成した環境に紐付いているAuto Scallingグループをコマンド一発で確認する

2022.03.18

はじめに

こんにちは。大阪オフィスの林です。
Amazon Elastic Beanstalkで作成した環境/アプリケーションに紐付いているAuto Scallingグループを探すのが少し手間だったので、コマンド一発で確認できる方法をまとめておきます。

困ってたこと

Amazon Elastic Beanstalkで自動作成されるAuto Scallingグループは、下記のような感じで、Elastic Beanstalkの環境名に紐付くような名前が付与されず、 Elastic Beanstalkで作成した環境/アプリケーションが複数存在すると、どの環境/アプリケーションに、どのAuto Scallingグループが紐付いているかパッと分かりません。
awseb-e-[ランダム文字列]-stack-AWSEBAutoScalingGroup-[ランダム文字列]

かと言って、Elastic Beanstalkで環境/アプリケーションを作成する際に明示的にAuto Scallingグループの名前を付けることも出来ず、 Elastic BeanstalkのダッシュボードからAuto Scallingグループの確認も出来ず、確認するためにはAuto Scallingグループのダッシュボードからタグを参照したりして相互の紐付けを確認してました。

頻繁に参照する設定では無いものの、確認するにはちょっと手間だなぁーっと困っており、何か良い方法を探している中から、今回はコマンド一発で確認する方法を紹介させて頂きたいと思います。

結論

AWS CloudShellから下記コマンドを実行してください。(AWS CloudShellから実行いただくと、EBコマンドもデフォルトでインストールされているため、下記コマンドをそのままコピペで利用できます。)

eb list -a | xargs -L 1 aws elasticbeanstalk describe-environment-resources --environment-name | jq -r '[.EnvironmentResources.EnvironmentName , .EnvironmentResources.AutoScalingGroups[].Name] | @tsv'

コマンドの説明

下記コマンドをパイプで繋いでいます。

eb list -a
ebコマンドにてElastic Beanstalkの環境名をリストで抽出しています。

xargs -L 1 aws elasticbeanstalk describe-environment-resources --environment-name
抽出されたリストから順番に環境の詳細を取得しています。

jq -r '[.EnvironmentResources.EnvironmentName , .EnvironmentResources.AutoScalingGroups[].Name] | @tsv'
取得した詳細から「環境名」と「Auto Scallingグループ名」を取得して、tsv形式で結果表示しています。

やってみた

結果の一列目(左側)がElastic Beanstalkの環境名で、二列目(右側)がAuto Scallingグループ名です。

[cloudshell-user@ip-10-0-136-237 ~]$ eb list -a | xargs -L 1 aws elasticbeanstalk describe-environment-resources --environment-name | jq -r '[.EnvironmentResources.EnvironmentName , .EnvironmentResources.AutoScalingGroups[].Name] | @tsv'
Test3-env       awseb-e-cubzfxgaeh-stack-AWSEBAutoScalingGroup-1FMNY00Y9NH2M
Test2-env       awseb-e-cwkgtnnqnm-stack-AWSEBAutoScalingGroup-MGI1QRUXUMAN
Test1-env       awseb-e-vnf26iz3fq-stack-AWSEBAutoScalingGroup-1HK47T82L6H4R

ついでに、ALBとの紐付けも併せて確認してみました。

[cloudshell-user@ip-10-0-136-237 ~]$ eb list -a | xargs -L 1 aws elasticbeanstalk describe-environment-resources --environment-name | jq -r '[.EnvironmentResources.EnvironmentName , .EnvironmentResources.AutoScalingGroups[].Name, .EnvironmentResources.LoadBalancers[].Name] | @tsv'
Test3-env       awseb-e-cubzfxgaeh-stack-AWSEBAutoScalingGroup-1FMNY00Y9NH2M    arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:loadbalancer/app/awseb-AWSEB-1AELL6C8SAJXE/da59712ac5f3e4aa
Test2-env       awseb-e-cwkgtnnqnm-stack-AWSEBAutoScalingGroup-MGI1QRUXUMAN     arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:loadbalancer/app/awseb-AWSEB-A0J675XUEJ8D/4539e607b517ce5d
Test1-env       awseb-e-vnf26iz3fq-stack-AWSEBAutoScalingGroup-1HK47T82L6H4R    arn:aws:elasticloadbalancing:ap-northeast-1:123456789012:loadbalancer/app/awseb-AWSEB-13GLS1R9YKCE3/61d031fe0259143f

まとめ

やっぱりCLIは痒いところに手の届く便利なモノだなぁ~っと改めて実感しました。
この記事がどなたかの参考になりましたら幸いです。

以上、大阪オフィスの林がお送りしました!