web-dev-qa-db-fra.com

En utilisant aws cli, quelle est la meilleure façon de déterminer la région actuelle

De manière interactive, je peux utiliser "aws configure" pour changer ou voir la région par défaut. Existe-t-il une fonction de type "pwd", documentée ou non, qui me permet de déterminer ou de confirmer le mid-script de la région actuelle? Même si AWS_DEFAULT_REGION n'est pas défini? Je veux qu'un script s'exécute sous plusieurs profils. Je peux gratter de la liste de configuration aws, mais y a-t-il quelque chose de plus soigné?

20
mckenzm

aws configure get region vous donnera la région actuelle à ce point de votre script.

Si vous utilisez un profil, saisissez aws configure get --profile $PROFILE_NAME.

26
Jeshan Babooa

Peut-être, AWS n'a pas fourni pour obtenir la région actuelle. Cependant, au lieu d'obtenir la région actuelle, ils prévoient d'obtenir une zone de disponibilité actuelle via une métadonnée d'instance. Toutes les zones de disponibilité incluent une région actuelle, vous pouvez donc déterminer la région actuelle en remplaçant une partie de la zone de disponibilité actuelle dans un script sur l'instance EC2.

Par exemple:

curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone | sed 's/\(.*\)[a-z]/\1/'
18
NSR

aws configure get region est bien mais je voulais pouvoir connaître la région même quand AWS_DEFAULT_REGIONétait défini. Malheureusement, selon la documentation:

Notez que aws configure get ne regarde que les valeurs du fichier de configuration AWS. Il ne résout pas les variables de configuration spécifiées ailleurs, y compris les variables d'environnement, les arguments de ligne de commande, etc.

À la place, en supposant que vous avez Python et boto3 installés, vous pouvez exécuter:

python -c 'import boto3;print(boto3.Session().region_name)'

Par exemple.

$ AWS_DEFAULT_REGION=us-east-1 python -c 'import boto3;print(boto3.Session().region_name)'
us-east-1
4
Alastair McCormack

ceci est le chemin

aws configure get region
1
kahmed

La région est la suivante:

curl http://169.254.169.254/latest/dynamic/instance-identity/document

Alors...

curl http://169.254.169.254/latest/dynamic/instance-identity/document|grep region|awk -F\" '{print $4}'
1
J Roysdon

Si vous avez des informations sur la région pour vos profils dans .aws/config, vous pouvez procéder comme suit:

Exemple de .aws/config ( notez que le profil dev est appelé profile dev). Le profile Word est imporant .

[default]
region = ap-southeast-2

[profile dev] 
region = us-east-1

Ensuite, en utilisant cli, vous pouvez:

aws configure get profile.default.region

qui donne ap-southeast-2 et

aws configure get profile.dev.region

qui donne us-east-1.

0
Marcin

Tiré du commentaire de @ RichVel dans cette réponse , pour obtenir la région résolue définie à partir de AWS_DEFAULT_REGION ou la région du fichier de configuration aws (aws configure get region ne donne que la valeur définie dans le fichier de configuration) utilisez:

aws configure list | grep region | awk '{print $2}'

Exemple:

avec $AWS_DEFAULT_REGION non défini:

$ echo $AWS_DEFAULT_REGION

$ cat ~/.aws/credentials
[foo]
region = us-east-1
$ aws configure list | grep region | awk '{print $2}'
us-east-1
$ aws configure get region
us-east-1

avec $AWS_DEFAULT_REGION ensemble:

$ export AWS_DEFAULT_REGION=us-west-2
$ echo $AWS_DEFAULT_REGION
us-west-2
$ cat ~/.aws/credentials
[foo]
region = us-east-1
$ aws configure list | grep region | awk '{print $2}'
us-west-2
$ aws configure get region
us-east-1
0
kleaver