我想排查 AWS Identity and Access Management (IAM) 角色的 Amazon Elastic Compute Cloud (Amazon EC2) 实例配置文件错误。
当您尝试在 Amazon EC2 实例上创建、更新、删除或附加实例配置文件时,可能会收到以下错误之一:
对于收到的错误消息,请按照以下故障排除步骤进行操作。
注意: 如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅排查 AWS CLI 错误。此外,请确保您使用的是最新版本的 AWS CLI。
此错误通常与用于限制访问的 IAM 策略的权限问题有关。要解决访问遭拒错误或未经授权的错误,请根据您的场景使用以下解决方案。
权限边界
如果您的 IAM 实体(用户或角色)使用权限边界,则您的 IAM 策略可能不符合特定要求。有关详细信息,请参阅如何解决由权限边界引起的访问遭拒问题?
具有管理员权限的根用户或 IAM 实体
具有管理员权限的 IAM 实体或 AWS 账户根用户有时会在特定场景中遇到授权问题。有关详细信息,请参阅如何排查我的账户根用户或具有管理员权限的 IAM 实体的访问遭拒问题?
跨账户访问
如果您尝试在跨账户中代入 IAM 角色,则您必须拥有代入 IAM 角色的 IAM 账户的权限。您还必须拥有允许代入 IAM 角色的另一个 AWS 账户中的权限。有关详细信息,请参阅当我尝试代入跨账户 IAM 角色时,如何解决 "AccessDenied" 或 "Invalid information" 错误?
IAM 策略权限
如果您在尝试对 AWS 资源执行 API 操作时收到了 "AccessDenied or unauthorized" 错误,请检查该策略的权限。有关详细信息,请参阅如何使用 IAM 策略对访问遭拒或未经授权的操作错误进行故障排除?
EC2 实例
如果您在启动 EC2 实例时收到了 "AccessDenied" 错误,则实例配置文件或权限可能存在问题。确保您拥有有效的实例配置文件名称(即 Amazon 资源名称 (ARN)),且该实例配置文件具有 IAM 角色。有关详细信息,请参阅 Amazon EC2: 在我尝试使用角色启动实例时,出现 AccessDenied 错误。
获取数据以排查访问遭拒或未经授权的错误
您还可以使用 Amazon Athena 查询或 AWS CLI 来获取 IAM API 调用失败的错误日志。您可以使用这些数据进一步对 "access denied" 或 "unauthorized" 错误进行故障排除。有关详细信息,请参阅如何获取数据以帮助排查 IAM 权限的访问遭拒或未经授权的错误?
出现此错误是因为 EC2 实例配置文件没有附加 IAM 角色。使用 AWS 管理控制台或 AWS CLI 将 IAM 角色附加到 EC2 实例配置文件。有关详细信息,请参阅如何在 Amazon EC2 实例上附加或替换实例配置文件?
如果您使用 AWS CLI 命令 delete-instance-profile 尝试删除实例配置文件,则可能会收到类似以下内容的错误:
"An error occurred (DeleteConflict) when calling the DeleteInstanceProfile operation: Cannot delete entity, must remove roles from instance profile first."
出现此错误是因为角色与实例配置文件相关联。
重要事项: 在删除实例配置文件之前,请确保您没有任何正在运行的 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
当您尝试更新具有多个关联的 IAM 角色的实例配置文件时,会出现此错误。
要更新实例配置文件,必须先取消与其关联的所有 IAM 角色的关联。有关详细信息,请参阅如何解决我的 EC2 实例上的错误 "The association iip-assoc-xxxxxxxx is not the active association"?
出现此错误的原因是您尝试创建已经存在的实例配置文件。要解决此错误,请使用不同的名称创建实例配置文件或删除实例配置文件并重新创建。
注意: 如果您使用 AWS CLI 创建 IAM 角色,则还须使用 AWS CLI 创建实例配置文件。IAM 角色名称和实例配置文件名称可能不同。
如果您使用具有临时安全凭证的 AssumeRole API 来代入 IAM 角色,且角色会话超过 1 小时,则会出现此错误。有关角色链接的最佳实践,请参阅我能否延长 IAM 角色链接会话的持续时间?
排查 IAM 和 Amazon EC2 问题
rePost Polyglot
已提问 3 年前
Tim
已发布 2 年前