📝

IAM Identity Center の一時認証情報使用時に InvalidAccessKeyId が発生した場合

2025/03/21に公開

AWS_SESSION_TOKEN を指定してみましょう。

IAM Identity Center の一時認証情報

Getting IAM Identity Center user credentials for the AWS CLI or AWS SDKs - AWS IAM Identity Center

You can use the manual credential refresh method to get temporary credentials for a role that's associated with a specific permission set in a specific AWS account.

IAM Identity Center のポータルではコンソールアクセス以外にコマンドでのアクセス用の認証情報も取得できます。

この認証情報を aws configure --profile <profile-name> で設定した際に以下のエラーが発生しました。

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

該当するアクセスキーがない旨のエラーメッセージですが、原因はセッショントークンでした。
aws configure ではアクセスキーとシークレットキーを設定できる一方で、セッショントークンを設定することができません。
そのため、aws configure 実行直後の ~/.aws/credentials は以下の状態です。

[profile-name]
aws_access_key_id=xxx
aws_secret_access_key=xxx

認証情報の設定としては問題なさそうですが、以下のブログで紹介されている通り一時認証情報を使用するためには AWS_SESSION_TOKEN を指定する必要があります。
AssumeRole(スイッチロール)で一時クレデンシャルを取得して環境変数にセットするワンライナー | DevelopersIO

ドキュメントによると認証に一時クレデンシャルを使用する場合はAWS_SESSION_TOKENの指定が必要とのことです。

冒頭の IAM Identity Center のドキュメントに記載されている通り、IAM Identity Center のポータルから取得できる認証情報は一時認証情報です。
そのため、~/.aws/credentialsaws_session_token を指定する必要があります。

[profile-name]
aws_access_key_id=xxx
aws_secret_access_key=xxx
aws_session_token=xxx

上記設定後、aws configure --profile <profile-name> でコマンドを実行できるようになりました。

まとめ

今回は IAM Identity Center の一時認証情報使用時に InvalidAccessKeyId が発生した場合の対応を紹介しました。
どなたかの参考になれば幸いです。

参考資料

Discussion