Получить общедоступный DNS из одного из экземпляров Elastic Beanstalk из консоли

Нам нравится подключаться напрямую к одному из наших экземпляров Elastic Beanstalk, поэтому нам нужно знать его public IP address,

Мы обычно получаем public IP экземпляра на вкладке EC2 на веб-сайте aws.console. Это громоздко, потому что нам нужно просмотреть пару страниц в Интернете...

Мы настроили eb утилита с одного из наших серверов, поэтому мы можем опрашивать наши среды с eb listили проверьте статус с помощью eb status,

Как мы можем использовать eb утилита для получения публичного DNS экземпляра окружения?

Или есть какой-то другой способ получить эту информацию?

Спасибо!

2 ответа

Решение

Я не пользователь EB CLI. Однако вы можете достичь того, что вы хотите, с помощью 1 команды, используя awscli,

Сначала установите и настройте awscli:

$ pip install awscli
$ aws configure

ElasticBeanstalk автоматически помечает экземпляры EC2, которые являются частью среды ElasticBeanstalk, с помощью elasticbeanstalk:environment-name тег. Используя эту информацию, вы можете отфильтровать все запущенные экземпляры, которые имеют определенный 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 описать-экземпляры документов

ОБНОВЛЕНИЕ 2017-03-12

jq не нужны, инструменты командной строки Linux тоже не нужны. awscli опоры --query опция, которая может быть использована для запроса определенных значений, в которых вы заинтересованы, используя JMESPath (язык запросов JSON). В этом случае вы бы сделали:

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

Выше будут печататься простые IP-адреса, по одному на строку.

Это быстрый и грязный способ:

ec2-description-instances $(eb status -v | grep InService | cut -d":" -f1 | awk '{print $1}') | grep ИНСТАНЦИЯ | awk '{print $4}'

Другие вопросы по тегам