私は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アドレスを表示します。
Ubuntuでは、 'jq'ユーティリティをインストールするように求められます。しかし、私はこれを必要としないジレンマに答えました。私が 'ec2-describe-instances'を使っていたとしても、' describe-instances'が行く方法だったので、私はあなたにupvoteを与えています... – arod
'jqを使う代わりにgrep/awk/'同様に、標準ツールキットと比較してJSONを扱うのに便利なツールです。 –
@arod外部ツールのない、きれいな構文の更新された回答を参照してください。 –