AWS元資料:檢查EC2執行個體是否現貨?

AWS元資料:檢查EC2執行個體是否現貨?

有一個AWS 元資料服務,它提供有關向 發出請求的 EC2 執行個體的一些資訊http://169.254.169.254/。我想知道是否有辦法從該元資料中了解實例是「現貨」還是「按需」?

答案1

該資訊在元資料中不可用。

但是,您可以從元資料中取得實例 ID,然後呼叫 ec2-describe-instances 來取得有關您的實例的實例資訊。此實例描述中包含現貨實例請求 ID。如果為空,則它不是競價實例,否則,它是競價實例。

答案2

我不相信他們的元數據中有此資訊。

您可以為作為競價實例啟動的實例指派不同的設定文件,並使用設定檔名稱來確定實例的類型。如果這看起來不是一個乾淨或可行的解決方案,您可以隨時從元數據中獲取實例 ID,然後運行該命令(ec2-describe-spot-instance-requests --filter instance-id=<instanceid>如果該命令返回空,則該實例不是現貨實例),如果該命令返回數據,則它是一個現貨實例。

答案3

我知道這已經太舊了,但如果有人想要單襯:

aws ec2 describe-spot-instance-requests \
  --filters Name=instance-id,Values="$(wget -q -O - http://169.254.169.254/latest/meta-data/instance-id)" \
  --region us-east-1 | \
  jq -r '.SpotInstanceRequests | if length > 0 then "spot" else "normal" end'

--region相應調整

https://gist.github.com/urjitbhatia/c5af8a3d53661cb3d4e896feae23fc1d

答案4

看起來事情隨著時間的推移而發生了變化,所以現在可以了

# a spot instance
$ curl -s --fail http://169.254.169.254/latest/meta-data/instance-life-cycle
spot
# a normal instance
$ curl -s --fail http://169.254.169.254/latest/meta-data/instance-life-cycle
on-demand

相關內容