Получить общедоступный 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}'