ステップ 3: ダッシュボードを埋め込む URL - Amazon QuickSight

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

ステップ 3: ダッシュボードを埋め込む URL

 適用先: Enterprise Edition 
   対象者: Amazon QuickSight デベロッパー 

次のセクションでは、埋め込み (JavaScript) QuickSight SDKを使用して、ステップ 2 URLのダッシュボードをウェブサイトまたはアプリケーションページに埋め込む方法について説明します。ではSDK、次のことを実行できます。

  • ダッシュボードを HTMLページに配置します。

  • ダッシュボードにパラメータを渡します。

  • アプリケーションに合わせてカスタマイズされたメッセージでエラー状態を処理します。

GenerateEmbedUrlForAnynymousUser API オペレーションを呼び出して、アプリに埋め込むURLことができる を生成します。これは URL 5 分間有効で、結果のセッションは 10 時間有効です。API オペレーションは、シングルサインオンセッションauth_codeを有効にする を URLに提供します。

以下に、generate-embed-url-for-anynymous-user からのレスポンスの例を示します。

//The URL returned is over 900 characters. For this example, we've shortened the string for //readability and added ellipsis to indicate that it's incomplete. { "Status": "200", "EmbedUrl": "https://quicksightdomain/embed/12345/dashboards/67890..", "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713" }

埋め込みを使用するか、iframe QuickSight SDKに追加して、このダッシュボードをウェブページURLに埋め込みます。固定の高さと幅の数値 (ピクセル単位) を設定した場合、 はそれら QuickSight を使用し、ウィンドウのサイズ変更に伴ってビジュアルを変更しません。相対的な高さと幅の割合を設定すると、 はウィンドウサイズの変化に応じて変更されるレスポンシブレイアウト QuickSight を提供します。埋め込み を使用すると QuickSightSDK、ダッシュボード内のパラメータを制御したり、ページロードの完了やエラーに関してコールバックを受信したりすることもできます。

埋め込みダッシュボードをホストするドメインは、 Amazon QuickSight サブスクリプション用に承認されたドメインのリストである許可リスト に含まれている必要があります。この要件は、未承認のドメインが埋め込みダッシュボードをホストしないようにすることでデータを保護します。ダッシュボードの埋め込み行うドメインの追加に関する詳細は、「を使用して実行時にドメインのリスト化を許可する QuickSight API」を参照してください。

次の例は、生成された の使用方法を示していますURL。このコードはアプリケーションサーバーにあります。

SDK 2.0
<!DOCTYPE html> <html> <head> <title>Dashboard Embedding Example</title> <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@2.0.0/dist/quicksight-embedding-js-sdk.min.js"></script> <script type="text/javascript"> const embedDashboard = async() => { const { createEmbeddingContext, } = QuickSightEmbedding; const embeddingContext = await createEmbeddingContext({ onChange: (changeEvent, metadata) => { console.log('Context received a change', changeEvent, metadata); }, }); const frameOptions = { url: '<YOUR_EMBED_URL>', container: '#experience-container', height: "700px", width: "1000px", onChange: (changeEvent, metadata) => { switch (changeEvent.eventName) { case 'FRAME_MOUNTED': { console.log("Do something when the experience frame is mounted."); break; } case 'FRAME_LOADED': { console.log("Do something when the experience frame is loaded."); break; } } }, }; const contentOptions = { parameters: [ { Name: 'country', Values: [ 'United States' ], }, { Name: 'states', Values: [ 'California', 'Washington' ] } ], locale: "en-US", sheetOptions: { initialSheetId: '<YOUR_SHEETID>', singleSheet: false, emitSizeChangedEventOnSheetChange: false, }, toolbarOptions: { export: false, undoRedo: false, reset: false }, attributionOptions: { overlayContent: false, }, onMessage: async (messageEvent, experienceMetadata) => { switch (messageEvent.eventName) { case 'CONTENT_LOADED': { console.log("All visuals are loaded. The title of the document:", messageEvent.message.title); break; } case 'ERROR_OCCURRED': { console.log("Error occurred while rendering the experience. Error code:", messageEvent.message.errorCode); break; } case 'PARAMETERS_CHANGED': { console.log("Parameters changed. Changed parameters:", messageEvent.message.changedParameters); break; } case 'SELECTED_SHEET_CHANGED': { console.log("Selected sheet changed. Selected sheet:", messageEvent.message.selectedSheet); break; } case 'SIZE_CHANGED': { console.log("Size changed. New dimensions:", messageEvent.message); break; } case 'MODAL_OPENED': { window.scrollTo({ top: 0 // iframe top position }); break; } } }, }; const embeddedDashboardExperience = await embeddingContext.embedDashboard(frameOptions, contentOptions); const selectCountryElement = document.getElementById('country'); selectCountryElement.addEventListener('change', (event) => { embeddedDashboardExperience.setParameters([ { Name: 'country', Values: event.target.value } ]); }); }; </script> </head> <body onload="embedDashboard()"> <span> <label for="country">Country</label> <select id="country" name="country"> <option value="United States">United States</option> <option value="Mexico">Mexico</option> <option value="Canada">Canada</option> </select> </span> <div id="experience-container"></div> </body> </html>
SDK 1.0
<!DOCTYPE html> <html> <head> <title>Basic Embed</title> <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@1.0.15/dist/quicksight-embedding-js-sdk.min.js"></script> <script type="text/javascript"> var dashboard function onDashboardLoad(payload) { console.log("Do something when the dashboard is fully loaded."); } function onError(payload) { console.log("Do something when the dashboard fails loading"); } function embedDashboard() { var containerDiv = document.getElementById("embeddingContainer"); var options = { // replace this dummy url with the one generated via embedding API url: "https://us-east-1.quicksight.aws.amazon.com/sn/dashboards/dashboardId?isauthcode=true&identityprovider=quicksight&code=authcode", container: containerDiv, parameters: { country: "United States" }, scrolling: "no", height: "700px", width: "1000px", locale: "en-US", footerPaddingEnabled: true }; dashboard = QuickSightEmbedding.embedDashboard(options); dashboard.on("error", onError); dashboard.on("load", onDashboardLoad); } function onCountryChange(obj) { dashboard.setParameters({country: obj.value}); } </script> </head> <body onload="embedDashboard()"> <span> <label for="country">Country</label> <select id="country" name="country" onchange="onCountryChange(this)"> <option value="United States">United States</option> <option value="Mexico">Mexico</option> <option value="Canada">Canada</option> </select> </span> <div id="embeddingContainer"></div> </body> </html>

この例では、 QuickSight 埋め込みを使用して、 を使用してウェブサイトに埋め込みダッシュボードをSDKロードします JavaScript。コピーを取得するには、次のいずれかを実行します。

  • から Amazon QuickSight Embedding SDK をダウンロードします GitHub。このリポジトリは、 QuickSight デベロッパーグループによって管理されます。

  • から最新の QuickSight 埋め込みSDKバージョンをダウンロードしますhttps://www.npmjs.com/package/amazon-quicksight-embedding-sdk

  • JavaScript 依存関係npmに を使用する場合は、次のコマンドを実行してダウンロードしてインストールします。

    npm install amazon-quicksight-embedding-sdk