我们喜欢直接连接到我们的弹性beanstalk实例之一,因此我们需要知道其public IP address
。
通常,我们从AWS.Console网站的EC2选项卡中获取实例的public IP
。这很麻烦,因为我们需要网络浏览几页...
我们已经从我们的一台服务器配置了eb
实用程序,因此我们可以使用eb list
进行轮询环境,或使用eb status
检查状态。
我们如何用eb
实用程序获得环境实例的公共DNS?
或还有其他方法可以获取此信息?
谢谢!
我不是EB CLI的用户。但是,您可以使用awscli
使用1命令来实现想要的目标。
首先安装和配置awscli
:
$ pip install awscli
$ aws configure
ElasticBeanstalk自动标记EC2 Instances ,它是具有elasticbeanstalk:environment-name
标签的ElasticBeanStalk环境的一部分。使用此信息,您可以滤除具有一定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介绍文档
更新2017-03-12
jq
是不必要的,Linux命令行工具也不需要。awscli
支持--query
选项,该选项可用于查询您对使用JMespath(JSON查询语言)感兴趣的某些值。在这种情况下,您会做:
$ aws ec2 describe-instances --filters "Name=tag:elasticbeanstalk:environment-name,Values=your-environment-name" --query 'Reservations[].Instances[].PublicIpAddress' --output text
上面将打印普通的IP地址,每行1个。
这是一种快速而肮脏的方式:
ec2 -deScribe -Instances $(EB状态-V | Grep Inservice | cut -d":" -f1 | awk'{print $ 1}')|GREP实例|awk'{print $ 4}'