Amazon의 탄력성을 활용하고 AWS cli
. AWS-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 Management Console에서 복사하여 붙여넣었습니다. 테스트하기 위해 새 인스턴스를 시작하고 동일한 명령을 테스트했지만 결과는 다르지 않았습니다. 하지만 명령을 실행하면 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 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
답변2
아래와 같이 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
이 파일의 영역 속성 값은 인스턴스가 위치한 영역과 다를 가능성이 높습니다. 따라서 귀하가 전화하는 지역은 귀하가 있어야 한다고 생각하는 지역과 다릅니다. 작동하지 않는 다른 이유는 없습니다.
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
콘솔에서 여러 번 클릭 해야 하거나 단순히 불가능합니다.
현재는 인스턴스를 시작/중지할 수 없지만 앞으로 며칠 내에 제공될 예정입니다.