QuickSight 无法查看跨账户 Athena DB

问题描述

我在 eu-west-1 的 account_a 中设置了 QuickSight。我正在尝试从 account_b 中的 Athena 进行查询

我在 Athena 中有两个数据库 [一个是“认”,另一个是另一个名称],都在同一个 AWS glue 目录下。目录在 QuickSight 中显示为数据源,但没有任何数据库显示在 QuickSight 中,如下所示:

Screenshot of Athena Data Source in QuickSight

当我尝试使用自定义查询功能时,出现以下错误

[Simba][AthenaJDBC](100071) An error has been thrown from the AWS Athena client. Syntax_ERROR: line 2:34: Schema default does not exist [Execution ID: **-**-**-**-**]

我正在运行的查询是:

select * from default.tablename;

在这一点上,我真的很困惑。我可以在这里采取哪些可能的行动?

解决方法

我今天遇到了类似的问题。我正在使用 Lake Formation 来处理 Glue Catalog 的权限。如果您也是,可以按照本指南启动并运行:https://learnquicksight.workshop.aws/en/admin-level-up/data-lake-permissions.html

基本上,您授予 QuickSight ARN 从 Lake Formation 内访问您的源数据库/表的权限。获得授权后,该数据库将出现在 QuickSight 的 Athena 数据集中。

Lake Formation 还有助于跨账户共享数据资源。您可以在源账户和目标账户上启用 Lake Formation 并根据需要授予权限。此视频很有用:https://www.youtube.com/watch?v=MJ9_hsCk52w

截至 2021 年 5 月,我遇到了一些有关 Lake Formation 的 UI 警告,这些警告与此问题没有直接关系,但可能会有所帮助:

在源帐户中,在新帐户中设置 Lake Formation 时:

  • 在数据目录 > 设置下,取消选中“仅使用 IAM ...”选项。这是为了向后兼容,新帐户不需要。
  • “数据湖位置”选项必须包含您的 S3 存储桶,以便与其他账户共享,正是此步骤提供了您的目标账户将承担的角色
  • 您可能希望通过 Glue 抓取您的表格。确保您创建了一个 Glue IAM 角色并通过 Lake Formation 向该角色授予权限。最低权限原则适用于 Glue IAM 角色,但您只能使用“超级用户”访问权限进行测试。
  • 添加数据库/表后,您必须为要共享的每个数据库/表撤销“IAMAllowedPrincipals”,否则将失败。我认为这也是可以为新帐户安全删除的旧版 Glue 设置。

在目标帐户中:

  • 您必须创建一个“资源链接”才能使用共享的数据库/表(参见视频参考)。这可以通过 a) 创建一个新的本地数据库并将新的资源链接附加到新的数据库...或
    • 您可以在数据库本身上创建一个资源链接...但是,我发现您必须完全从源帐户中手动复制粘贴名称,否则它不起作用(它没有自动填充共享数据库与共享表不同)。希望这是有道理的。这可能是一个很快就会修复的错误。