IAM 系の操作だけ InvalidClientTokenId になったときの対処方法
困っていた内容
GetSessionToken API で取得した一時的な認証情報で AWS リソースを操作しています。
IAM 系の操作だけInvalidClientTokenIdで失敗します。
アクセスキーなどは有効でした。なぜでしょうか?
$ aws iam create-role --role-name hato-role --assume-role-policy-document file://policy.json
aws: [ERROR]: An error occurred (InvalidClientTokenId) when calling the CreateRole operation: The security token included in the request is invalid
どう対応すればいいの?
GetSessionToken API 実行時に MFA 情報を含めてください。
$ aws sts get-session-token \
--serial-number "【MFA のシリアルナンバー】" \
--token-code "【MFA のトークンコード】"
GetSessionToken API で作成した一時的な認証情報は、呼び出しで使用した IAM ユーザーの権限に基づきますが、次の制限があります。
- MFA 認証情報が含まれていない場合、IAM API の呼び出しはできない。
AssumeRoleまたはGetCallerIdentity以外の STS API の呼び出しはできない。
そのため、アクセスキーや権限に問題がない場合も、MFA 情報が含まれていない場合はエラーが発生します。
一時的な認証情報で IAM 系の操作を行いたい場合は、呼び出し元の IAM ユーザーで MFA を設定し、GetSessionToken API 実行時に MFA 情報を含めて一時的な認証情報を取得してください。
参考資料
The temporary security credentials created by GetSessionToken can be used to make API calls to any Amazon Web Services service with the following exceptions:
- You cannot call any IAM API operations unless MFA authentication information is included in the request.
- You cannot call any STS API except AssumeRole or GetCallerIdentity .
GetSessionToken が IAM ユーザーの認証情報によって呼び出された場合、一時的なセキュリティ認証情報は IAM ユーザーと同じアクセス権限を持ちます。
リクエストに MFA 情報が含まれていない場合は、IAM API オペレーションを呼び出せません。
AssumeRole または GetCallerIdentity を除く AWS STS API オペレーションを呼び出せません。







