【AWS】MFA認証設定で「エンティティは既に存在しています。」エラーが出た時の対処方法

IAM

AWS IAMユーザーへMFA(多要素認証)を設定しようとした際、
「エンティティは既に存在しています。」というエラーが表示されて設定できないことがあります。

MFAデバイス

本記事では、このエラーの原因と解決方法を紹介します。
AWSでMFA設定がうまくいかず困っている方は参考にしてください。

■ 発生したエラー

AWSコンソールでIAMユーザーにMFAを設定しようとすると、以下のエラーが表示されました。

もちろん該当のIAMユーザーにはMFA認証はされておりません。
CLIで確認してもMFAデバイスは紐付いていません。

aws iam list-mfa-devices --user-name <user-name>

■ 原因:未タッチのMFAデバイスが内部に残っている

原因は、作成済みだがユーザーにアタッチされていないMFAデバイスが残っていたことでした。

過去にMFAデバイスを作成したものの、ユーザーへ有効化しなかった場合、
内部的にデバイス情報だけが残り続け、新しいMFAデバイス登録とバッティングします。

今回のケースでは、マネジメントコンソールから削除したつもりでも、
内部的には仮登録状態のMFAデバイスが残っていました。

■ 解決方法:未使用のMFAデバイスを削除する

未タッチMFAデバイスを確認

aws iam list-virtual-mfa-devices
未タッチMFAデバイス確認

上記コマンドで表示された中で「エンティティは存在します。」が発生した際に登録しようとしたデバイス名が含まれているのであれば該当のものを削除しましょう。

私の場合はaws4-userという名前でデバイスを登録しようとしたものの、内部的に未タッチのエンティティとかぶってしまったために発生したようです。

不要なMFAデバイスを削除

該当デバイスを削除します。

aws iam delete-virtual-mfa-device --serial-number arn:aws:iam::<ACCOUNT-ID>:mfa/aws-user4

実行後、再度MFAデバイスを登録したところ、問題なく設定できました!

■ まとめ

内容詳細
エラー内容「エンティティは既に存在しています。」
原因未アタッチ(仮登録)状態のMFAデバイスが残存
対処法list-virtual-mfa-devicesで確認 → delete-virtual-mfa-deviceで削除

■ おわりに

AWSのIAM周りは実際触ってみないと気づきにくい挙動が多いですが、
今回のケースのように未タッチMFAデバイスが原因というのはハマりポイントです。

同じエラーで困っている方の参考になれば幸いです!