AWS CLI で実行環境によって –region を付与しないとコマンドがエラーになるときの対処方法

2021.12.10

困っていた内容

複数の環境(開発環境、検証環境)で、AWS CLI によるコマンド操作を実施しています。環境構成、設定内容はほぼ同等なのですが、同じコマンドを実行しても環境によって--regionパラメータを設定しないと、コマンドがエラーになることがあります。なぜでしょうか?

どう対応すればいいの?

デフォルトリージョンの設定有無をご確認ください。

AWS CLI でコマンドを実行する際は、基本的にリージョンの指定が必要です。リージョンを指定する方法には、大きく3つの方法が提供されており、コマンドに--regionパラメータを付与する方法はその一つです。

  1. --regionパラメータで指定する
  2. AWS_DEFAULT_REGION環境変数で指定する
  3. 設定ファイルのregion設定で指定する

リージョンの指定は上記のいずれかの方法で指定すれば良いため、環境によって--regionパラメータ要否が変わるのは、他の方法でリージョンが指定されているためと推測されます。

そのため、環境毎の設定状況を確認して、必要に応じて設定方法を揃えると、環境によって--regionパラメータの要否が変わる事象を解消することができます。

なお、複数の方法で指定(設定ファイルと--regionパラメータなど)で指定した場合は、優先順位が高い方法のリージョン設定が使用されます。

設定の基本 - AWS Command Line Interface

(優先度:高)

  1. --regionパラメータで指定する
  2. AWS_DEFAULT_REGION環境変数で指定する
  3. 設定ファイルのregion設定で指定する

(優先度:低)

設定状況を確認する方法

設定ファイルでリージョンが設定されているか確認したい場合は、次のコマンドを実行します。

# 設定されている場合
$ aws configure get region
ap-northeast-1
$ 

# 設定されていない場合
$ aws configure get region
$

参考:構成設定の設定および表示

aws configure set

aws configure set を使用して、任意の認証情報または構成設定を設定できます。--profile 設定で表示または変更するプロファイルを指定します。

同様にAWS_DEFAULT_REGION環境変数で指定されているかは、次のコマンドで確認します。

# Windowsの場合
echo %AWS_DEFAULT_REGION%

# Mac、Linuxの場合
echo ${AWS_DEFAULT_REGION}

※設定ファイル同様、何も表示されない場合は、環境変数にリージョンは設定されていません。

参考:環境変数の設定方法

参考資料

You must specify an AWS Region when using the AWS CLI, either explicitly or by setting a default Region.