AWS Admin 没有 EC2 描述操作

问题描述

我拥有 AdministratorAccess 的 IAM 角色,但是当我将自定义模板上传AWS CloudFormation 时,出现以下错误

操作失败,ComputeEnvironment 变为 INVALID,错误: CLIENT_ERROR - 您无权调用 EC2 描述操作。 需要执行 CreateLaunchConfiguration 操作。

所有其他资源似乎都成功完成,所以我不确定是否进行了某种角色委派?

解决方法

您可能受到Service Control Policies(SCP)或Permission Boundaries甚至其他policy types的影响。

关于 SCP:

SCP 限制了成员中 IAM 用户和角色的权限 帐户,包括成员帐户的根用户。任何账户都有 只有上面的每个父级允许的那些权限。如果一个 权限在帐户以上的任何级别被阻止,要么 隐式(不包含在 Allow 策略声明中)或 明确(通过包含在拒绝策略声明中),用户或 受影响帐户中的角色无法使用该权限,即使 帐户管理员将 AdministratorAccess IAM 策略附加到 / 给用户的权限。

另见How to use service control policies to set permission guardrails across accounts in your AWS Organization

正如 this article 所述,

AWS 组织的成员账户无法看到 SCP 已应用于他们。此外,当行动被拒绝时, 无法知道这是否是由于 IAM 策略、SCP、 或其他(例如会话策略、IAM 边界、资源策略)。 这意味着错误消息中不会有来自 API 调用或在 CloudTrail 日志中显示拒绝调用的内容。这 可能会使调试问题变得困难。

This article 有一些有用的图表,显示了可能影响/限制访问的不同事物。

,

我已经解决这个问题四天了,终于想出了一个我认为可以解决它的解决方案。

CDK 引导程序有两种:传统和现代。旧版是默认设置。

旧版引导程序中似乎存在影响某些帐户而非其他帐户的错误。我能够验证相同的代码在一个帐户上对我有用,但在新创建的帐户上产生了此问题的确切症状。

如果您由于某种原因没有坚持使用旧版引导程序,只需转换为现代引导程序即可。这应该会使错误(以及错误的原因)消失。

说明如下:https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html

基本上,您必须在调用 cdk bootstrap 之前设置环境变量,然后您必须更改项目中的某些代码或某些配置。

CDK 中根本不存在此功能并不直观,也不能解决此特定问题。然而,它为我清除了它。也许对其他人也一样。