事象
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"
}
]
}
以上、ご参考ください。