2016-12-05 31 views
1

我們希望直接連接到我們的Elastic Beanstalk實例之一,因此我們需要知道它的public IP address從控制檯的其中一個Elastic Beanstalk實例獲取公共DNS

我們通常從aws.console網站的EC2選項卡獲取實例的public IP。這是麻煩,因爲我們需要的網頁瀏覽幾頁......

我們已經配置從我們的服務器之一eb實用,所以我們可以查詢我們的環境與eb list,或eb status檢查狀態。

我們如何使用eb實用程序來獲取環境實例的公共DNS?

或者有沒有其他的方式來獲取這些信息?

謝謝!

回答

1

我不是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地址,每行一個。

+0

Ubuntu要求我安裝'jq'utility。但是,我發佈了一個不需要這個的困境的答案。我給你一個upvote,因爲'describe-instances'是要走的路,儘管我使用了'ec2-describe-instances'這可能是一個過時的API ... – arod

+0

你可以只使用grep/awk/perl代替使用'jq '以及:)與標準工具箱相比,這是一個非常方便的使用JSON的工具。 –

+0

@arod在沒有外部工具的情況下查看非常乾淨的語法的更新答案。 –

0

這是一個快速和骯髒的方式:

EC2-描述-實例$(EB狀態-v | grep的在職|切-d 「:」 -f1 | awk的 '{$打印1}')| grep INSTANCE | awk'{print $ 4}'

相關問題