Amazon Cognito user pools の削除保護を無効化しようとしたら InvalidSmsRoleTrustRelationshipException が発生する場合の対処

Amazon Cognito user pools の削除保護を無効化しようとしたら InvalidSmsRoleTrustRelationshipException が発生する場合の対処

Clock Icon2024.08.16

こんにちは、製造ビジネステクノロジー部の若槻です。

今回は、Amazon Cognito user pools(ユーザープール)に設定された削除保護(deletion protection)を無効化しようとしたら InvalidSmsRoleTrustRelationshipException が発生したので対処してみた内容を共有します。

事象

AWS Management Console で Amazon Cognito user pools のを無効化しようとしたら、以下のエラーが発生しました。

削除保護が有効なユーザープールを AWS Management Console で開きます。

削除保護のメニューから Deactivate をクリックします。

ダイアログで無効化を行ってみます。

すると InvalidSmsRoleTrustRelationshipException というエラーが表示されました。削除保護は無効化できていません。


Failed to delete user pool "<ユーザープール名>". Try again later.
Failed to deactivate deletion protection

code: InvalidSmsRoleTrustRelationshipException
message: Role does not have a trust relationship allowing Cognito to assume the role

View details から詳細を確認すると、こちらもで同様のエラーメッセージが確認できました。

原因、解決

原因は、SMS 送信に存在しない IAM ロールが設定されていたためでした。そこで、SMS 送信に使用する IAM ロールを設定し直すことで、削除保護を無効化することができました。

Messaging > SMS セクションで Edit をクリックします。

既存の IAM ロールが設定されていますね。

しかしこの IAM ロールは存在していないようです。

そこで Create a new IAM role で新しい IAM ロールを作成します。

指定した名前のサービスロールが作成され、設定されました。

再度、削除保護を無効化してみます。

今度は削除保護を無効化することができました。

おわりに

Amazon Cognito user pools(ユーザープール)に設定された削除保護(deletion protection)を無効化しようとしたら InvalidSmsRoleTrustRelationshipException が発生したので対処してみた内容を共有しました。

自身の記憶ではユーザープールは削除保護を有効化する設定で CDK で作成していたのですが、その CDK スタックを削除した際に IAM ロールが削除されユーザープールだけ残ってしまったため、このようなエラーが発生したようです。若干バグっぽい動作ですね。

参考

https://repost.aws/questions/QUmT3SnadXSnCgzvLNCRAfng/failed-to-deactivate-deletion-protection-userpool-cognito

以上

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.