AWS-cliを使用して外部からEC2インスタンスのパブリックIPアドレスを取得する[閉じる]

AWS-cliを使用して外部からEC2インスタンスのパブリックIPアドレスを取得する[閉じる]

Amazonの弾力性を活用してAWS cliAWS-cli他のCentos 6サーバーにパッケージをインストールしました。数日間この問題を調査してきましたが、Centos ボックスで実行して Amazon EC2 からインスタンスの IP アドレスを取得できる操作コマンドが見つかりませんでした。 EC2 インスタンスが実行中です。

私が見つけた最も関連性の高い情報は、

aws ec2 describe-instances

しかし、このコマンドから得たものは構文を使用した出力と似ています。また、この情報を抽出するためにスイッチ--queryとキーワードのセットを見つけました(そしてすぐに失われました)。しかし、コマンドを実行すると、--queryパラメータが認識されないという応答が出ます。 Amazonのcli参照を確認しましたが、パラメータのみを許可しているようで、--filter例がまったく機能しないようです。

これを行う方法を知っている人はいますか?

編集する週末に見つかった問題に関する追加情報です。インスタンスからパブリック 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。インスタンスIDはAWSマネジメントコンソールからコピーして貼り付けました。テストするために新しいインスタンスを起動し、同じコマンドをテストしましたが、結果は変わりませんでした。ただし、コマンドを実行すると、ec2-describe-regions問題なく利用可能な地域のリストを表示できます。私は今困惑しています。

ベストアンサー1

EC2インスタンスはインスタンスIDで識別でき、インスタンスを停止して起動してもインスタンスIDは変更されません。したがって、インスタンスIDがあり、その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ライブラリを使用して同じロジックを実装していましたが、はるかに簡単で管理が簡単でした。

仮想環境を設定します。

#!/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

おすすめ記事