Amazon QuickSightのダッシュボードが外部サイトに埋め込めるようになりました #reinvent

Amazon QuickSightのダッシュボードが埋め込み機能に対応し、Amazon QuickSightサイト外でダッシュボードを閲覧できるようになりました。
2018.11.28

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

この記事は2018年11月23日時点の動作をもとに執筆しています。

Amazon QuickSightのダッシュボードが埋め込み機能に対応し、Amazon QuickSightサイト外でダッシュボードを閲覧できるようになりました。

Embed interactive dashboards in your application with Amazon QuickSight | AWS Big Data Blog

Amazon QuickSight では、分析結果をダッシュボードとして公開すると、参照のみ可能なREADERロールのユーザーと分析結果を共有出来ます。BI 活用を促進する上では、利用者の多くを占めるこの参照のみのユーザーが簡単にダッシュボードを閲覧できることが重要です。

今回の機能追加により、ダッシュボードへのアクセス経路として

に続き

  • 外部サイトへの埋め込み

が増えました。

やってみた

埋め込みたいダッシュボードを指定すると、指定した時間だけセッションが有効な埋め込み用 URL が生成されます。

この URL にアクセスすると、QuickSight 未認証状態であっても、ダッシュボードが表示されます。

埋め込み URL の生成

get-dashboard-embed-url API を利用します。

$ aws quicksight get-dashboard-embed-url \
  --aws-account-id 123456789012 \
  --dashboard-id 11-22-33-44-55 \
  --identity-type IAM \
  --session-lifetime-in-minutes 15
{
    "Status": 200,
    "EmbedUrl": "https://us-east-1.quicksight.aws.amazon.com/embed/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/dashboards/11-22-33-44-55?isauthcode=true&identityprovider=quicksight&code=",
    "RequestId": "48385136-eb5f-4a9e-b499-3be690b55a74"
}

レスポンスの EmbedUrl が埋込用 URL です。

この URL には、ダッシュボードのパスだけでなく、認証情報(isauthcode=true&identityprovider=quicksight&code=...)も含まれています。

この URL に対して QuickSight 無認証状態のブラウザでアクセスすると、ダッシュボードが表示されます。

パラメーターについて

パラメーター 意味
--aws-account-id アカウントID
--dashboard-id ダッシュボードID
--identity-type 認証方法を指定します。"IAM"または"QUICKSIGHT"が指定可能。詳細不明
--session-lifetime-in-minutes セッションの有効期間を分で指定。デフォルトは 15分で 600分(10時間)まで指定可能。
--undo-redo-disabled | --no-undo-redo-disabled redo/undo の有効・無効を指定。デフォルトはともに有効
--reset-disabled | --no-reset-disabled ダッシュボード上の作業をすべて無効化する reset 機能の有効・無効を指定。デフォルトは有効

redo/undo/reset ボタンはダッシュボードの上に存在します。

ダッシュボード IDの確認方法

管理画面からダッシュボードにアクセスしたときのの URL は次のような形をしています。

https://AWS-REGION.quicksight.aws.amazon.com/sn/dashboards/DASHBOARD-ID

URL 最後のパス部分がダッシュボードIDです。

実際の URL では 8ce90ad1-7ea5-4e98-b3fa-0f617ca23c9f のように、hex の英数字が並んでいます。

埋め込み URL の有効時間

埋め込み用 URL は5分だけ有効です。有効期間を過ぎてアクセスすると、403:Forbidden エラーが発生します。

expire した URL にブラウザでアクセスした場合

expire した URL にコマンドラインでアクセスした場合

403:Forbidden の例

$ curl -D - https://us-east-1.quicksight.aws.amazon.com/embed/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/dashboards/DASHBORD-ID?isauthcode=true&identityprovider=quicksight&code=...
HTTP/1.1 403 Forbidden
Cache-Control: private
Expires: Thu, 01 Jan 1970 00:00:00 GMT
X-amzn-qs-clientType: EMBEDDING
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
Set-Cookie: JSESSIONID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX; Path=/; Secure; HttpOnly
X-UA-Compatible: IE=Edge
Content-Type: text/html;charset=ISO-8859-1
Content-Language: en-US
Transfer-Encoding: chunked
Vary: Accept-Encoding
Date: Sat, 23 Nov 2018 20:10:46 GMT
Server: AWS Server

<!DOCTYPE html>
<html lang="en">

...

最後に

Amazon QuickSightのダッシュボードが埋め込み機能に対応し、外部サイトで利用できるようになりました。

埋め込み用 URL の有効期限は5分であることから、利用時にオンデマンドでこの URL を生成し、 iframe タグなどで利用することを想定しています。

S3 オブジェクトダウンロード用の一時 URL を生成するのと同じ要領ですね。

ますます便利になった QuickSight ダッシュボードをご活用ください。

それでは。

参考