AWS CLIでELB配下のEC2インスタンスの一覧を取得する
ELB名からインスタンス一覧を取得する
aws elb describe-instance-health --load-balancer-name={ELB_NAME} --query "InstanceStates[*].InstanceId" --output table --profile {CLI_PROFILE}
実行例
------------------------
|DescribeInstanceHealth|
+----------------------+
| i-00000000 |
| i-11111111 |
| i-22222222 |
| i-33333333 |
| i-44444444 |
+----------------------+
インスタンスIDから接続情報を取得する
aws ec2 describe-instances --instance-ids {INSTANCE_ID} --query "Reservations[*].Instances[*].{PublicDnsName:PublicDnsName,PublicIpAddress:PublicIpAddress,PrivateIpAddress:PrivateIpAddress}" --output table --profile {CLI_PROFILE}
実行例
----------------------------------------------------------------------------------------------------
| DescribeInstances |
+------------------+-----------------------------------------------------------+-------------------+
| PrivateIpAddress | PublicDnsName | PublicIpAddress |
+------------------+-----------------------------------------------------------+-------------------+
| 172.30.xx.xxx | ec2-xx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com | xx.xxx.xxx.xxx |
+------------------+-----------------------------------------------------------+-------------------+
ELB配下のEC2インスタンスの接続情報を取得する
outputをtextにしてインスタンスID一覧を取得すればそのまま--instance-idsに指定できる
#!/bin/bash
ELB_NAME=elb-xxx
CLI_PROFILE=cliprofile
INSTANCE_IDS=`aws elb describe-instance-health --load-balancer-name=${ELB_NAME} --query "InstanceStates[*].InstanceId" --output text --profile ${CLI_PROFILE}`
aws ec2 describe-instances --instance-ids ${INSTANCE_IDS} --query "Reservations[*].Instances[*].{PublicDnsName:PublicDnsName,PublicIpAddress:PublicIpAddress,PrivateIpAddress:PrivateIpAddress}" --output table --profile ${CLI_PROFILE}
ELB配下のEC2にsshでシェルを叩く
EC2群に一括で簡易的な処理をしたい時などに
#!/bin/bash
ELB_NAME=elb-xxx
CLI_PROFILE=cliprofile
SSH_KEYFILE=/home/ec2-user/.ssh/hoge.pem
INSTANCE_IDS=`aws elb describe-instance-health --load-balancer-name=${ELB_NAME} --query "InstanceStates[*].InstanceId" --output text --profile ${CLI_PROFILE}`
ENDPOINTS=`aws ec2 describe-instances --instance-ids ${INSTANCE_IDS} --query "Reservations[*].Instances[*].PublicDnsName" --output text --profile ${CLI_PROFILE}`
for ENDPOINT in ${ENDPOINTS}
do
ssh -i ${SSH_KEYFILE} ec2-user@${ENDPOINT} cmd
done
Author And Source
この問題について(AWS CLIでELB配下のEC2インスタンスの一覧を取得する), 我々は、より多くの情報をここで見つけました https://qiita.com/val90/items/19d5a2f144b81e20fb49著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .