LoginSignup
7
0

More than 1 year has passed since last update.

AWS CLIでアクセスキーを正しく設定してもなぜか権限エラーになる

Last updated at Posted at 2022-06-11

ググっても事例見あたらず、トラシューでめっちゃ格闘してしまったのでメモ。

TL;DR

AWS CLIにアクセスキーを設定してもなぜか権限エラーになってしまうときは、awsコマンド実行端末に意図せぬ環境変数がセットされてしまっていることが原因かも?

起こったこと

AWS CLIの初期設定では aws configure コマンドでアクセスキー等を設定できる。

しかし、正しい権限を付与したIAMユーザーのアクセスキーをちゃんと設定したはずなのに、何度やってもawsコマンド操作が権限エラーになってしまった。

$ aws s3 ls
An error occurred (InvalidAccessKeyId) when calling the ListBuckets operation: The AWS Access Key Id you provided does not exist in our records.

試したこと

AWS CLI設定の確認コマンドを実行。

$ aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************4G6N              env    
secret_key     ****************T/DQ              env    
    region           ap-northeast-1              env    ['AWS_REGION', 'AWS_DEFAULT_REGION']

どうもアクセスキーとシークレットキーが aws configure で設定したはずのものと異なっている。

続いて、AWS CLIの設定ファイルを確認。

$ cat ~/.aws/config
[default]
region = ap-northeast-1
output = json

$ cat ~/.aws/credentials 
[default]
aws_access_key_id = ****************DDTS
aws_secret_access_key = ****************2/Lf

こちらは aws configure で設定したとおりの内容。
これがうまく読み込まれていない模様。

わかったこと

どうも自分のMacにはAWS CLI関連の環境変数がローカルに直接設定されていた模様。そのために .aws ディレクトリー内のコンフィグが読み込まれず、環境変数が優先して参照されてしまっていたことが判明。

※過去にAWS CLIを使う際にネット記事を見ながらガチャガチャ環境変数をいじってしまっていたものと思われる。。

以下を実施することで本件解決!

$ unset AWS_PROFILE
$ unset AWS_DEFAULT_PROFILE
$ unset AWS_ACCESS_KEY_ID
$ unset AWS_SECRET_ACCESS_KEY
$ unset AWS_DEFAULT_REGION

解消後の設定確認コマンド結果は以下のようになった。

aws configure list       
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key     ****************DDTS shared-credentials-file    
secret_key     ****************2/Lf shared-credentials-file    
    region           ap-northeast-1      config-file    ~/.aws/config

おまけ

後日、新たにターミナルを立ち上げ直すと事象再発。
どうもzshのプロファイルに直接、AWS CLI用の環境変数を追記してしまっていた模様。

$ open ~/.zshrc

上記コマンドでプロファイルを開き、当該処理を削除してターミナル再起動すれば一件落着。

7
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
0