当我尝试更改 EC2 实例错误时,告诉我附加了多个 IAM 角色...?

Dil*_*ess 6 amazon-ec2 amazon-web-services amazon-iam

这是一个奇怪的...如果我单击实例 ID,然后导航到安全性,它会告诉我该实例具有角色 X。然后我退出以查看所有实例,标记相关实例的复选框,然后转到操作 -> 安全 -> 修改 IAM 角色,它向我显示了一个不同的角色,角色 Y。然后我尝试将其设置为“无 IAM 角色”(或任何各种角色),但出现此错误:

“与实例关联的多个角色

所选实例具有多个关联的 IAM 角色。当实例正在替换现有实例配置文件关联时,通常会发生这种情况。”

我不知道该怎么做,因为我不认为 EC2 实例应该能够具有两个角色......无论如何,没有任何东西可以同时承担两个角色。所以这感觉像是一个错误...有人能帮我解决这个问题吗?

在此输入图像描述

在此输入图像描述

在此输入图像描述

小智 11

我遇到了同样的问题,似乎在替换实例配置文件时,它以某种方式保持在不完全关联的状态。使用 CLI 我们可以看到配置文件关联的状态:

aws ec2 描述-iam-实例-配置文件-关联

就我而言,有问题的配置文件显示为“关联”,而所有其他配置文件都显示为“关联”。获取有问题的关联的 AssociationID 并使用命令取消关联

aws ec2 解除关联-iam-实例-配置文件 --关联-id iip-assoc-xxxxxx

之后,您应该会看到原来的个人资料,并且一切都应该一致。希望它有助于解决问题。


小智 11

我想详细阐述Nelson Brito 的答案,因为我找到了一种将您的实例恢复到正常状态的方法。我昨天在帮助用户时遇到了这种情况,我观察到我的实例有两个配置文件关联——一个处于 状态associating,另一个处于 状态disassociating。找到这个的命令是:

aws ec2 describe-iam-instance-profile-associations --filters Name=instance-id,Values=i-xxxxxx
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我首先associating使用以下命令删除了配置文件:

aws ec2 disassociate-iam-instance-profile --association-id iip-assoc-xxxxxx
Run Code Online (Sandbox Code Playgroud)

接下来,我转到控制台并将实例与所有配置文件分离(可能有一个 CLI 调用,但我没有弄清楚)。完成后,您应该有一个干净的实例:

aws ec2 describe-iam-instance-profile-associations --filters Name=instance-id,Values=i-xxxxxx
{
    "IamInstanceProfileAssociations": []
}
Run Code Online (Sandbox Code Playgroud)

这就是我们找到根本原因的地方。当我重新分配之前卡在 的角色associating时,它仍然卡在associating。我的问题的根本原因是用户创建了角色而没有与 EC2 设置信任关系。修复分为两部分:

  1. 更新实例信任关系以添加"Service": "ec2.amazonaws.com"为允许的主体
  2. 使用 CLI 取消角色关联并重新添加

tl;dr - 如果您遇到过这种情况,请确保您尝试分配给 ec2 实例的角色可以由您的 ec2 实例承担。