AWS Quicksight – 嵌入仪表板
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”下传递仪表板亚马逊资源名称 (ARN)而不是“*”,以限制用户只能访问一个仪表板。
第 5 步 – 登录 Cognito 应用程序
下一步是使用用户池中的用户凭据登录 Cognito 应用程序。当用户登录应用程序时,Cognito 生成 3 个令牌 –
- 身份令牌
- 访问令牌
- 刷新令牌
要创建临时 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 角色方法 –
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
- 视觉效果排序
- 电子邮件报告选择加入
- 将仪表板重置为默认选项
- 仪表板上的撤消/重做操作