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

相关内容