使用 Amazon QuickSight 自动化失败的数据集摄取 商业智能博客

使用 Amazon QuickSight 自动化失败的数据集摄取

关键要点

在本文中,我们将探讨如何通过 Amazon QuickSight 和 AWS CloudFormation 自动化处理数据集摄取失败的情况。该解决方案能够提升用户数据可用性,同时帮助数据集所有者更好地了解失败原因。

Amazon QuickSight 是一项云端商业智能BI服务,帮助您为同事提供易于理解的洞察,无论他们身在何处。用户可以通过定时或程序化的方式将数据导入SPICE快速并行内存计算引擎。

在设置 QuickSight 数据集刷新的过程中,您可以通过邮件通知数据集所有者当刷新失败,但没有原生方法来重新尝试这些刷新。数据刷新可能因为瞬态错误而失败。

在本文中,我们将展示如何使用AWS CloudFormation 部署所有必要的资源,以自动重试已失败的数据集刷新。这可以通过成功完成刷新或提供更多故障原因信息,来加速数据可供用户使用的时间。

此外,还可以使用 Amazon CloudWatch 指标对 QuickSight 资源进行监控。QuickSight 开发者和管理员可以利用这些指标接近实时地观察和响应其 QuickSight 生态系统的可用性和性能。

解决方案概述

我们利用 CloudWatch 指标捕捉 QuickSight 的近实时事件,并设置 CloudWatch 指标警报和 Amazon EventBridge 规则,目标是启动一个 AWS Step Functions 状态机,重新启动已失败数据集刷新的摄取。

以下架构图展示了本帖所使用的架构。Step Functions 状态机及相关的 AWS Lambda 函数通过 CloudFormation 模板部署。

在接下来的部分中,我们将演示如何查找您想要监控的数据集 ID,接着部署 CloudFormation 模板,审核创建的资源,测试解决方案,并进行清理以避免不必要的费用。

前提条件

要完成本步骤,您需要满足以下条件:

一个 AWS 账户QuickSight 企业版的订阅一个具有 CloudWatch 指标、CloudWatch 警报、EventBridge、QuickSight、Step Functions 和 Lambda 权限的 AWS 身份和访问管理 IAM角色了解所用服务及 Python 的基础知识

查找要监控的数据集 ID

请完成以下步骤以定位数据集 ID:

在 QuickSight 控制台中,选择导航窗格中的 数据集 。选择您想要监控的数据集。从浏览器的 URL 中,复制 datasets/ 和 /view 之间的部分。它看起来类似于以下 URL:

https//uswest2quicksightawsamazoncom/sn/datasets/4712aba26ecc4521b009deb5b276a5f6/view

如果您没有可供测试的数据集,可以按照以下步骤创建一个。在这里,我们创建一个 Amazon Athena 表,并利用此表创建一个 QuickSight 数据集,并导入 SPICE。为了模拟刷新失败,我们将删除该表,这将导致数据集刷新失败,并触发我们创建的状态机,自动重试刷新。

在 Athena 控制台中,创建一个表。在本帖中,我们使用 CTAS 在 Athena 中创建了一个名为 foobar 的简单表。

使用 Amazon QuickSight 自动化失败的数据集摄取 商业智能博客在 QuickSight 控制台中,选择导航窗格中的 数据集 。选择 新建数据集。

在 创建数据集 中,选择 Athena 。在 数据源名称 中输入名称,并选取您用于创建表的 Athena 工作组。选择 创建数据源。

在 选择您的表 部分,指定您的目录、数据库和表。选择 编辑/预览数据。

在 查询模式 下,选择 SPICE 。选择 保存和发布 ,然后选择 取消 以返回数据集视图。

通过选择名称来打开数据集。

在 刷新 选项卡中,您可以查看数据集创建时的刷新状态,应该为 已完成。

从浏览器 URL 中获取数据集 ID如前所示。

部署资源

在这一步中,我们创建 Step Functions 状态机和 Lambda 函数来管理失败后的自动摄取。请按照以下步骤操作:

打开 AWS CloudFormation 控制台。选择 启动堆栈 以打开控制台中的模板。

选择 下一步。

在 参数 中,输入来自上一步的 QuickSight 数据集 ID 作为 DataSetID。选择 下一步。

在下一页面上选择 下一步。在最后一页审核详情,然后 选择我知道 AWS CloudFormation 可能会创建具有自定义名称的 IAM 资源。选择 提交。

堆栈创建大约需要 2 分钟完成。

审核资源

请按照以下步骤查看您的资源:

在 AWS CloudFormation 控制台中,选择导航窗格中的 堆栈 。选择您所创建的堆栈。如果您没有更改堆栈名称,它将称为 automatefailedingestionblog。选择 资源 选项卡。在这里,您将看到 CloudFormation 堆栈创建的所有资源。通过选择物理 ID 打开类型为 AWSCloudWatchAlarm 的资源。这将在新的选项卡中打开该资源。审核 CloudWatch 警报的详情。在 查看 EventBridge 规则 下,您将看到用作 EventBridge 规则基础的模式。在浏览器中,返回到 CloudFormation 控制台的选项卡。通过选择物理 ID 打开类型为 AWSEventsRule 的资源。这将在新的选项卡中打开该资源。在 事件模式 下,您可以找到与 EventBridge 规则中描述的类似事件。唯一的区别是我们将状态值添加为 ALARM,因此仅当状态更改为 OK 时不会触发目标。在浏览器中返回到 CloudFormation 控制台的选项卡。通过选择物理 ID 打开类型为 AWSStepFunctionsStateMachine 的资源。这将在新的选项卡中打开该资源。选择 编辑 以打开 Step Functions 状态机定义。您可以选择 Lambda 函数并选择 查看函数 以打开 Lambda 函数。

Step Functions 状态机逻辑

当状态机运行时,第一个 Lambda 函数在“检查之前的摄取”状态中运行,检查之前摄取的状态。如果最新状态为已完成,状态机将发送 COMPLETED 状态并通过成功状态结束。如果 Lambda 函数检测到在刷新上已经有特定数量默认为六个的失败尝试,它将发送 TOOMANYFAILURES 状态并通过失败状态结束。重试次数可在 Lambda 函数上进行配置。

如果状态既不是 COMPLETED 也不是 TOOMANYFAILURES,则状态机将通过默认状态继续运行,以运行下一个 Lambda 函数在“启动新摄取”状态中。然后流程将等待 60 秒后,通过在“获取摄取状态”状态中运行 Lambda 函数检查摄取状态。如果该 Lambda 函数返回状态 COMPLETED,则状态机将通过成功状态结束。如果状态为 FAILED,则将通过失败状态结束。如果状态不属于这两者,它将再次等待 60 秒并再次检查。

启动的刷新类型将与最后一次刷新相同。由于在编辑数据集时可能也会发生错误,导致刷新类型为 EDIT 的错误,因此此时代码不会重试摄取,因为这不是一个失败的自动刷新过程。

测试解决方案

在 AWS CloudFormation 控制台中,选择导航窗格中的 堆栈 。选择您所创建的堆栈。如果您没有更改堆栈名称,它将称为 automatefailedingestionblog。选择 资源 选项卡。在这里,您可以看到 CloudFormation 堆栈创建的所有资源。打开类型为 AWSCloudWatchAlarm 的资源,通过选择物理 ID。这将在新的选项卡中打开该资源。选择 资源 选项卡,选择与 物理 ID 相关的链接,该资源的 局部 ID 为 DataSourceIngestionFailed。

这将打开与我们正在监控的数据集相关的 CloudWatch 警报。

使数据集的来源在刷新时不可用,或者如果您使用的是我们为测试创建的数据集,则可以删除您创建的表。

从 QuickSight 数据集中,选择 立即刷新,选择 完全刷新 并选择 刷新。

数据集刷新将显示为 失败。

等待一分钟后,再次检查 CloudWatch 警报的状态。

它将处于 警报中 状态。

鲤鱼加速器官方在 CloudFormation 堆栈的 资源 选项卡中,选择与 物理 ID 相关的链接,该资源的 局部 ID 为 QuickSightRestartIngestionStateMachine。

这将打开运行重试逻辑的 Step Functions 状态机。

选择 名称 下的 ID 查看状态机的最新运行。

在这次运行中,摄取被重试但失败了,因此状态设为 失败。

若要启用电子邮件警报,请导航到您的 QuickSight 控制台并选择导航窗格中的 数据集 。选择您希望启用此功能的数据集。在 刷新 选项卡中选择 刷新失败时电子邮件通知所有者。

如果您在数据集中选择了此选项,所有者将通过电子邮件收到所有失败的通知。

清理

为了避免未来产生费用,请删除您创建的资源:

在 AWS CloudFormation 控制台中,选择导航窗格中的 堆栈 。选择您创建的堆栈。如果您没有更改堆栈名称,它将称为 automatefailedingestionblog。选择 删除 。

这将删除堆栈创建的所有资源。

结论

在本次操作中,您成功创建了自动重试 QuickSight 数据源刷新失败所需的所有资源。我们展示了这些资源之间的关系,以及该解决方案如何提升 QuickSight 用户体验,确保数据以自动的方式更新,并提升 QuickSight 操作员的体验,通过自动化在数据集刷新失败时的手动工作。

想了解更多信息,请访问 Amazon QuickSight。加入QuickSight 社区,与他人交流、回答问题和学习。

  • 2026-01-27 12:43:54
  • 4