You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于在自有Web应用中发布AWS QuickSight报表及嵌入仪表盘的技术问询

关于AWS QuickSight集成到自有Web应用的问题解答

1. 是否可以将AWS QuickSight报表发布至自有Web应用?

当然可以!AWS QuickSight专门提供了**嵌入式分析(Embedding)**功能,完全支持将仪表盘、报表甚至单个可视化组件直接嵌入到你的自定义Web应用中。根据你的用户场景,主要有两种嵌入模式:

  • 读者嵌入:针对没有QuickSight账户的终端用户,通过匿名身份访问嵌入的内容,适合面向外部用户的公共应用。
  • 作者嵌入:针对已有QuickSight账户的内部用户,允许他们在你的Web应用内直接编辑、创建报表,适合企业内部的数据分析平台。

2. 如何在自有Web应用中展示AWS QuickSight仪表盘?

下面是两种常用的实现方案,从快速落地到灵活交互都覆盖到了:

方案一:通过IFrame加载嵌入URL(快速实现)

这是最直接的落地方式,核心是通过AWS API生成安全的嵌入URL,再用IFrame加载到你的应用中:

  1. 配置IAM权限
    • 创建一个IAM角色(比如QuickSightEmbedRole),为其附加AmazonQuickSightEmbedding权限策略,同时设置信任关系,允许你的应用后端服务(ECS、Lambda或自有服务器)调用QuickSight的嵌入API。
    • 确保该角色有权访问要嵌入的仪表盘对应的数据集和资源。
  2. 生成嵌入URL
    在应用后端用AWS SDK调用对应API生成URL:
    • 匿名用户场景:调用GenerateEmbedUrlForAnonymousUser,指定仪表盘ARN、允许的域名(防止URL被滥用)。
    • 已注册QuickSight用户场景:调用GenerateEmbedUrlForRegisteredUser,指定用户ARN和仪表盘ARN。
      示例Python代码(基于boto3):
    import boto3
    
    quicksight_client = boto3.client('quicksight', region_name='你的AWS区域')
    
    response = quicksight_client.generate_embed_url_for_anonymous_user(
        AwsAccountId='你的AWS账户ID',
        Namespace='default',
        SessionLifetimeInMinutes=60,
        AuthorizedResourceArns=['你的仪表盘ARN'],
        AllowedDomains=['https://your-app-domain.com']
    )
    embed_url = response['EmbedUrl']
    
  3. 前端加载URL
    在Web页面中用IFrame嵌入生成的URL:
    <iframe 
        src="生成的EmbedUrl" 
        width="100%" 
        height="800px" 
        frameborder="0"
        allow="autoplay; fullscreen; clipboard-write"
    ></iframe>
    

方案二:使用QuickSight JavaScript SDK(灵活交互)

如果需要和仪表盘进行深度交互(比如监听筛选事件、自定义工具栏),可以用官方JS SDK:

  1. 先完成上述IAM权限和URL生成步骤。
  2. 前端引入SDK:
    <script src="https://assets.quicksight.aws.amazon.com/sdk/latest/quicksight-embedding-js-sdk.min.js"></script>
    
  3. 初始化并嵌入仪表盘:
    const dashboard = QuickSightEmbedding.embedDashboard({
        url: '生成的EmbedUrl',
        container: document.getElementById('dashboard-container'),
        height: '800px',
        width: '100%',
        onLoad: () => {
            console.log('仪表盘加载完成');
        },
        onError: (error) => {
            console.error('加载出错:', error);
        }
    });
    
    // 示例:监听筛选条件变化事件
    dashboard.addEventListener('filterChanged', (event) => {
        console.log('筛选条件更新:', event.detail);
    });
    

关键注意事项

  • 必须将你的应用域名添加到QuickSight账户的嵌入允许列表(控制台“管理”->“嵌入”中配置),否则嵌入会被浏览器阻止。
  • 匿名用户嵌入需要确保数据集设置了对应权限,允许匿名角色访问。
  • Session有效期最长不超过1440分钟(24小时),可根据需求调整。

内容的提问来源于stack exchange,提问作者Nemanja Maric

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:10:57