我不是 EB CLI 的用户。但是,您可以使用 awscli 使用 1 个命令来实现您想要的。
首先安装配置awscli:
$ pip install awscli
$ aws configure
ElasticBeanstalk 使用elasticbeanstalk:environment-name 标签自动标记属于 ElasticBeanstalk 环境一部分的 EC2 实例。使用此信息,您可以过滤掉所有具有特定 elasticbeanstalk:environment-name 标记值的正在运行的实例。
$ aws ec2 describe-instances --filters "Name=tag:elasticbeanstalk:environment-name,Values=your-environment-name"
上面的命令会给你一个很长的 JSON 输出。您可以简单地在其中找到"PublicIpAddress",但是您可以使用jq 之类的工具过滤此信息。所以最终命令看起来像:
$ aws ec2 describe-instances --filters "Name=tag:elasticbeanstalk:environment-name,Values=your-environment-name" | jq '.Reservations | .[] | .Instances | .[] | .PublicIpAddress'
试试看。
以下是有关使用的awscli 命令的各种选项的更多信息:
aws ec2 describe-instances docs
2017 年 3 月 12 日更新
jq 不需要,Linux 命令行工具也不需要。 awscli 支持--query 选项,可用于查询您使用JMESPath (JSON query language) 感兴趣的某些值。在这种情况下,你会这样做:
$ aws ec2 describe-instances --filters "Name=tag:elasticbeanstalk:environment-name,Values=your-environment-name" --query 'Reservations[].Instances[].PublicIpAddress' --output text
上面将打印纯 IP 地址,每行一个。