ablog

不器用で落着きのない技術者のメモ

AWS CLI は AssumeRole の認証情報を ~/.aws/cli/cache/* にキャッシュする

AWS CLIsts まわりのデバッグ(--debug オプションをつける)をしてたら、キャッシュされているようなので、

$ aws s3 cp test.txt s3://arn:aws:s3:ap-northeast-1:123456789012:accesspoint/ap-system1/ --acl bucket-owner-full-control --profile account1 --debug

(中略)

2021-07-29 15:40:11,717 - Thread-3 - botocore.credentials - DEBUG - Credentials for role retrieved from cache.
2021-07-29 15:40:11,717 - Thread-3 - botocore.credentials - DEBUG - Retrieved credentials will expire at: 2021-07-29 16:05:49+00:00

~/.aws/cli/cach/*.json にキャッシュされたクレデンシャル情報があったので、削除したらキャッシュをクリアできた。

$ pwd
/home/ec2-user/.aws/cli/cache
$ ls -l
total 12
-rw------- 1 ec2-user ec2-user 1405 Jul 28 05:29 1f19adce711b824efb956a8c505adca44c1e457d.json
-rw------- 1 ec2-user ec2-user 1441 Jul 29 15:05 283df1a9c0d6e09afe95fe8770c3ad97a88c9718.json
-rw------- 1 ec2-user ec2-user 1426 Jul 28 22:45 c93a93837b37ba6832ee7710b9a988b020793fe7.json
$ rm *.json

ドキュメントにも記載されていた。

AWS Identity and Access Management (IAM) ロールを指定する共有プロファイルを使用する場合、AWS CLIAWS STS AssumeRole オペレーションを呼び出して一時的な認証情報を取得します。その後、これらの認証情報は ~/.aws/cli/cache に保存されます。それ以降の AWS CLI コマンドは、このキャッシュされた一時的な認証情報を有効期限が切れるまで使用します。有効期限が切れると、そこで AWS CLI によって自動的に認証情報が更新されま

設定ファイルと認証情報ファイルの設定 - AWS Command Line Interface