web-dev-qa-db-ja.com

aws cliを使用して、現在のリージョンを特定する最良の方法

対話的に、「aws configure」を使用して、デフォルトのリージョンを変更または表示できます。 「pwd」のような関数はありますか。文書化されているかどうかに関係なく、現在の領域のスクリプトの中間を決定または確認できますか? AWS_DEFAULT_REGIONが定義されていなくても?複数のプロファイルでスクリプトを実行したい。私はaws設定リストからこすることができますが、もっとすてきなものはありますか?

20
mckenzm

aws configure get regionは、スクリプトのその時点での現在のリージョンを取得します。

プロファイルを使用している場合は、aws configure get --profile $PROFILE_NAME

26
Jeshan Babooa

おそらく、AWSは現在のリージョンを取得する機能を提供していません。ただし、現在のリージョンを取得する代わりに、インスタンスメタデータを介して現在のアベイラビリティーゾーンを取得できます。すべてのアベイラビリティーゾーンには現在のリージョンが含まれているため、EC2インスタンスのスクリプトで現在のアベイラビリティーゾーンの一部を置き換えることで、現在のリージョンを特定できます。

例えば:

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

aws configure get regionはすっきりしていますが、AWS_DEFAULT_REGIONだったセット。残念ながら、ドキュメントによると:

Aws configure getはAWS構成ファイルの値のみを確認することに注意してください。環境変数、コマンドライン引数など、他の場所で指定された構成変数は解決しません。

代わりに、Python=およびboto3がインストールされていると仮定すると、次のコマンドを実行できます。

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

例えば。

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

これが道です

aws configure get region
1
kahmed

地域は次のとおりです。

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

そう...

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

.aws/configにプロファイルの地域情報がある場合、次のようにできます。

.aws/configの例(devプロファイルはprofile devと呼ばれます)。 profile Wordは 重要 です。

[default]
region = ap-southeast-2

[profile dev] 
region = us-east-1

次に、cliを使用して、次のことができます。

aws configure get profile.default.region

ap-southeast-2

aws configure get profile.dev.region

us-east-1が得られます。

0
Marcin

@RichVelのコメント この回答では から取得し、AWS_DEFAULT_REGIONまたはaws構成ファイル(aws configure get region内の領域から解決された領域セットを取得するには、設定ファイル)使用:

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

例:

$AWS_DEFAULT_REGIONが未設定の場合:

$ 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

$AWS_DEFAULT_REGIONセット:

$ 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