我想解决 AWS Identity and Access Management (IAM) 角色的 Amazon Elastic Compute Cloud (Amazon EC2) 实例配置文件错误。
简短描述
当您尝试在 Amazon EC2 实例上创建、更新、删除或附加实例配置文件时,可能会收到以下错误之一:
- “AccessDenied or unauthorized”(AccessDenied 或未授权)
- “No roles attached to instance profile.”(实例配置文件未附加任何角色。)
- “Can't delete entity, remove role from instance profile”(无法删除实体,请从实例配置文件中删除角色)
- “Active association errors on an EC2 instance”(EC2 实例上的活动关联错误)
- “Instance profile already exists”(实例配置文件已存在)
- “The requested DurationSeconds exceeds the 1 hour session limit for roles”(请求的 DurationSecond 超出角色的 1 小时会话限制)
解决方法
对于收到的错误消息,请按照以下故障排除步骤进行操作。
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
“AccessDenied or unauthorized”(AccessDenied 或未授权)
此错误通常与用于限制访问的 IAM 策略的权限问题有关。要解决“访问被拒绝”错误或“未授权”错误,请根据您的场景使用以下解决方案。
权限边界
如果您的 IAM 实体(用户或角色)使用权限边界,则您的 IAM 策略可能不符合特定要求。有关详细信息,请参阅如何解决权限边界导致的“访问被拒绝”问题?
具有管理员权限的根用户或 IAM 实体
具有管理员权限的 IAM 实体或 AWS 账户根用户有时会在特定场景中遇到授权问题。有关详细信息,请参阅如何解决根用户或管理员用户的“访问被拒绝”问题?
跨账户访问
如果您尝试在跨账户中代入 IAM 角色,则您必须拥有代入 IAM 角色的 IAM 账户的权限。您还必须拥有允许代入 IAM 角色的另一个 AWS 账户中的权限。有关详细信息,请参阅当我尝试代入跨账户 IAM 角色时,如何解决“AccessDenied”或“Invalid information”(信息无效)错误?
IAM 策略权限
如果您在尝试对 AWS 资源执行 API 操作时收到了“AccessDenied or unauthorized”(AccessDenied 或未授权)错误,请检查该策略的权限。有关详细信息,请参阅如何使用 IAM 策略对“访问被拒绝”或“未授权操作”错误进行故障排除?
EC2 实例
如果您在启动 EC2 实例时收到了“AccessDenied”错误,则实例配置文件或权限可能存在问题。确保您拥有有效的实例配置文件名称(即 Amazon 资源名称 (ARN)),且该实例配置文件具有 IAM 角色。有关详细信息,请参阅 Amazon EC2: 当我尝试启动具有角色的实例时,出现 AccessDenied 错误。
获取数据以解决“访问被拒绝”或“未授权”错误
您还可以使用 Amazon Athena 查询或 AWS CLI 来获取 IAM API 调用失败的错误日志。您可以使用这些数据进一步对“访问被拒绝”或“未授权”错误进行故障排除。有关详细信息,请参阅如何获取数据以帮助解决 IAM 权限的“访问被拒绝”或“未授权”错误?
“No roles attached to instance profile”(实例配置文件未附加任何角色)
出现此错误是因为 EC2 实例配置文件没有附加 IAM 角色。使用 AWS 管理控制台或 AWS CLI 将 IAM 角色附加到 EC2 实例配置文件。有关详细信息,请参阅如何在 Amazon EC2 实例上附加或替换实例配置文件?
“Can't delete entity remove role from instance profile”(无法删除实体,请从实例配置文件中删除角色)
如果您使用 AWS CLI 命令 delete-instance-profile 尝试删除实例配置文件,则可能会收到类似以下内容的错误:
“An error occurred (DeleteConflict) when calling the DeleteInstanceProfile operation: Cannot delete entity, must remove roles from instance profile first.”(调用 DeleteInstanceProfile 操作时出现错误 (DeleteConflict):无法删除实体,必须先从实例配置文件中删除角色。)
出现此错误是因为角色与实例配置文件相关联。
**重要事项:**在删除实例配置文件之前,请确保您没有任何正在运行的 Amazon (EC2) 实例。
要删除实例配置文件,请运行 AWS CLI 命令 remove-role-from-instance-profile:
aws iam remove-role-from-instance-profile --instance-profile-name Your_Instance_Profile_Name --role-name Your_Role_Name
然后,运行 AWS CLI 命令 delete-instance-profile 删除该配置文件:
aws iam delete-instance-profile --instance-profile-name Your_Instance_Profile_Name
“Active association errors on an EC2 instance”(EC2 实例上的活动关联错误)
当您尝试更新具有多个关联的 IAM 角色的实例配置文件时,会出现此错误。
要更新实例配置文件,必须先取消与其关联的所有 IAM 角色的关联。有关详细信息,请参阅如何解决 EC2 实例上的“The association iip-assoc-xxxxxxxx is not the active association”(关联 iip-assoc-xxxxxxxxxxx 不是活动关联)错误?
“Instance profile already exists”(实例配置文件已存在)
出现此错误的原因是您尝试创建已经存在的实例配置文件。要解决此错误,请使用不同的名称创建实例配置文件或删除该实例配置文件并重新创建。
**注意:**如果您使用 AWS CLI 创建 IAM 角色,则还须使用 AWS CLI 创建实例配置文件。IAM 角色名称和实例配置文件名称可能不同。
“The requested DurationSeconds exceeds the 1 hour session limit for roles”(请求的 DurationSecond 超出角色的 1 小时会话限制)
如果您使用具有临时安全凭证的 AssumeRole API 来代入 IAM 角色,且角色会话超过 1 小时,则会出现此错误。有关角色链接的最佳实践,请参阅我能否延长 IAM 角色链接会话的持续时间?
相关信息
IAM 和 Amazon EC2 故障排除