編集:私のために働いた解決策は次のとおりです:
export AWS_DEFAULT_PROFILE=user2
完全な質問は、以下のコンテキストです。
(1.)AWS CLIの2番目のプロファイルを正常に構成した後、次のコマンドを使用して、bashセッションでプロファイルをuser2に設定しようとして失敗しました。
export AWS_PROFILE=user2
...ここのアドバイスに従って: https://docs.aws.Amazon.com/cli/latest/userguide/cli-multiple-profiles.html
(2.)次のコマンドが機能します。
aws s3 ls --profile user2
したがって、AWS CLIとuser2プロファイルの両方が私のコンピューターで動作していることがわかります。
(3.)ただし、その後(つまり、「export AWS_PROFILE = user2」と入力した後)は、次のようにしてください。
aws s3 ls
... AWSの応答は、デフォルトのユーザー(user2ではなく)としてクエリを実行することを想定しています
(4.)したがって、コマンドラインからuser2プロファイルを使用できる唯一の方法は、すべてのコマンドに "--profile user2"を追加し続けることであり、これは面倒です。
(5.)
echo $AWS_PROFILE
利回り:
>> user2
、 予想通り。
ここで何が起こっているのでしょうか?きっとどこかでおかしな間違いを犯していると思います。
最もクリーンなソリューションは次のとおりです。
export AWS_DEFAULT_PROFILE=user2
その後、次のようなコマンド:
aws s3 ls
...は適切なアカウントから処理されます。
これがどのように機能するかを見ることができます
$ export AWS_PROFILE=myprofile
$ aws s3 ls --debug 2>&1 | grep profile
2018-04-08 19:19:17,990 - MainThread - botocore.session - DEBUG - Loading variable profile from environment with value 'myprofile'.
私はこれがあなたのために違った働きをするとは思いません。
次のことも確認できます
$ AWS_PROFILE=myprofile aws s3 ls --debug 2>&1 | grep profile
そして
$ aws s3 ls --profile myprofile --debug 2>&1 | grep profile
すべて同じ結果になります。
AWS cliには、変数を読み取る方法が3レベルあります
参照: https://docs.aws.Amazon.com/cli/latest/topic/config-vars.html#credentials
ある方法が別の方法で上書きされます。 OPに基づいて、DEFAULT_PROFILEがuserXとして設定されているにもかかわらず、AWS_ACCESS_KEY_IDまたはAWS_SECRET_ACCESS_KEY環境変数が別の値に設定されている可能性があります。
の使用を通じて現在の環境に資格情報をロードするシェル関数のエイリアスを実行できます
"export AWS_ACCESS_KEY_ID=XXXXXXX;"... and more
またはシークレットマネージャーを介してより安全にロードする
"export AWS_ACCESS_KEY_ID=$(aws configure get aws_access_key_id --profile XXXX)"... and more
すべてのアクセスキー/シークレットなどをエクスポートし、適切な資格情報がメモリに読み込まれていることを確認します
aws configure list
最後に、AWSの役割として必要なことを確実に実行するための適切な習慣として、変数を「デフォルト」にリセットします。特に複数のプロファイルを使用する場合。お役に立てれば。