AWS QuickSight - 嵌入式儀表盤



您還可以將 Quicksight 儀表盤嵌入到外部應用程式/網頁中,或使用 AWS Cognito 服務控制使用者訪問許可權。要執行使用者控制,您可以在 Cognito 中建立使用者池和身份池,並將嵌入儀表盤策略分配給身份池。

AWS Cognito 是一種 IAM 服務,允許管理員建立和管理臨時使用者以提供對應用程式的訪問許可權。透過使用身份池,您可以管理這些使用者池上的許可權。

讓我們看看如何生成安全的儀表盤 URL 並執行使用者控制 -

步驟 1 - 建立使用者池和使用者

在 AWS Cognito 中建立使用者池並建立使用者。轉到 **Amazon Cognito → 管理使用者池 → 建立使用者池**。

Amazon Cognito

步驟 2 - 建立身份池

建立使用者池後,下一步是建立身份池。轉到 https://console.aws.amazon.com/cognito/home?region=us-east-1

點選“建立新的身份池”。

Identity Pool

輸入身份池的相應名稱。轉到“身份驗證提供程式”部分並選擇“Cognito”選項。

Create Pool

步驟 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"
      }
   ]
}
Policies

您可以將儀表盤 Amazon 資源名稱 (ARN) 傳遞到 quicksight:GetDashboardEmbedUrl” 中,而不是“*”,以限制使用者僅訪問一個儀表盤。

步驟 5 - 登入到 Cognito 應用程式

下一步是使用使用者池中的使用者憑據登入到 Cognito 應用程式。當用戶登入到應用程式時,Cognito 將生成 3 個令牌 -

  • IDToken
  • AccessToken
  • RefreshToken

要建立臨時 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 中註冊使用者

下一步是使用步驟 3 中生成的憑據,使用“quicksight.registerUser”在 Quicksight 中註冊使用者,並使用以下引數 -

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
  • 對視覺化進行排序
  • 電子郵件報告選擇加入
  • 將儀表盤重置為預設選項
  • 撤消/重做儀表盤上的操作
廣告

© . All rights reserved.