申明:
本文转自 DEV Community 网站,文章翻译由开发者社区提供;
点击下方链接,查看英文原文:
- https://dev.to/aws-builders/f…
一些历史背景
大略两年前,我开始尝试应用 QuickSight 来解决我就任的公司在 BI 方面遇到的一些问题。相比其余相似工具,QuickSight 能与很多亚马逊云科技数据服务实现一流的集成,并且老本非常低,这些都是我所看重的。借助该服务,咱们能够疾速构建剖析原型和仪表板。然而有个问题咱们始终很费解:为何不反对应用 DynamoDB 作为数据源?
我在 StackOverflow 征询了 Hive-mind 如何在 Amazon Quicksight 中对 DynamoDB 数据进行可视化,这曾经成为该平台上取得反对最多的 QuickSight 发问,因为大家都须要这样的性能,但始终没失去解答……直到最近。
大部分变通的解决方案都须要将 DynamoDB 数据导出(例如复制)到其余地位,例如 S3 或 RDS,随后即可作为数据源退出 QuickSight。最终,咱们创立了一个 Glue 打算作业,借此将 DynamoDB 数据挪动到 S3。随后应用 AWS Glue Crawler 爬取 S3 数据并以 Amazon Athena 表的模式作为数据集退出 QuickSight。这种办法无效,但实际上须要更多定制化的基础设施,并且也无奈间接进行实时查问。
2019 年底,亚马逊云科技发表用户将能够通过 Amazon Athena 新增的联结查问性能查问任何数据源。这个性能很酷,他们甚至通过示意图展现了查问 DynamoDB 数据的概念,但这须要咱们自行开发并保护本人的连接器,并且该性能过后还是预览版,Amazon QuickSight 的集成也尚未进行更新,无奈用到 Athena 的这项新性能。
2020 年 3 月,我发现 Amazon Athena 颁布了一个实用于 DynamoDB 的预构建数据连接器。这让我很冲动,因为我终于能够在 Athena 中疾速设置一个数据连接器并借此真正查看和查问 DynamoDB 数据,同时还不须要编写任何自定义代码。但该性能仍然是预览版,并且临时还不反对 QuickSight。
到了一年后,Athena 数据连接器在多个区域正式公布,还提供了第 2 版 Athena 引擎,并且 QuickSight 的集成性能也能够让咱们抉择所需的 Athena 工作组和数据源。
在 DynamoDB 成为 Amazon QuickSight 中的“一类”数据源之前,这些性能曾经足以满足我的需要了。
具体实现过程
应用第 2 版 Athena 引擎所提供的 Athena 数据连接器,我终于能在 QuickSight 中可视化 DynamoDB 数据,并且不须要创立任何定制资源,也无需将数据复制到另一个数据源中。
先决条件 / 假如
- 你心愿将 DynamoDB 表中的数据通过 QuickSight 进行可视化
- 你能够拜访本人账户 IAM 中的用户 / 角色
- 创立一个存储桶,用于存储 Athena 查问后果数据以及数据连接器溢出的数据
- 如果要将其用在生产环境中的大规模查问中,倡议为该存储桶增加 S3 生命周期策略,以确保该存储桶不会以不受控的形式增大
- 你应用的区域必须同时反对:
- Athena 第 2 版引擎
- QuickSight
切换为应用第 2 版 Athena 引擎
如果还没有曾经在应用第 2 版 Athena 引擎的 Athena 工作组,请创立一个符合要求的工作组。
截止撰写本文时,默认的次要组仍然会应用第 1 版 Athena 引擎,但这些组会在将来某时主动降级到第 2 版。
没人有工夫期待亚马逊云科技来降级,因而咱们须要提前创立(如果需要的话)工作组并切换到第 2 版 Athena 引擎。
1. 在 Athena 控制台中抉择 Workgroups 选项卡:
2. 确保存在“Athena Engine version 2”工作组并切换至该工作组。
a) 你很可能没有这样的工作组,因而须要点击“Create Workgroup”按钮创立一个。简直所有选项都能够应用默认设置,但肯定要抉择“Manually choose an engine version now”,并且在创立工作组时,请务必抉择“Athena engine version 2 (recommended)”。
创立 DynamoDB Athena 数据连接器
创立了第 2 版 Athena 引擎的工作组后,接下来须要创立咱们的 DynamoDB Athena 数据连接器了。
1. 关上 Athena 控制台的 Data Sources 选项卡,抉择“Connect data source”按钮。
2. 在 Data Sources 向导的第一步中抉择“Query a data source”选项,随后抉择“Amazon DynamoDB”并点击下一步。
3. 第二步和最初一步中,亚马逊云科技须要咱们指定连接器 Lambda。该 Lambda 尚不存在,因而咱们须要点击“Configure new AWS Lambda function”按钮进行部署。
点击该按钮会关上一个新窗口并显示 Lambda 控制台,咱们能够在这里部署预构建的 AthenaDynamoDBConnector 应用程序。
b) 在 Application 设置下,至多须要设置 SpillBucket 和 AthenaCatalogName 参数,因为它们不蕴含任何默认值。
c) 点击 Deploy。
d) 该 Lambda 部署实现后,从新回到 Athena 控制台窗口。
4. 至此咱们的 AthenaDynamoDBConnector 函数曾经部署,点击“Choose Lambda function”下拉菜单列表旁边的刷新按钮,随后应该能看到方才部署的 Lambda 函数。抉择该函数,为分类输出一个名称,点击“Connect”按钮。
5. 至此咱们就应该能够通过为资源设置的数据源和分类名称,应用 Athena 查问 DynamoDB 数据了。
为 QuickSight IAM 角色调配 Lambda 权限
Athena 数据连接器须要调用 Lambda 来查问并返回 DynamoDB 数据,因而咱们须要为 QuickSight 的服务角色提供调用 Lambda 函数的权限。
1. 关上 IAM 控制台并抉择“Roles”。
2. 查找并点击 QuickSight 服务角色。角色名称应该以相似“aws-quicksight-service-role”的字样结尾,例如“aws-quicksight-service-role-v0”。
3. 点击“Attach Policies”。
4. 抉择“AWSLambdaRole”并点击“Attach Policy”。
配置 QuickSight 应用新连接器
随后须要对 QuickSight 进行一些配置!
1. 关上 QuickSight 并显示 Data Sets 菜单。
2. 点击“New Dataset”并抉择 Athena 作为数据源。
3. 抉择方才创立的,应用了第 2 版 Athena 引擎的工作组。
4. 随后抉择在方才的步骤中为 DynamoDB 连接器创立的分类。
a) 如果看到“没有足够的权限连贯到此数据集或运行此查问”的谬误,很可能是因为没有将 Lambda 调用权限正确地调配给 QuickSight 角色。具体操作办法请参阅上一步。
5. 随后要抉择是否心愿通过 SPICE 缓存数据,或是间接查问数据。间接查问将能查看 DynamoDB 中的实时数据,但因为不缓存,性能和老本可能会受到影响。
a) 你也能够增加额定的 DynamoDB 表数据集并持续重复使用在上述第 2 步创立的第 2 版 Athena 引擎数据源。
进行可视化
至此咱们曾经创立了 DynamoDB 数据集(通过 Athena 和 DynamoDB 数据连接器),接下来终于能够通过剖析和仪表板对 DynamoDB 数据进行可视化了。
本文的示例中我应用了一个很小的 DynamoDB 范例数据集,因而可视化进去的后果不怎么乏味,仅供参考。
总结
期待了这么久,终于能够在无需自定义资源和复制数据的前提下用 QuickSight 解决 DynamoDB 数据。这只是泛滥数据源中的一个示例,当初咱们曾经能够通过第 2 版 Athena 引擎的数据连接器轻松增加多种数据源,并能间接在 QuickSight 中抉择要应用的 Athena 工作组和 Athena 分类。
置信随着亚马逊云科技持续公布新性能以及技术的一直变革,本文所介绍的技术迟早会过期,但大家能够将本文介绍的办法作为练习摸索更多新性能。
如果本文对你有帮忙,或如果你针对该办法的改善和增补有任何倡议,欢送随时留言。
文章作者: Jared Donboch
Jared Donboch for AWS Community Builders。