我正在尝试利用 Amazon 的弹性并使用AWS cli
. 但如您所知,每次您使系统脱机并使其恢复生机时,它都会附带一个新的 IP 地址。我AWS-cli
在位于其他地方的 Centos 6 服务器上安装了软件包。我已经研究这个好几天了,但找不到可以从我的 Centos 机器发出并在 Amazon EC2 上获取实例的 IP 地址的工作命令。EC2 实例已启动并正在运行。
我找到的最相关的信息是
aws ec2 describe-instances
Run Code Online (Sandbox Code Playgroud)
但是我从这个命令中得到的只是一个用法语法输出。我还发现(并很快丢失了)一个开关,--query
后跟一组关键字来提取此信息。但是那个命令给了我一个回应,说--query
不是一个公认的论点。我检查了亚马逊对此命令的 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 |
+----------------------------+---------------------------------------------+
Run Code Online (Sandbox Code Playgroud)
我知道 myAWS_ACCESS_KEY
和AWS_SECRET_KEY
variables 已正确分配给它们正确的变量名称。实例 ID 已从 AWS 管理控制台复制并粘贴。为了测试,我启动了一个新实例并针对它测试了相同的命令,没有不同的结果。虽然,当我运行ec2-describe-regions
命令时,我可以毫无问题地看到可用的区域列表。我现在傻眼了。
小智 9
一个 ec2 实例可以通过它的 instance-id 来标识,无论你停止和启动实例多少次,它都不会改变。因此,如果您有实例 ID 并且需要其 IP 地址,则可以尝试此操作。
对于公共 IP 地址:
aws ec2 describe-instances --instance-ids i-b78a096f | grep PublicIpAddress | awk -F ":" '{print $2}' | sed 's/[",]//g'
Run Code Online (Sandbox Code Playgroud)
对于私有 IP 地址:
aws ec2 describe-instances --instance-ids i-b78a096f | grep PrivateIpAddress | head -1 | awk -F ":" '{print $2}' | sed 's/[",]//g'
Run Code Online (Sandbox Code Playgroud)
不过,我个人认为如果你在 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
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16307 次 |
最近记录: |