Há umMetadados AWSserviço que fornece algumas informações sobre a instância EC2 que emite uma solicitação para http://169.254.169.254/
. Gostaria de saber se existe uma maneira de saber a partir desses metadados se a instância é "Spot" ou "On Demand"?
Responder1
A informação não está disponível nos metadados.
No entanto, você pode obter o ID da instância nos metadados e, em seguida, chamar ec2-describe-instances para obter informações sobre sua instância. Dentro dessa descrição da instância está o ID da solicitação da instância spot. Se estiver em branco, então não é uma instância spot; caso contrário, é uma instância spot.
Responder2
Não acredito que eles tenham essa informação nos metadados.
Você pode atribuir um perfil diferente para instâncias executadas como instâncias spot e usar o nome do perfil para determinar que tipo de instância é. Se isso não parecer uma solução limpa ou viável, você sempre pode obter o ID da instância dos metadados e executar o comando ec2-describe-spot-instance-requests --filter instance-id=<instanceid>
se o comando retornar vazio, então a instância não é uma instância spot, se o comando retornar com dados, então é uma instância pontual.
Responder3
Eu sei que isso é muito antigo, mas se alguém quiser uma frase:
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'
Ajuste --region
de acordo
https://gist.github.com/urjitbhatia/c5af8a3d53661cb3d4e896feae23fc1d
Responder4
Parece que as coisas mudaram com o passar dos anos, então agora funciona
# 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