如何捕获 CLI 启动的 EC2 实例的 IP 地址以供后续使用?
How do I capture the IP address of a CLI-started EC2 instance for subsequent use?
我经常需要从命令行启动 AWS EC2 实例以通过 SSH 工作,并且想编写一个简短的脚本来执行此操作,但我停留在最基本的步骤上。
例如,我可以开始
aws ec2 start-instances --instance-ids i-84Sd8jdf
并希望继续获取分配给实例的 IP 地址并将其用作环境变量或脚本变量以执行后续操作,例如
ssh ubuntu@<theIP>
或
scp ubuntu@<theIP>:~/soruce_stuff/* ~/dest_folder/
但我不知道如何从 start-instances
命令或其他命令发出的任何 JSON 中获取 IP 地址。
如何编写脚本启动 EC2 实例、获取要分配的 IP 以及捕获分配的 IP 地址以供后续使用?
bash中的一个例子(基于这个优秀的answer),其中实例启动,脚本休眠(在秒中指定),以及public ip 地址保存到局部变量:
aws ec2 start-instances --instance-ids i-aaaa1111
sleep 10
ec2Address=$(aws ec2 describe-instances --instance-ids i-aaaa1111 --query "Reservations[*].Instances[*].PublicIpAddress" --output=text)
验证:
echo $ec2Address
11.1.111.111
Amazon 提供等待条件以等待实例准备就绪,然后您才能在其上执行其他任务。这是一个可能对您有所帮助的示例
aws ec2 start-instances --instance-ids $instance_id
aws ec2 wait instance-running --instance-ids $instance_id
aws ec2 describe-instances --instance-ids $instance_id --output text|grep ASSOCIATION |awk '{print }'|head -1
我经常需要从命令行启动 AWS EC2 实例以通过 SSH 工作,并且想编写一个简短的脚本来执行此操作,但我停留在最基本的步骤上。
例如,我可以开始
aws ec2 start-instances --instance-ids i-84Sd8jdf
并希望继续获取分配给实例的 IP 地址并将其用作环境变量或脚本变量以执行后续操作,例如
ssh ubuntu@<theIP>
或
scp ubuntu@<theIP>:~/soruce_stuff/* ~/dest_folder/
但我不知道如何从 start-instances
命令或其他命令发出的任何 JSON 中获取 IP 地址。
如何编写脚本启动 EC2 实例、获取要分配的 IP 以及捕获分配的 IP 地址以供后续使用?
bash中的一个例子(基于这个优秀的answer),其中实例启动,脚本休眠(在秒中指定),以及public ip 地址保存到局部变量:
aws ec2 start-instances --instance-ids i-aaaa1111
sleep 10
ec2Address=$(aws ec2 describe-instances --instance-ids i-aaaa1111 --query "Reservations[*].Instances[*].PublicIpAddress" --output=text)
验证:
echo $ec2Address
11.1.111.111
Amazon 提供等待条件以等待实例准备就绪,然后您才能在其上执行其他任务。这是一个可能对您有所帮助的示例
aws ec2 start-instances --instance-ids $instance_id
aws ec2 wait instance-running --instance-ids $instance_id
aws ec2 describe-instances --instance-ids $instance_id --output text|grep ASSOCIATION |awk '{print }'|head -1