AWS-Metadaten: Überprüfen Sie, ob die EC2-Instanz vor Ort ist.


7

Es gibt einen AWS-Metadatendienst , der einige Informationen zur EC2-Instanz bereitstellt, an die eine Anforderung gesendet wird http://169.254.169.254/. Ich frage mich, ob es eine Möglichkeit gibt, anhand dieser Metadaten zu erkennen, ob die Instanz "Spot" oder "On Demand" ist.

Antworten:


8

Die Informationen sind in den Metadaten nicht verfügbar.

Sie können jedoch die Instanz-ID aus den Metadaten abrufen und dann ec2-description-instance aufrufen, um Instanzinformationen zu Ihrer Instanz abzurufen. In dieser Instanzbeschreibung befindet sich die Spot-Instanz-Anforderungs-ID. Wenn leer, ist es keine Spot-Instanz, andernfalls ist es eine Spot-Instanz.


Nett! Vielen Dank, ich habe eine Weile danach gesucht und muss es beim Betrachten der Instanzdaten übersehen haben.
SaxDaddy

3

Ich glaube nicht, dass sie diese Informationen in den Metadaten haben.

Sie können Instanzen, die Sie als Spot-Instanzen starten, ein anderes Profil zuweisen und anhand des Profilnamens bestimmen, um welchen Instanztyp es sich handelt. Wenn dies keine saubere oder praktikable Lösung zu sein scheint, können Sie jederzeit die Instanz-ID aus den Metadaten abrufen und den Befehl ausführen, ec2-describe-spot-instance-requests --filter instance-id=<instanceid>wenn der Befehl leer zurückgegeben wird, da die Instanz keine Spot-Instanz ist. Wenn der Befehl mit Daten zurückgegeben wird, ist dies der Fall eine Spot-Instanz.


3

Ich weiß, das ist super alt, aber wenn jemand einen Einzeiler will:

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'

Passen Sie dies --regionentsprechend an

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


2

Eine etwas verbesserte Version von @urjit:

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 "$(wget -q -O - http://169.254.169.254/latest/meta-data/placement/availability-zone | sed 's/.$//')" | \
  jq -r '.SpotInstanceRequests | if length > 0 then "Ec2Spot" else "OnDemand" end'
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.