AWS Quicksight 创建仪表板 BOTO3 API 调用错误

Posted

技术标签:

【中文标题】AWS Quicksight 创建仪表板 BOTO3 API 调用错误【英文标题】:AWS Quicksight Create Dashboard BOTO3 API Call Error 【发布时间】:2021-12-16 10:49:27 【问题描述】:

我正在使用 boto3 和 AWS lambda 来创建 quicksight 数据集并创建仪表板。在仪表板中,我使用的是 CUDOS 模板(公开可用)。数据集已成功创建,但仪表板的创建失败并出现以下错误。

"Errors": [
  
    "Type": "ACCESS_DENIED",
    "Message": "You do not have permissions to access the source"
  
],

如果我从 cloudshell 运行命令,仪表板会毫无问题地创建。不知道为什么当我尝试将数据集的访问权限授予 lambda 函数执行角色时,它会给 lambda 函数带来问题我得到以下错误 “此时仅支持 QuickSight 主体”无效主体

谁能帮助解决 BOTO3 API 访问的问题?谢谢!

【问题讨论】:

欢迎来到 SO!听起来您的 IAM 政策中的主体和资源可能混淆了。请提供您的 IAM 策略示例以及它们所附加的角色(当然是混淆敏感信息),以便我们对此进行诊断并提供帮助 - 此外,您可能需要查看 ***.com/help/how-to-ask 以了解如何最好地询问一个问题,以获得关于 SO 的答案 感谢您的回复。我从 AWS lambda 调用 Create_dashbaord。我已授予 Lambda 执行角色的完全访问权限(管理员)。我在 create_dashboard boto3 调用中使用的模板 ARN 是 CUDOS(公开可用 cudos.workshop.aws)“Arn”:“arn:aws:quicksight:us-east-1:223485597511:template/cudos_dashboard_v3”当我尝试创建使用 cli 命令(云外壳)的仪表板工作正常,但是当我从 AWS lambda 尝试相同的操作时,出现上述错误。我只是好奇如何使用 CLI 而不是 AWS lambda 访问模板。 因为 IAM 政策文档有两个在这里很重要的字段。原则和资源。原则告诉附有此策略文档的角色谁可以使用它。如果您的 Principle 设置为用户,则该用户可以使用它(以及扩展名为 cli,因为它使用您的用户登录信息)。 Resource 属性告诉策略文档该策略可以与哪些资源进行交互。鉴于您的错误,您似乎正在尝试将 Quicksight 权限授予 Lambda 策略 - 但这些权限必须遵循 Quicksight 的策略,并且 resources 属性授予 lambda 访问权限 这就是为什么我要求您编辑您的问题并添加您所涉及的各种(但当然是混淆的)IAM 政策。其中至少有一个没有提供它需要的允许或明确拒绝(AWS 权限都被隐式拒绝,但显式拒绝总是覆盖任何显式允许)或缺少导致问题的其他字段 - 在 SO 我们需要能够重现问题以提供帮助,这意味着提供适当的结构示例 感谢您的回复。以下是附加到 Lambda 角色4 "Version": "2012-10-17", "Statement": [ "Effect": "Allow", "Action": "", "Resource": "" ] .. 我尝试了另一种解决方案。我将模板从 CUDOS 账户克隆到我的组织账户,并且 Lambda 能够访问克隆的模板。不确定 CUODS 帐户是否有任何限制。 【参考方案1】:

根据您在 iam 政策中留下的评论,您在 Resource 中没有任何内容。您至少需要"Resource": "*" - 星号是通配符,表示任何资源都可以使用此效果。

同样,您在 Action 中没有任何内容,因此它不会告诉政策任何允许的操作。您还必须至少有"*"

现在,最佳做法是尽可能只授予您应该拥有的最少权限

"Action": "the:Action", "Resource": "the:arn:of:the:specific:resource" 或至少尽可能接近这两者。

正如您还提到的,您有一个组织帐户。这些组织帐户的控制可以限制子帐户可以访问和不能访问的内容,并限制允许在子帐户中执行的各种资源。您可能需要与您的系统管理员核实什么是允许的或不允许的,并在需要时与他们一起打开它。

【讨论】:

以上是关于AWS Quicksight 创建仪表板 BOTO3 API 调用错误的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 AWS Quicksight 连接到 Redshift Spectrum 上的外部架构/表?

AWS Glue - boto3 爬虫未创建表

AWS RDS极光 - 通过boto3或aws cli创建跨区域读取副本

AWS:如何使用 Boto3 从实例创建公共 AMI?

AWS Quicksight,Redshift“引用嵌套表的子查询不能包含 WINDOW 操作”

使用 boto 为 RedShiftCopyActivity 创建 AWS 数据管道