是否可以将Amazon QuickSight仪表板图表集成到Web应用程序中?

时间:2017-05-18 11:25:12

标签: mysql amazon-web-services

我需要根据MySQL中的客户数据显示实时交互式图表,以生成图表,我计划使用Amazon Quick Sight,但我想知道生成的图表是否可以与我的Web应用程序UI集成? Datasource MYSQL托管在AWS。

任何其他更好的设计解决方案也是最受欢迎的:)

4 个答案:

答案 0 :(得分:8)

  • 我不这么认为。即使您想要共享仪表板 某人,您需要在QuickSight中创建用户。超过1 AWS将向用户收取费用。
  • 仪表板不能公开,您需要登录才能查看 仪表板。如果它是公开的,你可以把它嵌入你的 网页作为iframe。但你不能。
  • 所以,我认为你在这方面的选择有限 QuickSight。
  • 您可以随时使用D3或Google Charts来显示数据 在MySQL中为您的数据公开REST服务。
  • 如果您有一个庞大的数据库,您可能需要考虑索引 数据到Elasticsearch并对其执行查询。
  • 检查Kibana + Elasticsearch是否为您开箱即用。
祝你好运!

更新:2018年12月28日

亚马逊于2018年11月宣布,Amazon QuickSight仪表板现在可以嵌入到应用程序中。点击此处了解详情AWS QuickSight Update

答案 1 :(得分:1)

AWS已启用将仪表板嵌入到Web应用程序中。该功能于2018年11月27日发布。以下是一些有用的链接:
1. https://aws.amazon.com/blogs/big-data/embed-interactive-dashboards-in-your-application-with-amazon-quicksight/
2. https://docs.aws.amazon.com/quicksight/latest/user/embedded-dashboards-setup.html

答案 2 :(得分:0)

我知道这是一个非常晚的回复,但万一其他人偶然发现了这个问题......我们使用periscopedata.com在我们的SaaS应用中嵌入了BI仪表板。所需要的只是SQL的知识(创建图表/仪表板)和足够的开发知识来调用他们的API端点以在您自己的应用程序中显示短划线。

答案 3 :(得分:0)

注意::仅当您使用AWS Cognito时,此答案才适用

为了生成Quicksight安全仪表板URL,请执行以下步骤:

步骤1:创建一个新的身份池。转到https://console.aws.amazon.com/cognito/home?region=u-east-1,点击“创建新的身份库”

  • 给一个合适的名字。
  • 转到身份验证提供程序部分,选择认知
  • 提供用户池ID(您的用户池ID)和App客户端ID(转到App 用户池中的客户端和副本ID)。
  • 点击“创建池” 。然后点击“允许” 以创建 IAM中的身份池。

步骤2:将自定义策略分配给身份池角色

  • 使用以下JSON创建自定义策略。
      {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Action": "quicksight:RegisterUser",
                    "Resource": "*",
                    "Effect": "Allow"
                },
                {
                    "Action": "quicksight:GetDashboardEmbedUrl",
                    "Resource": "*",
                    "Effect": "Allow"
                },
                {
                    "Action": "sts:AssumeRole",
                    "Resource": "*",
                    "Effect": "Allow"
                }
            ]
        }

注意:如果要将用户限制为仅一个仪表板,请在quicksight:GetDashboardEmbedUrl中将*替换为仪表板ARN名称,

  • 然后转到IAM中的角色。
  • 选择身份池的IAM角色并分配自定义策略 角色。

步骤3:用于生成临时IAM(STS)用户的配置

  • 使用用户凭据登录到您的应用程序。

  • 为创建临时IAM用户,我们使用Cognito凭据。

  • 用户登录后,Cognito会生成3个令牌ID-IDToken, AccessToken,RefreshToken。这些令牌将发送到您的应用程序服务器。

对于创建临时IAM用户,我们使用Cognito访问令牌,凭据如下所示。

 AWS.config.region = 'us-east-1';
       AWS.config.credentials = new AWS.CognitoIdentityCredentials({
           IdentityPoolId:"Identity pool ID",
           Logins: {
               'cognito-idp.us-east-1.amazonaws.com/UserPoolID': AccessToken
           }
       });
  • 为生成临时IAM凭据,我们称为 sts.assume角色 具有以下参数的方法。
var params = {
           RoleArn: "Cognito Identity role arn",
           RoleSessionName: "Session name"
       };

    sts.assumeRole(params, function (err, data) {
               if (err) console.log( err, err.stack); // an error occurred
               else {
                   console.log(data);
    })

  • 您可以添加其他参数,例如持续时间(以秒为单位) 用户。
  • 现在,我们将获得 AccessKeyId,SecretAccessKey和会话
    临时用户的令牌

步骤4:在Quicksight中注册用户

  • 借助第3步中使用的相同Cognito凭据,我们将 使用 quicksight.registerUser 快速注册用户 具有以下参数的方法
var params = {
                   AwsAccountId: “account id”,
                   Email: 'email',
                   IdentityType: 'IAM' ,
                   Namespace: 'default',
                   UserRole: ADMIN | AUTHOR | READER | RESTRICTED_AUTHOR | RESTRICTED_READER,
                   IamArn: 'Cognito Identity role arn',
                   SessionName: 'session name given in the assume role creation',
               };
quicksight.registerUser(params, function (err, data1) {
                   if (err) console.log("err register user”); // an error occurred
                   else {
                       // console.log("Register User1”);
                   }
               });
  • 现在,该用户将立即注册。

步骤5:使用新凭据更新AWS配置。

  • 以下代码显示了如何使用新的配置AWS.config() 凭据生成第3步。
    AWS.config.update({
                       accessKeyId: AccessToken,
                       secretAccessKey: SecretAccessKey ,
                       sessionToken: SessionToken, 
                       "region": Region
                     });

第6步::为仪表板生成EmbedURL:

  • 通过使用第3步中生成的凭据,我们将 quicksight.getDashboardEmbedUrl ,带有以下参数
    var params = {
                AwsAccountId: "account ID",
                DashboardId: "dashboard Id",
                IdentityType: "IAM",
                ResetDisabled: true,
                SessionLifetimeInMinutes: between 15 to 600 minutes,
                UndoRedoDisabled: True | False
    }
    quicksight.getDashboardEmbedUrl(params,
                             function (err, data) {
                               if (!err) {
                                 console.log( data);
                               } else {
                                 console.log(err);
                               }
                             }
                           );

  • 现在,我们将获得仪表板的嵌入网址。
  • 通过前端调用 QuickSightEmbedding.embedDashboard 以上生成的网址的帮助。
  • 结果将是嵌入到您的应用程序中的仪表板 过滤器控件。