はじめに
ある検証のために特定のEC2に対してIAMロールのつけ外しを行っていたのですが、急にIAMロールのアタッチができなくなったので、解決までの手順を書いておきます。
事象
元々アタッチしていたIAMロールを一旦外そうとした際、以下のようにエラーが出力されて、IAMロールのつけ外しができなくなりました。
尚、これが表示される直前に1度違うIAMロールから変更しています。
調査
調べてみると以下のページを見つけました。
https://www.fixes.pub/program/207318.html
このページを見る限りだと、IAMロールを付け替えした際にEC2に紐づくインスタンスプロファイルも当然変更されますが、その関連付けが中途半端に設定された状態であることが原因のようです。
対応方法
参考ページの内容から
1."aws ec2 describe-iam-instance-profile-associations"コマンドでプロファイルとインスタンスの関連付けを確認
2.インスタンスが複数のプロファイルと関連付けられている場合、"aws ec2 disassociate-iam-instance-profile --association-id [ASSOCIATION ID]"コマンドで関連付けを解除
3.EC2コンソールからIAMロールを変更
という手順で解決しそうですので、試してみます。
実施
以下のコマンドを実行してみると確かに関連付けが複数ありました。
aws ec2 describe-iam-instance-profile-associations
以下のコマンドでIAMロールの関連付けを削除します。
aws ec2 disassociate-iam-instance-profile --association-id [ASSOCIATION ID]
再度関連付けを確認してみるとちゃんと解除されているようです。
同じ手順でもう一つの関連付けを解除するとデタッチができました。
恐らくですが、最初に設定したロール名がxxx_role、次に設定したロール名がxxx_s3_roleだったのですが、EC2には最初のロールが関連付けられていたのが原因だと思います。