62 votes

Comment savoir si une machine est une instance EC2

Je voudrais exécuter des scripts sur des hôtes qui sont des instances EC2 mais je ne sais pas comment être sûr que l'hôte est vraiment une instance EC2.

J'ai fait quelques tests, mais ce n'est pas suffisant :

  • Tester que le binaire ec2_userdata est disponible (mais ce ne sera pas toujours vrai)
  • Test de disponibilité de " http://169.254.169.254/latest/meta-data "(mais cela sera-t-il toujours vrai ? et qu'est-ce que ce "IP magique" ?)

2voto

Brooks Points 91

J'arrive un peu tard, mais je suis tombé sur ce billet et j'ai ensuite trouvé cette documentation AWS :

Pour une méthode définitive et cryptographiquement vérifiée d'identification d'une instance EC2, vérifiez le document d'identité de l'instance, y compris sa signature. Ces documents sont disponibles pour chaque instance EC2 à l'adresse locale, non routable. http://169.254.169.254/latest/dynamic/instance-identity/

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/identify_ec2_instances.html

Bien entendu, cela nécessite une surcharge du réseau, mais vous pouvez définir le délai d'attente de curl comme suit :

curl -s --connect-timeout 5 http://169.254.169.254/latest/dynamic/instance-identity/

Cela fixe le délai d'attente à 5s.

1voto

algal Points 111

Si curl est installé sur votre ordinateur, cette commande renverra 0 si vous travaillez avec EC2 et une valeur différente de zéro dans le cas contraire :

curl --max-time 3 http://169.254.169.254/latest/meta-data/ami-id 2>/dev/null 1>/dev/null`

Il essaie d'extraire les métadonnées EC2 déclarant l'AMI-ID. Si cela n'aboutit pas après 3 secondes, il suppose qu'il ne fonctionne pas dans EC2.

0voto

CODE-REaD Points 155

Je suis impressionné par les nombreuses réponses à cette question. Leur lecture m'a convaincu qu'il n'existe actuellement aucune réponse simple et fiable. J'espère qu'Amazon fournira une meilleure solution ; en attendant, voici ma réponse simple (pour les systèmes *NIX) à la question originale, Comment savoir si une machine est une instance EC2 :

test -x /usr/bin/aws && echo This is an AWS instance || echo This is not an AWS instance

Attention : Je suppose que quelqu'un peut installer le CLI AWS sur une instance non-EC2, mais cela semble peu probable.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X