Получение общедоступного IP-адреса экземпляра EC2 извне с использованием AWS-cli

Я пытаюсь использовать эластичность Amazon и приводить примеры в Интернете и использовать AWS cli . Но, как вы знаете, каждый раз, когда вы автономно подключаете систему и возвращаете ее к жизни, она поставляется с новым IP-адресом. У меня есть пакет AWS-cli , установленный на моем сервере Centos 6, расположенном в другом месте. Я изучаю это уже несколько дней и не могу найти рабочую команду, которую я могу выдать из своего окна Centos и получить IP-адрес экземпляра в Amazon EC2. Экземпляр EC2 запущен и работает.

Наиболее релевантная информация, которую я нашел, была

  • Как понимать понятия файловой системы, используемые encfs?
  • Каковы стандартные коды ошибок в Linux?
  • Как изменить файл systemctl с помощью сценария оболочки или boto в aws
  • Как я могу очистить часть того, что вводится в приглашение, работая в Linux и используя C-shell?
  • Как иметь хвост -f показать цветной выход
  • Есть ли более сжатая альтернатива трубопроводу для wc для подсчета файлов в каталоге
  •  aws ec2 describe-instances 

    но все, что я получаю от этой команды, – это что-то вроде вывода синтаксиса использования. Я также обнаружил (и сразу потерял) переключатель --query за которым следует набор ключевых слов, чтобы извлечь эту информацию. Но эта команда дала мне ответ, сказав: « --query не является признанным аргументом. Я проверил ссылку --filter Amazon для этой команды, и только параметр, который, по-видимому, принимает, – это --filter и примеры далеко не полезны.

    Кто-нибудь знает, как это сделать?

    EDIT Еще о проблеме, которую я обнаружил в выходные. Перед моей попыткой получить информацию об общедоступной DNS из экземпляра мне нужен способ подключения к этому экземпляру. Я не могу получить информацию о случаях, которые у меня есть, независимо от того, что я делаю:

     $ ec2-describe-instances i-b78a096f sanity-check: Your system clock is 50 seconds behind. +----------------------------+---------------------------------------------+ | Code | Message | +----------------------------+---------------------------------------------+ | InvalidInstanceID.NotFound | The instance ID 'i-b78a096f' does not exist | +----------------------------+---------------------------------------------+ 

    Я знаю, что мои переменные AWS_ACCESS_KEY и AWS_SECRET_KEY правильно назначены соответствующим именам переменных. Идентификатор экземпляра был скопирован и вставлен с консоли управления AWS. Чтобы протестировать, я развернул новый экземпляр и протестировал ту же команду против него без какого-либо другого результата. Хотя, когда я запускаю команду ec2-describe-regions , я вижу список регионов, доступный мне без проблем. Я сейчас ошарашен.

  • Более быстрый способ рекурсивно изменить владельца / группу?
  • ssh-add жалуется: не удалось открыть соединение с вашим агентом аутентификации
  • сопоставление шаблонов без эха
  • Как узнать, какая служба работает на конкретном порту в Linux?
  • Удерживать и отпускать задания печати CUPS из командной строки
  • Используйте регулярное выражение, чтобы проверить, имеет ли конкретный каталог папки, начиная с определенного слова
  • 2 Solutions collect form web for “Получение общедоступного IP-адреса экземпляра EC2 извне с использованием AWS-cli”

    Эквалайзер ec2 можно идентифицировать по его идентификатору экземпляра, который никогда не изменится, независимо от того, сколько раз вы прекращаете запуск экземпляра. поэтому вы можете попробовать это, если у вас есть идентификатор экземпляра, и вам нужен его IP-адрес.

    для публичного IP-адреса

     aws ec2 describe-instances --instance-ids i-b78a096f | grep PublicIpAddress | awk -F ":" '{print $2}' | sed 's/[",]//g' 

    для частного ip-адреса

     aws ec2 describe-instances --instance-ids i-b78a096f | grep PrivateIpAddress | head -1 | awk -F ":" '{print $2}' | sed 's/[",]//g' 

    Тем не менее, я лично считаю, что было бы намного лучше, если бы вы попытались сделать то же самое в python, я реализовал такую ​​же логику в своей предыдущей организации с библиотекой python boto, и это было намного проще и управляемо.

    настройка виртуального env.

     #!/usr/bin/env bash set -e HOME_DIR=/home/$(whoami) #Dependencies sudo apt-get install ncurses-devel patch openssl openssl-devel zlib-devel # Install python locally mkdir -p $HOME_DIR/src mkdir -p $HOME_DIR/.localpython cd $HOME_DIR/src wget https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz tar -zxvf Python-2.7.8.tgz cd Python-2.7.8 ./configure --prefix=$HOME_DIR/.localpython make make install # Install virtualenv locally cd $HOME_DIR/src wget --no-check-certificate https://pypi.python.org/packages/source/v/virtualenv/virtualenv-1.11.6.tar.gz#md5=f61cdd983d2c4e6aeabb70b1060d6f49 tar -zxvf virtualenv-1.11.6.tar.gz cd virtualenv-1.11.6/ ~/.localpython/bin/python setup.py install # Create a test virtual environment mkdir -p $HOME_DIR/virtualenvs cd $HOME_DIR/virtualenvs ~/.localpython/bin/virtualenv my_virtual_env --python=$HOME_DIR/.localpython/bin/python2.7 cd my_virtual_env source bin/activate pip install awscli 

    Вы можете использовать команды start-instances и stop-instances для запуска / остановки экземпляра следующим образом:

     aws ec2 stop-instances --instance-ids i-b78a096f aws ec2 start-instances --instance-ids i-b78a096f 

    Вы увидите, что вы не укажете имя региона в командной строке, потому что AWS cli считывает информацию о регионе из <user_home_directory>/.aws/config . Этот файл выглядит следующим образом:

     [default] output = json region = us-east-1 

    Наибольшее значение атрибута region в этом файле отличается от региона, в котором находится экземпляр. Таким образом, вы звоните в регион, отличный от того, что, по вашему мнению, должно идти. Я не вижу другой причины, почему это не сработает.

    Чтобы проверить, какое значение области AWS cli работает, просто вызовите aws configure из командной строки. Он задаст вам вопрос о ключах aws, секретности, области и ответа. В то же время он покажет значения, которые будут использоваться, если вы не укажете какое-либо значение.

    Я использую AWS cli в таких сценариях, где управление AWS из командной строки происходит намного быстрее. Однако я создал инструмент с открытым исходным кодом для визуализации многих ресурсов AWS в то же время, которые могут оказаться полезными –

     https://github.com/pistonportal/custom-turbine/wiki/Running-and-operating-Turbine-app 

    Например, вы можете открыть VPC Designer в этом инструменте и посмотреть, к чему относятся все зоны доступности VPC, в каких подсети находятся зоны доступности и какие виртуальные машины находятся в подсетей. Это то, что требует много кликов в консоли AWS или вообще не возможно.

    В настоящий момент у него нет возможности запускать / останавливать экземпляр, но это будет доступно в ближайшие несколько дней.

    Linux и Unix - лучшая ОС в мире.