Aws-quicksight-embedding-dashboard
AWS Quicksight-ダッシュボードの埋め込み
また、Quicksightダッシュボードを外部アプリケーション/ウェブページに埋め込むことも、AWS Cognitoサービスを使用してユーザーアクセスを制御することもできます。 ユーザーコントロールを実行するには、CognitoでユーザープールとIDプールを作成し、EmbedダッシュボードポリシーをIDプールに割り当てることができます。
AWS Cognitoは、管理者が一時ユーザーを作成および管理してアプリケーションへのアクセスを提供できるようにするIAMサービスです。 IDプールを使用すると、これらのユーザープールの権限を管理できます。
安全なダッシュボードURLを生成し、ユーザーコントロールを実行する方法を見てみましょう-
手順1-ユーザープールとユーザーの作成
AWS 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プールの適切な名前を入力します。 [認証プロバイダー]セクションに移動し、[コグニト]オプションを選択します。
ステップ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にダウンロード
- ビジュアルの並べ替え
- メールレポートのオプトイン
- ダッシュボードをデフォルトオプションにリセット
- ダッシュボードでの元に戻す/やり直しアクション