Aws-quicksight-embedding-dashboard

提供:Dev Guides
移動先:案内検索

AWS Quicksight-ダッシュボードの埋め込み

また、Quicksightダッシュボードを外部アプリケーション/ウェブページに埋め込むことも、AWS Cognitoサービスを使用してユーザーアクセスを制御することもできます。 ユーザーコントロールを実行するには、CognitoでユーザープールとIDプールを作成し、EmbedダッシュボードポリシーをIDプールに割り当てることができます。

AWS Cognitoは、管理者が一時ユーザーを作成および管理してアプリケーションへのアクセスを提供できるようにするIAMサービスです。 IDプールを使用すると、これらのユーザープールの権限を管理できます。

安全なダッシュボードURLを生成し、ユーザーコントロールを実行する方法を見てみましょう-

手順1-ユーザープールとユーザーの作成

AWS Cognitoでユーザープールを作成し、ユーザーを作成します。 * Amazon Cognito→ユーザープールの管理→ユーザープールの作成*に移動します。

Amazon Cognito

ステップ2-IDプールの作成

ユーザープールが作成されたら、次のステップはIDプールを作成することです。 [[1]] = arn%3Aaws%3Aiam%3A%3A015428540659%3Auser%2Fcognito&forceMobileApp = 0 [https://console.aws.amazon.com/cognito/home?region=us-east-1]

[新しいIDプールの作成]をクリックします。

IDプール

IDプールの適切な名前を入力します。 [認証プロバイダー]セクションに移動し、[コグニト]オプションを選択します。

プールの作成

ステップ3-Cognitoロールの作成

ユーザープールID(ユーザープールID)とアプリクライアントIDを入力します(ユーザープールのアプリクライアントに移動し、IDをコピーします)。

次に、[プールの作成]をクリックし、[許可]をクリックして、IAMでIDプールのロールを作成します。 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"
      }
   ]
}

ポリシー

ダッシュボードのAmazonリソースネーム(ARN)を「*」の代わりに_quicksight:GetDashboardEmbedUrl” _の下に渡すと、ユーザーが1つのダッシュボードのみにアクセスするように制限できます。

ステップ5-Cognitoアプリケーションへのログイン

次のステップは、ユーザープールのユーザー資格情報でCognitoアプリケーションにログインすることです。 ユーザーがアプリケーションにログインすると、Cognitoは3つのトークンを生成します-

  • IDToken
  • アクセストークン
  • 更新トークン

一時的な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にダウンロード
  • ビジュアルの並べ替え
  • メールレポートのオプトイン
  • ダッシュボードをデフォルトオプションにリセット
  • ダッシュボードでの元に戻す/やり直しアクション