从控制台的其中一个Elastic Beanstalk实例获取公共DNS

时间:2016-12-05 20:24:49

标签: amazon-web-services amazon-ec2 elastic-beanstalk eb

我们希望直接连接到我们的一个Elastic Beanstalk实例,因此我们需要知道它的public IP address

我们通常从aws.console网站的EC2标签中获取实例的public IP。这很麻烦,因为我们需要网页浏览几页......

我们已从其中一个服务器配置了eb实用程序,因此我们可以使用eb list轮询我们的环境,或使用eb status检查状态。

我们如何使用eb实用程序来获取环境实例的公共DNS?

或者有没有其他方法可以获取此信息?

谢谢!

2 个答案:

答案 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}'