###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