AWS Quicksight - 嵌入仪表板
您还可以将 Quicksight 仪表板嵌入到外部应用程序/网页中,或者使用 AWS Cognito 服务控制用户访问。要执行用户控制,您可以在 Cognito 中创建用户池和身份池,并将嵌入仪表板策略分配给身份池。
AWS Cognito 是一种 IAM 服务,允许管理员创建和管理临时用户以提供对应用程序的访问权限。通过使用身份池,您可以管理这些用户池的权限。
让我们看看如何生成安全的仪表板 URL 并执行用户控制 −
步骤 1 - 创建用户池和用户
在 AWS Cognito 中创建用户池并创建用户。转到 Amazon Cognito → 管理用户池 →创建用户池。

第 2 步 - 创建身份池
创建用户池后,下一步是创建身份池。转到 https://console.aws.amazon.com/cognito/home?region=us-east-1
单击"创建新身份池"。

输入身份池的适当名称。转到身份验证提供商部分并选择"Cognito"选项。

步骤 3 - 创建 Cognito 角色
输入用户池 ID(您的用户池 ID)和应用程序客户端 ID(转到用户池中的应用程序客户端并复制 ID)。
接下来是单击"创建池",然后单击"允许"以在 IAM 中创建身份池的角色。它将创建 2 个 Cognito 角色。
步骤 4 - 分配自定义策略
下一步是将自定义策略分配给上述步骤中创建的身份角色 −
{ "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" 下传递仪表板 Amazon 资源名称 (ARN),而不是"*",以限制用户只能访问一个仪表板。
第 5 步 - 登录 Cognito 应用程序
下一步是使用用户池中的用户凭证登录 Cognito 应用程序。当用户登录应用程序时,Cognito 会生成 3 个令牌 −
- IDToken
- AccessToken
- 刷新令牌
要创建临时 IAM 用户,凭证如下所示 −
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 role 方法 −
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); }) }
第 6 步 - 在 Quicksight 中注册用户
下一步是使用"quicksight.registerUser"在 Quicksight 中注册用户,使用第 3 步中生成的凭证以及以下参数 −
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"); } })
第 7 步 - 更新 AWS 配置文件
接下来是更新第 5 步中生成的用户的 AWS 配置。
AWS.config.update({ accessKeyId: AccessToken, secretAccessKey: SecretAccessKey , sessionToken: SessionToken, "region": Region });
第 8 步 - 为 Quicksight 仪表板生成嵌入 URL
使用第 5 步中创建的凭据,使用以下参数调用 quicksight.getDashboardEmbedUrl 来生成 URL。
var params = { AwsAccountId: "Enter AWS account ID", DashboardId: "Enter 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); } });
您必须使用上面生成的 URL 从您的应用程序中调用"QuickSightEmbedding.embedDashboard"。
与 Amazon Quicksight 一样,嵌入式仪表板也支持以下功能 −
- 向下钻取选项
- 自定义操作(链接到新选项卡)
- 屏幕过滤器
- 下载到 CSV
- 按视觉效果排序
- 电子邮件报告选择加入
- 将仪表板重置为默认值选项
- 在仪表板上撤消/重做操作