[英]How to get public ip of an EC2 instance from aws CLI by instance id?
[英]Create EC2 instance and get public IP when available
我有一項單調的工作是從 AMI 創建一個 ec2 實例,然后 ssh 進入它並運行一個加密機器人來獲取它的子域 SSL 證書,然后在它上面運行一些前端和后端。
我想自動化這個...
我能夠創建 EC2 實例
aws ec2 run-instances --image-id ami-0bef9cfcxxxxxx --count 1 --instance-type t2.medium --key-name MyKey --security-group-ids SG-1 --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=SubDomain}]'
但是我如何等到實例啟動並獲取公共 IP 以進行下一步?
任何建議都會有所幫助,
謝謝!
假設您知道目標實例 ID,您可以通過以下方式查詢您的實例並獲取當前狀態、instanceId、名稱(假設您用名稱標記它們)和公共 IP:
aws ec2 describe-instances \
--instance-ids YOUR_TARGET_INSTANCE_ID \
--query "Reservations[*].Instances[*].[State.Name, InstanceId, Tags[?Key==\`Name\`]|[0].Value, PublicIpAddress]" \
--output text
您可以循環運行此查詢,直到狀態恢復為正在運行,然后捕獲公共 IP 地址:
while :
do
output=$(aws ec2 describe-instances \
--instance-ids YOUR_TARGET_INSTANCE_ID \
--query "Reservations[*].Instances[*].[State.Name, InstanceId, \
Tags[?Key==\`Name\`]|[0].Value, PublicIpAddress]" \
--output text)
if [[ "${output}" == running* ]] ; then
cut -d $'\t' -f4- <<<"${output}"
break
fi
done
筆記:
aws ec2
查詢都使用默認的 AWS 配置文件。 如果需要,您可以通過--profile your_target_profile_name
指定不同的配置文件。aws ec2
查詢的--instance-id
部分並列出您的所有實例(在您的默認區域中)。 您可以從該列表中選擇所需的實例 ID。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.