Trouver une région de l'intérieur une instance EC2
Est-il un moyen de regarder pour la région d'une instance de l'instance?
Je suis à la recherche de quelque chose de similaire à la méthode de trouver l'id d'instance.
- double possible de Trouver l'id de l'instance de l'intérieur ec2 machine
- Bref, la réponse pour tous ceux qui ne se soucient pas de tous les scripts shell: obtenir la zone de disponibilité de
http://169.254.169.254/latest/meta-data/placement/availability-zone
et de supprimer le dernier caractère.
Vous devez vous connecter pour publier un commentaire.
Cette URL (http://169.254.169.254/latest/dynamic/instance-identity/document) qui ne fonctionne pas plus. J'obtiens une erreur 404 quand j'ai essayé de l'utiliser. J'ai le code suivant qui semble fonctionner bien:
Espère que cette aide.
EDIT: Amélioration de la
sed
sur la base des observationsec2-metadata
est juste un wrapper pour cette API, mais fait essentiellement la même chose.sed 's/[a-z]$//
http://169.254.169.254/latest/dynamic/instance-identity/document
dansus-west-2
(Oregon). Ne sais pas si c' n'est pas de travail, mais il a certainement est de travail (pour moi!) maintenant.echo "${EC2_AVAIL_ZONE: : -1}"
. En bash 4.2+, vous pouvez supprimer l'espace entre les deux:
.sed
et bashisms, vous pouvez utiliser ce beaucoup plus portable de substitution:EC2_REGION=${EC2_AVAIL_ZONE%?}
sed
:sed 's/.$/'
parce que le.
dans l'expression rationnelle correspond à un seul caractère.sed
de dannosaur) comme suit :"${EC2_AVAIL_ZONE%[a-z]}"
AWS_DEFAULT_REGION=`curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone | sed 's/[a-z]$//'`
Il existe un autre moyen de parvenir à ce que:
404 - Not Found
essayer deGET
que l'URL à partir d'une machine dansus-east-1a
.curl -s http://169.254.169.254/latest/dynamic/instance-identity/document | jq -r .region
curl -s http://169.254.169.254/latest/dynamic/instance-identity/document | awk -F\" '/region/ {print $4}'
Si vous êtes OK avec l'aide de
jq
, vous pouvez exécuter les opérations suivantes:Je suppose que c'est la façon la plus propre.
ec2-metadata --availability-zone | sed 's/placement: \(.*\).$/\1/'
ec2-metadata
ne semble pas être quelque chose qui est disponible par défaut - peut-on inclure des instructions d'installation?Vous pouvez utiliser ec2-métadonnées:
eu-central-1
vous êtes foutu.central
n'existait pas quand j'ai écrit ma réponse. Il est ajouté à maintenant.awk '{split($2,arr,"-"); print arr[1]"-"arr[2]}'
gardera seulement les deux premières composantes de l'AZ nom.Si vous voulez éviter d'expression régulière, voici un one-liner que vous pouvez faire avec Python:
La plus simple que j'ai trouvé jusqu'à présent
très simple doublure
curl: (6) Could not resolve host: instance-data; Name or service not known
erreur.Si vous avez jq installé, vous pouvez aussi aller à ce sujet (sans doute le plus "gracieux" de la méthode) de cette façon:
Cela renvoie simplement la valeur brute de la "région", sans aucune impression ou de mise en forme.
Référence: AWS Forum
Obtenir de la région de la zone de disponibilité, de dépouiller la dernière lettre d'elle.
Utilisation JQ:
Si vous êtes en mesure d'utiliser AWS SDK Java, il existe maintenant une méthode qui retourne le nom de la région (tels que les "us-east-1", "eu-west-1"):
http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/regions/Regions.html#getCurrentRegion()
C'est la solution la plus propre que j'ai trouvé:
curl -s http://169.254.169.254/latest/dynamic/instance-identity/document |sed -n 's/ "region" : "\(.*\)"/\1/p'
E. g.,
export REGION=$(curl -s http://169.254.169.254/latest/dynamic/instance-identity/document |sed -n 's/ "region" : "\(.*\)"/\1/p')
Grâce à https://unix.stackexchange.com/a/144330/135640, avec bash 4.2+ on peut simplement enlever le dernier char de la zone de disponibilité:
Cela suppose AWS continue à utiliser un seul caractère, les zones de disponibilité annexé à la région.
region=${region%?}
Pour tous ceux qui veulent le faire avec le bon vieux powershell
Ou de ne pas faire d'Ubuntu ou de cet outil d'une exigence, et il suffit de faire:
Si vous travaillez avec json - utiliser les bons outils. jq beaucoup plus puissants dans ce cas.
2 lignes qui fonctionne aussi longtemps que vous utilisez ec2.l'intérieur comme à votre domaine de recherche:
Cela fonctionne pour l'ue-centrale-1 ainsi que les différents lettre zones. (Je n'ai pas assez de rep pour répondre à la dsi réponse ci-dessus)
ec2metadata --availability-zone | sed 's/.$//'
(sans tiret)Si vous êtes en cours d'exécution sur windows, vous pouvez utiliser cette powershell one-liner:
A également été à la recherche d'une solution pour trouver de la région de l'instance et voici mon pur Bash solution:
sauf si il y a des régions où AZ a plus de deux lettres, dont je ne suis pas au courant.
Pour trouver des informations sur l'EC2 vous êtes connecté, vous pouvez utiliser le
ec2-les métadonnées de l'outil.
Vous pouvez installer l'outil en suivant de ce lien.
Après l'installation de l'outil, vous pouvez exécuter
# ec2-metadata -z
pour découvrir la région.
Cette outils est installé avec la dernière version (10.10) Ubuntu AMIs,
ec2-metadata -z
ne montre que la zone de disponibilité, pas de la région.Si vous êtes à la recherche pour obtenir de l'aide JS, cela devrait fonctionner :
Cette cartographie trouvé de AWS DOCS, en réponse à l'API de métadonnées appeler, il suffit de couper le dernier caractère doit travailler.
ec2metadata
(pas de tiret) est la commande en cours pour vous fournir tous les aws hébergement d'infos sur votre ec2 boîte. c'est la plus élégante et sûre d'approche. (ec2-metadata
est l'ancien, n'est plus valide la commande.)ec2metadata
-bash: ec2metadata: command not found