我们希望直接连接到我们的一个Elastic Beanstalk实例,因此我们需要知道它的public IP address
。
我们通常从aws.console网站的EC2标签中获取实例的public IP
。这很麻烦,因为我们需要网页浏览几页......
我们已从其中一个服务器配置了eb
实用程序,因此我们可以使用eb list
轮询我们的环境,或使用eb status
检查状态。
我们如何使用eb
实用程序来获取环境实例的公共DNS?
或者有没有其他方法可以获取此信息?
谢谢!
答案 0 :(得分:2)
我不是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-03-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地址,每行一个。
答案 1 :(得分:0)
这是一种快速而又肮脏的方式:
ec2-describe-instances $(eb status -v | grep InService | cut -d":" -f1 | awk' {print $ 1}')| grep INSTANCE | awk' {print $ 4}'