Amazon QuickSight BIOps API版本管理实战指南

本文详细介绍如何使用Amazon QuickSight API实现BI资产版本控制,涵盖Template API、Assets-as-Bundle API和Describe-Definition API三种方法,提供实际代码示例和架构设计,帮助团队建立自动化CI/CD流水线。

Amazon QuickSight BIOps - 第2部分:使用API进行版本控制

概述

本文章介绍了API驱动的商业智能运维(BIOps)框架,旨在减轻手动工作量,改善Amazon QuickSight中的生命周期管理。

随着商业智能(BI)环境日益复杂,手动管理仪表板、数据集和部署容易导致结果不一致、版本偏差和协作效率低下。自动化对于扩展数据洞察交付、增强治理以及提高开发、QA和生产环境的可靠性至关重要。

DevOps原则在BI中的应用

DevOps通过整合软件开发和IT运营来加速交付并提高可靠性。DevOps重视以下实践:

  • 持续集成和持续交付(CI/CD)
  • 基础设施即代码(IaC)和资产即代码(AaC)
  • 自动化
  • 监控
  • 协作工具(Git、Jira、Slack等)

BIOps将这些原则应用于BI工作流。通过自动化资产备份、版本控制和部署,BI团队可以更一致、可追溯且高效地管理仪表板、数据集和分析。

QuickSight资产API概览

QuickSight提供多种基于API的方法来管理BI工件。根据版本控制、部署自动化和备份等目的,可以使用具有不同优势的API。

三种主要方法:

  1. Template API(传统方法)
  2. Assets-as-Bundle API(新方法)
  3. Describe-Definition API

Template API

基于"模板"的方法使用CreateTemplateCreateDashboard等API,是跨AWS账户和AWS区域迁移QuickSight资产的传统方法。

相关API包括:

  • CreateTemplate
  • DeleteTemplate
  • DescribeTemplate
  • DescribeTemplateDefinition
  • UpdateTemplate
  • UpdateTemplatePermissions

Assets-as-Bundle API

对于实施CI/CD流水线或IaC实践的团队,现代的Assets-as-Bundle API和Describe-Definition API提供更高的透明度、灵活性和控制力。

导出相关API:

  • StartAssetBundleExportJob - 导出资产包文件的异步API
  • DescribeAssetBundleExportJob - 获取导出作业状态的同步API
  • ListAssetBundleExportJobs - 列出历史导出作业的同步API

导入相关API:

  • StartAssetBundleImportJob - 开始导入资产包文件的异步API
  • DescribeAssetBundleImportJob - 获取导入作业状态的同步API
  • ListAssetBundleImportJobs - 列出历史导入作业的同步API

Describe-Definition API

Describe-Definition API以透明且字段级别的格式公开每个工件的内部JSON结构。

包括:

  • DescribeDataSource
  • DescribeDataSet
  • DescribeAnalysisDefinition
  • DescribeDashboardDefinition

各方法比较

方法 主要用例 用途 存储位置
Template API 产品内备份、传统部署 UI中心团队、简单备份 QuickSight内
Describe-Definition API 精细版本控制和自动化 CI/CD、Git集成 Git、Amazon S3、代码仓库
Assets-as-Bundle API 包含依赖关系的环境级部署 开发到生产环境部署、批量迁移 Amazon S3、本地ZIP存档

使用Describe-Definition API进行版本控制

示例代码

获取分析定义并在开发文件夹中创建副本:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
def describe_analysis_definition(session, id):
    qs = session.client('quicksight')
    sts_client = session.client("sts")
    account_id = sts_client.get_caller_identity()["Account"]
    try:
        response = qs.describe_analysis_definition(
            AwsAccountId=account_id,
            AnalysisId=id)
    except Exception as e:
        return ('Faild to describe analysis: ' + str(e))
else:	
   return response

try:
    sample_analysis = func.describe_analysis_definition(qs_session, analysisid)
    print('Successfully get sample analysis contents.')
except Exception as e:
    faillist.append({
        "Action": "scenario_1_dev: get sample analysis contents",
        "Error Type": "describe_analysis_contents Error",
        "AnalysisID": analysisid,
        "Name": 'template_1',
        "Error": str(e)
    })

程序化添加计算字段、参数和过滤器:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
{
      "most_recent": {
          "DataSetIdentifier": "ds_assets_as_code",
          "Name": "most_recent",
          "Expression": "max({date_time})"
        }
    ,
      "Calculated TimeFrame": {
          "DataSetIdentifier": "ds_assets_as_code",
          "Name": "Calculated TimeFrame",
          "Expression": "datediff(${StartDate},${Enddate},'DD')"
      }
}

混合工作流:结合QuickSight UI和API

BI团队可以扩展此架构以构建混合模型:在QuickSight UI中进行开发,通过API进行版本控制。

工作流程:

  1. BI作者直接在QuickSight控制台中开发资产
  2. 开发完成并通过测试后,团队使用Describe-Definition API导出资产定义
  3. 将定义保存到Git或Amazon S3等版本控制仓库中
  4. 使用Create或Update API将经过验证的资产部署到生产环境

使用Amazon EventBridge自动化版本控制

Amazon EventBridge允许将近实时的资产级别事件捕获和监控,包括资产创建、更新、删除和文件夹结构更改。

通过与EventBridge集成,BI团队可以定义规则,在特定资产或文件夹更改时自动触发后续工作流(如AWS Lambda或AWS Step Functions)。

总结

本文介绍的QuickSight API功能为大规模管理BI资产提供了强大的自动化、治理和灵活性。这些API使您能够完全控制资产生命周期,并与CI/CD流水线、基于Git的工作流和自定义工具无缝集成。

需要精细控制、审计性和跨账户、跨区域的可重复部署时,请使用API。优先考虑速度、易用性或轻松迭代时,请使用QuickSight控制台。对于许多团队来说,在QuickSight控制台中开发并使用API捕获更改的混合方法将是利用两者优势的最佳方式。

通过采用BIOps实践,BI团队可以扩展交付、降低风险,并从一次性开发转向可靠且受控的洞察生成。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计