我不是EB CLI的用戶。但是,您可以使用awscli
通過1個命令實現您想要的功能。
首先安裝和配置awscli
:
$ pip install awscli
$ aws configure
ElasticBeanstalk自動標記EC2實例是與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 describe-instances docs
UPDATE 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地址,每行一個。
Ubuntu要求我安裝'jq'utility。但是,我發佈了一個不需要這個的困境的答案。我給你一個upvote,因爲'describe-instances'是要走的路,儘管我使用了'ec2-describe-instances'這可能是一個過時的API ... – arod
你可以只使用grep/awk/perl代替使用'jq '以及:)與標準工具箱相比,這是一個非常方便的使用JSON的工具。 –
@arod在沒有外部工具的情況下查看非常乾淨的語法的更新答案。 –