aws cliで「You are not authorized to perform this operation」が出た時の1つの解決策

thumnail
2020-08-13

aws cliを叩くと認証エラーになった

S3に接続するために、デフォルトの設定プロファイルに設定されている認証情報とは異なるAWSACCESSKEYIDとAWSSECRETACCESSKEYを環境変数に設定していた。それから日付が経って、aws cliを叩いた時に

An error occurred (UnauthorizedOperation) when calling the DescribeInstances operation: You are not authorized to perform this operation.

というエラーが発生して、コマンドが叩けなくなってしまった。このとき~/.aws/config ~/.aws/credentialsをcatで調べても確かにIAM権限で設定されているAWS Access Key IDなどの認証情報が設定されていた。

AWSの認証情報は環境変数で上書きされる

公式ドキュメントを読むと次のように書かれていた。

このトピックで示されている環境変数のいずれかを使用してオプションを指定した場合、設定ファイルのプロファイルからロードされた値は上書きされます

参考文献:「AWS CLI を設定する環境変数」

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-envvars.html

これだ。次のように環境変数を定義すると、プロファイルすなわち~/.aws/config ~/.aws/credentialsに登録されている認証情報を上書きする挙動になるのだ。

$ export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
$ export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
$ export AWS_DEFAULT_REGION=us-west-2

今回はS3に接続するための認証情報を環境変数として登録したのだが、これによってaws cliを使うことが可能となる認証情報が上書きされてしまっていた。なので次にように環境変数削除した。

$ unset AWS_ACCESS_KEY_ID
$ unset AWS_SECRET_ACCESS_KEY

これによって、~/.aws/config ~/.aws/credentialsに登録されている認証情報がaws cliに設定されるようになり、コマンドが叩けるようになった。ちなみに上書きの優先度としては「コマンドラインオプション」>「環境変数」>「CLI認証情報ファイル」>「CLI設定ファイル」>「コンテナ認証情報」>「インスタンスプロファイル情報」になっている。詳しくは次のサイトに書かれている。

https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-precedence

この記事内容とは関係ありませんが、筆者である僕が普段愛用しているPC周りのアイテムを別記事で紹介しているので、もし興味があればご覧になってください。

現在使用しているディスプレイ・ヘッドフォン・キーボードなどを紹介

KATUBLO

Copyright since 2018 KATUO All Rights Reserved.