2016-12-05 13 views
1

私たちはElastic Beanstalkのインスタンスに直接接続したいので、public IP addressを知る必要があります。コンソールからElastic Beanstalkインスタンスの1つからパブリックDNSを取得する

通常、インスタンスのpublic IPは、aws.console WebサイトのEC2タブから取得します。私達は私達が私達のサーバーのいずれかからebユーティリティを設定しているので、私たちはeb listと私たちの環境をポーリング、またはeb statusで状態を確認できるWebページのカップルを閲覧...

を必要とするので、これは面倒です。

ebユーティリティを使用して、環境のインスタンスのパブリックDNSを取得するにはどうすればよいですか?

この情報を入手するには他に方法がありますか?

ありがとうございました!

答えて

1

私はEB CLIのユーザーではありません。しかし、あなたは1つのコマンドでawscliを使ってあなたが望むものを達成することができます。

まず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

UPDATE 2017年3月12日

jqは不要であり、Linuxのコマンドラインツールも不要です。 awscliはオプションをサポートしています。このオプションを使用して、JMESPath (JSON query language)を使用して特定の値をクエリできます。この場合、あなたはどうなる:

$ aws ec2 describe-instances --filters "Name=tag:elasticbeanstalk:environment-name,Values=your-environment-name" --query 'Reservations[].Instances[].PublicIpAddress' --output text

上記は、1行に1つずつ、プレーンIPアドレスを表示します。

+0

Ubuntuでは、 'jq'ユーティリティをインストールするように求められます。しかし、私はこれを必要としないジレンマに答えました。私が 'ec2-describe-instances'を使っていたとしても、' describe-instances'が行く方法だったので、私はあなたにupvoteを与えています... – arod

+0

'jqを使う代わりにgrep/awk/'同様に、標準ツールキットと比較してJSONを扱うのに便利なツールです。 –

+0

@arod外部ツールのない、きれいな構文の更新された回答を参照してください。 –

0

これは、迅速かつ汚い方法です:

EC2-説明-インスタンス$(EBステータス-v | grepをするINSERVICE |カット-d ":" -f1 | awkの '{$ 1印刷}')| grep INSTANCE | awk '{print $ 4}'

関連する問題