I'm not a user of EB CLI. However you could achieve what you want with 1 command using awscli
.
First install and configure awscli
:
$ pip install awscli
$ aws configure
ElasticBeanstalk automatically tags EC2 instances that are part of ElasticBeanstalk environment with elasticbeanstalk:environment-name
tag. Using this information you could filter out all your running instances that have a certain elasticbeanstalk:environment-name
tag value.
$ aws ec2 describe-instances --filters "Name=tag:elasticbeanstalk:environment-name,Values=your-environment-name"
Above command will give you quite a long JSON output. You could simply find "PublicIpAddress"
in it, however you could filter this information with a tool like jq
. So final command would look something like:
$ aws ec2 describe-instances --filters "Name=tag:elasticbeanstalk:environment-name,Values=your-environment-name" | jq '.Reservations | .[] | .Instances | .[] | .PublicIpAddress'
Try it.
Here is more information about various options for awscli
command used:
aws ec2 describe-instances docs
UPDATE 2017-03-12
jq
is unnecessary, Linux command line tools are unnecessary too. awscli
supports --query
option which can be used to query certain values you're interested in using JMESPath (JSON query language). In this case you would do:
$ aws ec2 describe-instances --filters "Name=tag:elasticbeanstalk:environment-name,Values=your-environment-name" --query 'Reservations[].Instances[].PublicIpAddress' --output text
Above will print plain IP addresses, one per line.