Existe-t-il un moyen de rechercher la région d'une instance depuis l'intérieur de l'instance ?
Je cherche quelque chose de similaire à la méthode de trouver l'identifiant de l'instance .
Existe-t-il un moyen de rechercher la région d'une instance depuis l'intérieur de l'instance ?
Je cherche quelque chose de similaire à la méthode de trouver l'identifiant de l'instance .
Cette URL ( http://169.254.169.254/latest/dynamic/instance-identity/document ) ne semble plus fonctionner. J'obtiens un message 404 lorsque j'essaie de l'utiliser. J'ai le code suivant qui semble fonctionner :
EC2_AVAIL_ZONE=`curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone`
EC2_REGION="`echo \"$EC2_AVAIL_ZONE\" | sed 's/[a-z]$//'`"
J'espère que cela vous aidera.
EDIT : Amélioration de sed
sur la base des commentaires
Ceci doit être exécuté à l'intérieur de l'instance EC2 et est alimenté par les backends d'AWS. Il ne fonctionnera nulle part ailleurs (essentiellement parce que cette IP est un APIPA). Il n'y a pas non plus de moyen d'obtenir ces informations directement de l'intérieur de l'instance sans se connecter à une source de métadonnées. Cela suppose que l'API 169.254.169.254 est disponible, et votre script devrait gérer les défaillances du réseau en conséquence. ec2-metadata
est juste une enveloppe pour cette API, mais fait essentiellement la même chose.
En toute honnêteté, lorsque j'ai trouvé cette phrase, j'étais en train de fouiller dans l'API à la recherche de tout ce que je pourrais utiliser pour identifier la région correcte. L'API de métadonnées AWS est entièrement documentée ici : docs.aws.amazon.com/AWSEC2/latest/UserGuide/
Cela devrait-il fonctionner dans n'importe quelle région/zone (et sur n'importe quel AMI) ? Je reçois 404 - Not Found
en essayant de GET
cette URL à partir d'une machine dans us-east-1a
.
@AdamMonsen peut-être était-ce une erreur passagère. Je suis sur us-east-1a et ça marche très bien.
central
n'existait pas lorsque j'ai initialement écrit ma réponse. Elle est ajoutée maintenant.
Un script qui se casse à chaque fois qu'AWS ajoute une nouvelle région ne me semble pas être une solution particulièrement solide.
Mais cela ne fonctionne pas sur la région us-west-1. Retourne curl: (6) Could not resolve host: instance-data; Name or service not known
erreur.
Notez que cela ne fonctionne que parce que actuellement la zone de disponibilité est toujours le nom de la région auquel est ajoutée une lettre minuscule (par exemple, la région est "us-west-1", la zone est "us-west-1a"). Si Amazon rompt un jour ce schéma, la logique ci-dessus ne fonctionnera plus.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
1 votes
Duplicata possible de Trouver l'identifiant de l'instance à partir d'une machine ec2
12 votes
Réponse courte pour tous ceux qui ne se soucient pas de tous les scripts shell : récupérez la zone de disponibilité à partir de
http://169.254.169.254/latest/meta-data/placement/availability-zone
et supprimer le dernier caractère.0 votes
Cela répond-il à votre question ? Comment obtenir l'identifiant de l'instance à partir d'une instance ec2 ?
9 votes
Pour ceux qui lisent après la mi-2020, vous pouvez maintenant utiliser
http://169.254.169.254/latest/meta-data/placement/region