簡體   English   中英

創建 EC2 實例並在可用時獲取公共 IP

[英]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

筆記:

  1. aws ec2查詢都使用默認的 AWS 配置文件。 如果需要,您可以通過--profile your_target_profile_name指定不同的配置文件。
  2. 如果您不知道您的目標實例 ID,您可以刪除aws ec2查詢的--instance-id部分並列出您的所有實例(在您的默認區域中)。 您可以從該列表中選擇所需的實例 ID。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM