事象
InstanceProfileとしてIAMロールを設定していたEC2に対して「Modify IAM role」を実行すると
Failed to replace instance profile
The association iip-assoc-xx is not the active association
というエラーとなる。
環境情報
$ aws --version aws-cli/2.15.5 Python/3.11.6 Linux/4.14.336-257.562.amzn2.x86_64 exe/x86_64.amzn.2 prompt/off
原因/解決策
インスタスプロファイルの関連付け解除を完了していない状況でIAMロールを更新しようとすると発生する。
解決策として以下のように事前に該当のアソシエーションIDを指定してEC2から解除を実施した上で
$ aws ec2 disassociate-iam-instance-profile --association-id iip-assoc-xx { "IamInstanceProfileAssociation": { "AssociationId": "iip-assoc-xx", "InstanceId": "i-...", "IamInstanceProfile": { "Arn": "arn:aws:iam::...:instance-profile/yy", "Id": "..." }, "State": "disassociated" } }
再度IAMロールを変更すると成功する。
Successfully attached xx to instance i-xx
以下、補足です。
補足
IAMロールではなくインスタンスプロファイル形式で権限を付与したEC2に対して、権限の変更を実施しようとすると表題のエラーとなりました。
尚エラーの中にもありましたが、EC2に付与されているインスタンプロファイルは下記で確認できます。
$ aws ec2 describe-iam-instance-profile-associations --filters "Name=instance-id,Values=i-xx" { "IamInstanceProfileAssociations": [ { "AssociationId": "iip-assoc-xx", "InstanceId": "i-xx", "IamInstanceProfile": { "Arn": "arn:aws:iam::xx:instance-profile/xx", "Id": "xx" }, "State": "associated" } ] }
以上、ご参考ください。