About connecting the dots.

data science related trivial things

Amazon QuickSight の 1-click 埋め込みダッシュボード機能を試してみた

この記事は AWS Analytics Advent Calendar 2021 の 3 日目の記事になります.というか気がついたら 2 年半もの間,一本も記事を書かないままに時間が経ってしまっていたんですね.その間に世の中はコロナになって世界中大混乱だったりしているわけですし,個人的にもいろんなことがありました*1.とはいえ相変わらずデータ界隈の片隅でボチボチとやっております.

qiita.com

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

さて,ここからが本題です.今回は珍しく BI の話*2.以前お仕事で Tableau Server/Desktop を触ってたことがあるんですが,使い勝手は良いものの,ライセンスの問題でなかなか社内に大規模展開するのが大変だったり,サーバ運用,特に定期的なソフトウェアのバージョンアップデートが結構大変だったことをよく覚えています*3.気がついたら今はクラウド全盛で,BI ツールも SaaS とかサーバーレスのも増えてきており,この辺りがだいぶ楽になってきてるなぁと思う次第です.今回取り上げる Amazon QuickSight もそんなサーバーレス型の BI サービスですね.BI って結構社内ポータルに埋め込んだり,BI 以外の他のデータとまとめて一箇所に表示したりとかって使い方すると思うんですが,その場合いわゆる埋め込み機能が必要になります.社内の各部署にお知らせをして,別のダッシュボードツールの使い方の説明をして,それをみてもらうというのは結構敷居が高かったりします.そんな場合には,既に使われているところにダッシュボードも集約したい,っていうのが結構よくある話ですよね.まぁあとは SaaS とかやっている会社で,ユーザー向けにダッシュボード提供とかやる場合もあるかもしれないです*4

さて QuickSight にも以前から埋め込み機能があったんですが,API オペレーション前提で,コードをガッツリ書いて埋め込む元のページにデプロイしないといけなかったんですよね.埋め込みハンズオンが公開されているので,みていただければ分かりますが,コマンドラインでの作業が結構多くて,実際に試すまでの手順が長かったんですよね.

awsj-assets-qs.s3.ap-northeast-1.amazonaws.com

このページの一番下のフローチャートとかみていただくとわかるんですが,アプリでダッシュボードを埋め込んだページを表示する際に,QS のユーザー認証や IAM ロールの権限取得,埋め込みダッシュボードの URL 取得,ってプロセスをやっているので,パッと実装するのは敷居が高いです.

1-click 埋め込み機能

ここで最近出てきた 1-click 埋め込み機能*5なんですが,響きからして簡単にできそうな感じであふれてます.これみる限り,ほぼ GUI 作業だけで手軽にページ内埋め込みができそうなんで,実際に試してみましたよというのが今回の話.

aws.amazon.com

ということで,実際に試してみた内容を以下にまとめました.

ダッシュボードを共有して埋め込みコードを取得

データセットを読み込んでダッシュボードを作成するというのは,AWS のブログにまとまってるベーシックハンズオンとかやればわかるので,ここでは割愛.

aws.amazon.com

ダッシュボードを作成したら,画面右上からダッシュボードの共有ボタンを押して,共有したい人の権限を追加したら OK です.別に自分しかみないんだったら,特に誰も追加しなくてもいいんですけどね.

f:id:SAM:20211130142455p:plain

上記の共有設定のページの上側に,埋め込み用コードを取得する「埋め込みコードをコピー」リンクがあるので,そちらを押すと iframe のコードがクリップボードにコピーされます.内容はこんな感じ.以下の XXX... の部分は,12 桁の AWS アカウント ID と,YYY... のところは「7360487b-a372-4b15-bc5e-c327ac079825」みたいなダッシュボード ID(要はダッシュボードの URL の末尾のハッシュ文字列です)に置き換えてください.

<iframe
    width="960"
    height="720"
    src="https://ap-northeast-1.quicksight.aws.amazon.com/sn/embed/share/accounts/XXXXXXXXXXXX/dashboards/YYYYYYYYYYYYYYYY">
</iframe>

許可ドメインを設定して実際に埋め込み

埋め込みを実際にする前に,あともう一手間だけ必要で,許可ドメインの設定を行います.これ,実際に埋め込んだページのコードをみたら iframe の内容がコピペできてしまうので,明示的に埋め込みをアクセスしたドメイン以外からだとアクセスできないようになっています.そしてデフォルトではドメインが登録されていない状態です.そのためこのブログのドメインを,許可ドメインに追加します.

まぁこれも最近実装されたアクセス元 IP アドレス制限機能とか使えば,コードをコピペして会社の外に持ち出すとかしても,会社のネットワークの IP アドレス以外からアクセスしても表示されないような制限をかけられますし,また埋め込んだダッシュボードを開く際に認証のポップアップが開くので,SSO とかで社内ネットワークからしかつなげないような IdP を設定しておけば,同様の制限はやはりできます.まぁ何重にも防御できるようにしましょうという話ですね.このあたりよくできてます.

aws.amazon.com

さて,実際にドメインを登録するには,画面右上から「QuickSight の管理」を選択して...

ドメインを追加します.ここでは,このブログのドメインを追加しました.ここではやってませんが,ポート番号の指定とかまでできるみたいですね.

f:id:SAM:20211130144932p:plain

以上です.

実際に埋め込みを表示してみる.

これで埋め込みの準備が完了したので,実際に画面を表示してみます.はてなブログの場合は,ブログの編集画面に直接 iframe タグを貼るだけなので非常に簡単ですね.とはいえ自分のアカウントの内容をここにまるっと晒すのもアレなので,画像だけでご勘弁ください...いちおう適用イメージは以下の通りです.ログインしていない状態でページを開くと,以下のようにエラーが出て,ログインを促されます.

f:id:SAM:20211130163754p:plain

上記画像の「sign in again」リンクをクリックすると,ログイン画面がポップアップで開くので,まずはアカウント名を入れて,QS のユーザー名と ID を入力してログインすれば,以下のようにちゃんと埋め込まれたダッシュボードが表示されます.今回は面倒なので ID/Pass でやっちゃいましたけど,SSO を設定しておけばもっとスムーズにログインできるはず...

f:id:SAM:20211130164105p:plain

カレンダー選択ビューを表示できており,きちんとインタラクティブに動いていることがわかるかと思います.このダッシュボードは適当に作ったやつですけど,サンプルの売り上げデータを時系列で並べて,QS の機能で提供されている時系列予測を適用しています.

f:id:SAM:20211130145810p:plain

ちなみに先ほどの許可ドメインを消してからもう一度アクセスすると,以下のように "ap-northeast-1.quicksight.aws.amazon.com refused to connect" となっており,アクセスできないことが確認できるかと思います.

f:id:SAM:20211130150325p:plain

既存の API ベースの埋め込み機能との比較

最後に,既存の埋め込み機能との比較をしておしまいにしたいと思います.ざっくりまとめると以下の通りです.

1-clock 埋め込み
  • とてもお手軽,10 分で埋め込みできる
  • ダッシュボードの埋め込みにのみ対応,管理・分析系機能の埋め込みは今のところ対応していない
  • 未ログインでアクセスした場合,ポップアップ経由で QS へのログインが必要
従来の埋め込み
  • 1-click と比べると覚えることが多い.API 周りの挙動とかコード記述も必要
  • ダッシュボードを埋め込む以外に,管理・分析系機能部分の埋め込みにも対応している
  • ログイン処理をコード側で行うため,ユーザー側でのログイン処理は発生しない

現状だと 1-click の埋め込みは,既存の埋め込み機能を完全に置き換える形にはならないようなので,適材適所で使い分けする形になるでしょうか.ただ社内ポータルとかでのダッシュボード共有のケースであれば,ユーザーは社内 IdP の認証を済ませている状態でしょうし,1-click 埋め込みを使ったほうがはるかに楽に済むケースが多いように思います.

*1:異動したりロールが変わったり喘息になったり家を買ったり...それにしても最近の住宅相場の値上がりっぷりは本当にやばいですね.

*2:BI とはなんぞやって人は,こちらのページによくまとまっているので,まずはご一読ください.

*3:まぁ Tableau Online とかの選択肢もありますが,それはそれで料金が高いんですよね...

*4:自分はそのあたりを実務で扱った経験がないのでよくわかりません...

*5:以前からのも,この 1-clock のも両方,埋め込み機能は QuickSight の Enterprise Edition でのみ利用できる機能なので,その点ご注意ください.ただ Enterprise Edition だと,$5 キャップ付き従量課金の Reader ライセンスを利用できるので,組織内に大きく展開できるので普通に便利.