登録済みユーザー向けの QuickSight ダッシュボードの埋め込み - Amazon QuickSight

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

登録済みユーザー向けの QuickSight ダッシュボードの埋め込み

重要

Amazon QuickSight に、埋め込み分析のための新しい API オペレーションである GenerateEmbedUrlForAnonymousUserGenerateEmbedUrlForRegisteredUser が追加されました。

ダッシュボードや QuickSight コンソールの埋め込みには、これまで通り GetDashboardEmbedUrl および GetSessionEmbedUrl API オペレーションを使用できますが、これに最新の埋め込み機能は含まれません。古い API オペレーションを使用した埋め込みの詳細については、GetDashboardEmbedURL および GetSessionEmbedURL API 操作を使用した分析の埋め込み を参照してください。

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

以下のセクションで、Amazon QuickSight の登録済みユーザー向けに、 Amazon QuickSight 埋め込みダッシュボードを設定する方法の詳細について説明します。

ステップ 1: 許可をセットアップする

次のセクションでは、バックエンドアプリケーションまたはウェブサーバーのアクセス許可を設定する方法について説明します。このタスクには IAM への管理者アクセス権が必要です。

ダッシュボードにアクセスする各ユーザーは、Amazon QuickSight のアクセスとダッシュボードへのアクセス許可を付与するロールを引き受けます。これを可能にするには、 で IAM ロールを作成します AWS アカウント。IAM ポリシーをロールに関連付けて、それを引き受けるすべてのユーザーにアクセス許可を付与します。IAM ロールでは、特定のユーザープールに埋め込み URL を取得するアクセス許可を提供する必要があります。ワイルドカード文字 * を使用すると、特定の名前空間のすべてのユーザー、または特定の名前空間のユーザーのサブセットに対して、URL を生成する許可を付与できます。このためには、quicksight:GenerateEmbedUrlForRegisteredUser を追加します。

IAM ポリシーで条件を作成し、デベロッパーが GenerateEmbedUrlForRegisteredUser API オペレーションの AllowedDomains パラメータにリストできるドメインを制限できます。AllowedDomains パラメータはオプションのパラメータです。このパラメータは、デベロッパーとしてのユーザーに対し、[Manage QuickSight] (QuickSight の管理) メニューで設定されている静的ドメインを上書きするためのオプションを付与します。代わりに、生成された URL にアクセスできるドメインもしくはサブドメインを、3 つまでリストアップできます。この URL は、作成した Web サイトに埋め込むことが可能です。パラメータにリストされているドメインのみが、埋め込みビジュアルにアクセスすることが可能です。この状態にしていない場合、インターネット上の任意のドメインを AllowedDomains パラメータにリストできてしまいます。

デベロッパーがこのパラメータで使用できるドメインを制限するには、AllowedEmbeddingDomains 条件を IAM ポリシーに追加します。AllowedDomains パラメータの詳細については、「Amazon QuickSight API リファレンス」の「GenerateEmbedUrlForRegisteredUser」を参照してください。

次のサンプルポリシーで、これらの権限が付与されます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "quicksight:GenerateEmbedUrlForRegisteredUser" ], "Resource": "arn:partition:quicksight:region:accountId:user/namespace/userName", "Condition": { "ForAllValues:StringEquals": { "quicksight:AllowedEmbeddingDomains": [ "https://my.static.domain1.com", "https://*.my.static.domain2.com" ] } } } ] }

また、初めて Amazon QuickSight の閲覧者になるユーザーを作成している場合は、ポリシーに quicksight:RegisterUser 許可を追加する必要があります。

次のサンプルポリシーでは、初めて QuickSight リーダーとなるユーザーに対して、埋め込み URL を取得する許可が付与されます。

{ "Version": "2012-10-17", "Statement": [ { "Action": "quicksight:RegisterUser", "Resource": "*", "Effect": "Allow" }, { "Effect": "Allow", "Action": [ "quicksight:GenerateEmbedUrlForRegisteredUser" ], "Resource": [ "arn:{{partition}}:quicksight:{{region}}:{{accountId}}:namespace/{{namespace}}", "arn:{{partition}}:quicksight:{{region}}:{{accountId}}:dashboard/{{dashboardId-1}}", "arn:{{partition}}:quicksight:{{region}}:{{accountId}}:dashboard/{{dashboardId-2}}" ], "Condition": { "ForAllValues:StringEquals": { "quicksight:AllowedEmbeddingDomains": [ "https://my.static.domain1.com", "https://*.my.static.domain2.com" ] } } } ] }

最後に、作成したロールへのアクセスを許可するには、アプリケーションの IAM ID に関連付けられた信頼ポリシーが必要です。つまり、ユーザーがアプリケーションにアクセスすると、アプリケーションがユーザーに代わってロールを引き受け、QuickSight でユーザーをプロビジョニングします。次の例は、サンプルの信頼ポリシーを示しています。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLambdaFunctionsToAssumeThisRole", "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Sid": "AllowEC2InstancesToAssumeThisRole", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

OpenId Connect または SAML 認証の信頼ポリシーに関する詳細については、「IAM ユーザーガイド」の以下のセクションを参照してください。

ステップ 2: 認証コードがアタッチされた URL を生成する

次のセクションでは、ユーザーの認証方法とアプリケーションサーバー上の埋め込みダッシュボード URL の取得方法について説明します。IAM または QuickSight ID タイプのダッシュボードを埋め込む場合は、ダッシュボードをユーザーと共有します。

ユーザーがアプリケーションにアクセスすると、アプリケーションはユーザーに代わって IAM ロールを引き受けます。そのユーザーがまだ存在しない場合は、アプリケーションがユーザーを QuickSight に追加します。次に、一意のロールセッション ID として識別子を渡します。

これらのステップを実行すると、ダッシュボードの各閲覧者は、Quicksight で確実に一意的にプロビジョニングされます。行レベルのセキュリティやパラメータの動的デフォルトなど、ユーザーごとの設定も強制されます。

次の例では、ユーザーに代わって IAM 認証を実行します。このコードはアプリケーションサーバー上で実行されます。

import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.auth.AWSCredentialsProvider; import com.amazonaws.regions.Regions; import com.amazonaws.services.quicksight.AmazonQuickSight; import com.amazonaws.services.quicksight.AmazonQuickSightClientBuilder; import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForRegisteredUserRequest; import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForRegisteredUserResult; import com.amazonaws.services.quicksight.model.RegisteredUserEmbeddingExperienceConfiguration; import com.amazonaws.services.quicksight.model.RegisteredUserDashboardEmbeddingConfiguration; /** * Class to call QuickSight AWS SDK to get url for dashboard embedding. */ public class GetQuicksightEmbedUrlRegisteredUserDashboardEmbedding { private final AmazonQuickSight quickSightClient; public GetQuicksightEmbedUrlRegisteredUserDashboardEmbedding() { this.quickSightClient = AmazonQuickSightClientBuilder .standard() .withRegion(Regions.US_EAST_1.getName()) .withCredentials(new AWSCredentialsProvider() { @Override public AWSCredentials getCredentials() { // provide actual IAM access key and secret key here return new BasicAWSCredentials("access-key", "secret-key"); } @Override public void refresh() {} } ) .build(); } public String getQuicksightEmbedUrl( final String accountId, // AWS Account ID final String dashboardId, // Dashboard ID to embed final List<String> allowedDomains, // Runtime allowed domain for embedding final String userArn // Registered user arn to use for embedding. Refer to Get Embed Url section in developer portal to find out how to get user arn for a QuickSight user. ) throws Exception { final RegisteredUserEmbeddingExperienceConfiguration experienceConfiguration = new RegisteredUserEmbeddingExperienceConfiguration() .withDashboard(new RegisteredUserDashboardEmbeddingConfiguration().withInitialDashboardId(dashboardId)); final GenerateEmbedUrlForRegisteredUserRequest generateEmbedUrlForRegisteredUserRequest = new GenerateEmbedUrlForRegisteredUserRequest(); generateEmbedUrlForRegisteredUserRequest.setAwsAccountId(accountId); generateEmbedUrlForRegisteredUserRequest.setUserArn(userArn); generateEmbedUrlForRegisteredUserRequest.setAllowedDomains(allowedDomains); generateEmbedUrlForRegisteredUserRequest.setExperienceConfiguration(experienceConfiguration); final GenerateEmbedUrlForRegisteredUserResult generateEmbedUrlForRegisteredUserResult = quickSightClient.generateEmbedUrlForRegisteredUser(generateEmbedUrlForRegisteredUserRequest); return generateEmbedUrlForRegisteredUserResult.getEmbedUrl(); } }
global.fetch = require('node-fetch'); const AWS = require('aws-sdk'); function generateEmbedUrlForRegisteredUser( accountId, dashboardId, openIdToken, // Cognito-based token userArn, // registered user arn roleArn, // IAM user role to use for embedding sessionName, // Session name for the roleArn assume role allowedDomains, // Runtime allowed domain for embedding getEmbedUrlCallback, // GetEmbedUrl success callback method errorCallback // GetEmbedUrl error callback method ) { const stsClient = new AWS.STS(); let stsParams = { RoleSessionName: sessionName, WebIdentityToken: openIdToken, RoleArn: roleArn } stsClient.assumeRoleWithWebIdentity(stsParams, function(err, data) { if (err) { console.log('Error assuming role'); console.log(err, err.stack); errorCallback(err); } else { const getDashboardParams = { "AwsAccountId": accountId, "ExperienceConfiguration": { "Dashboard": { "InitialDashboardId": dashboardId } }, "UserArn": userArn, "AllowedDomains": allowedDomains, "SessionLifetimeInMinutes": 600 }; const quicksightClient = new AWS.QuickSight({ region: process.env.AWS_REGION, credentials: { accessKeyId: data.Credentials.AccessKeyId, secretAccessKey: data.Credentials.SecretAccessKey, sessionToken: data.Credentials.SessionToken, expiration: data.Credentials.Expiration } }); quicksightClient.generateEmbedUrlForRegisteredUser(getDashboardParams, function(err, data) { if (err) { console.log(err, err.stack); errorCallback(err); } else { const result = { "statusCode": 200, "headers": { "Access-Control-Allow-Origin": "*", // Use your website domain to secure access to GetEmbedUrl API "Access-Control-Allow-Headers": "Content-Type" }, "body": JSON.stringify(data), "isBase64Encoded": false } getEmbedUrlCallback(result); } }); } }); }
import json import boto3 from botocore.exceptions import ClientError sts = boto3.client('sts') # Function to generate embedded URL # accountId: AWS account ID # dashboardId: Dashboard ID to embed # userArn: arn of registered user # allowedDomains: Runtime allowed domain for embedding # roleArn: IAM user role to use for embedding # sessionName: session name for the roleArn assume role def getEmbeddingURL(accountId, dashboardId, userArn, allowedDomains, roleArn, sessionName): try: assumedRole = sts.assume_role( RoleArn = roleArn, RoleSessionName = sessionName, ) except ClientError as e: return "Error assuming role: " + str(e) else: assumedRoleSession = boto3.Session( aws_access_key_id = assumedRole['Credentials']['AccessKeyId'], aws_secret_access_key = assumedRole['Credentials']['SecretAccessKey'], aws_session_token = assumedRole['Credentials']['SessionToken'], ) try: quicksightClient = assumedRoleSession.client('quicksight', region_name='us-west-2') response = quicksightClient.generate_embed_url_for_registered_user( AwsAccountId=accountId, ExperienceConfiguration = { "Dashboard": { "InitialDashboardId": dashboardId } }, UserArn = userArn, AllowedDomains = allowedDomains, SessionLifetimeInMinutes = 600 ) return { 'statusCode': 200, 'headers': {"Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Content-Type"}, 'body': json.dumps(response), 'isBase64Encoded': bool('false') } except ClientError as e: return "Error generating embedding url: " + str(e)

次の例は、埋め込みダッシュボードの URL を生成するためにアプリケーションサーバーで使用できる JavaScript (Node.js) を示しています。ダッシュボードを表示するには、ウェブサイトまたはアプリでこの URL を使用します。

const AWS = require('aws-sdk'); const https = require('https'); var quicksightClient = new AWS.Service({ apiConfig: require('./quicksight-2018-04-01.min.json'), region: 'us-east-1', }); quicksightClient.generateEmbedUrlForRegisteredUser({ 'AwsAccountId': '111122223333', 'ExperienceConfiguration': { 'Dashboard': { 'InitialDashboardId': '1c1fe111-e2d2-3b30-44ef-a0e111111cde' } }, 'UserArn': 'REGISTERED_USER_ARN', 'AllowedDomains': allowedDomains, 'SessionLifetimeInMinutes': 100 }, function(err, data) { console.log('Errors: '); console.log(err); console.log('Response: '); console.log(data); });
//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' }

次の例は、埋め込みダッシュボードの URL を生成するためにアプリケーションサーバーで使用できる .NET/C# コードを示しています。ダッシュボードを表示するには、ウェブサイトまたはアプリでこの URL を使用します。

using System; using Amazon.QuickSight; using Amazon.QuickSight.Model; namespace GenerateDashboardEmbedUrlForRegisteredUser { class Program { static void Main(string[] args) { var quicksightClient = new AmazonQuickSightClient( AccessKey, SecretAccessKey, SessionToken, Amazon.RegionEndpoint.USEast1); try { RegisteredUserDashboardEmbeddingConfiguration registeredUserDashboardEmbeddingConfiguration = new RegisteredUserDashboardEmbeddingConfiguration { InitialDashboardId = "dashboardId" }; RegisteredUserEmbeddingExperienceConfiguration registeredUserEmbeddingExperienceConfiguration = new RegisteredUserEmbeddingExperienceConfiguration { Dashboard = registeredUserDashboardEmbeddingConfiguration }; Console.WriteLine( quicksightClient.GenerateEmbedUrlForRegisteredUserAsync(new GenerateEmbedUrlForRegisteredUserRequest { AwsAccountId = "111122223333", ExperienceConfiguration = registeredUserEmbeddingExperienceConfiguration, UserArn = "REGISTERED_USER_ARN", AllowedDomains = allowedDomains, SessionLifetimeInMinutes = 100 }).Result.EmbedUrl ); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } }

ロールを引き受けるには、次のいずれかの AWS Security Token Service (AWS STS) API オペレーションを選択します。

  • AssumeRole – ロールを引き受けるために IAM ID を使用している場合は、このオペレーションを使用します。

  • AssumeRoleWithWebIdentity – ユーザーの認証にウェブ ID プロバイダーを使用している場合は、このオペレーションを使用します。

  • AssumeRoleWithSaml – ユーザーの認証に SAML を使用している場合は、このオペレーションを使用します。

次の例は、IAM ロールを設定するための CLI コマンドを示しています。ロールは、quicksight:GenerateEmbedUrlForRegisteredUser を有効にする許可を取得する必要があります。ユーザーがダッシュボードを初めて開いたときに、ジャストインタイム方式でユーザーを追加する場合は、ロールには quicksight:RegisterUser を有効にするアクセス許可も必要です。

aws sts assume-role \ --role-arn "arn:aws:iam::111122223333:role/embedding_quicksight_dashboard_role" \ --role-session-name john.doe@example.com

assume-role オペレーションは、アクセスキー、シークレットキー、およびセッショントークンの 3 つの出力パラメータを返します。

注記

AssumeRole オペレーションを呼び出すときに ExpiredToken エラーが発生した場合は、以前の SESSION TOKEN がまだ環境変数に残っている可能性があります。以下の変数を設定することで、これをオフにします。

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

  • AWS_SESSION_TOKEN

次の例は、CLI でこれら 3 つのパラメータを設定する方法を示しています。Microsoft Windows マシンを使用している場合は、export の代わりに set を使用します。

export AWS_ACCESS_KEY_ID = "access_key_from_assume_role" export AWS_SECRET_ACCESS_KEY = "secret_key_from_assume_role" export AWS_SESSION_TOKEN = "session_token_from_assume_role"

これらのコマンドを実行すると、ウェブサイトにアクセスしているユーザーのロールセッション ID が embedding_quicksight_dashboard_role/john.doe@example.com に設定されます。ロールセッション ID は、role-arn の役割名と role-session-name 値で構成されています。各ユーザーに一意のロールセッション ID を使用すると、各ユーザーに適切なアクセス許可が設定されます。また、ユーザーアクセスのスロットリングが防止されます。スロットリングは、同じユーザーが複数の場所から QuickSight にアクセスするのを防ぐセキュリティ機能です。

ロールセッション IDも QuickSight のユーザー名になります。このパターンを使用して、QuickSight でユーザーを事前にプロビジョニングしたり、初めてダッシュボードにアクセスしたときにユーザーをプロビジョニングしたりできます。

次の例は、ユーザーをプロビジョニングするために使用できる CLI コマンドを示しています。RegisterUserDescribeUser、およびその他の QuickSight API オペレーションの詳細については、「QuickSight API Reference」(QuickSight API リファレンス) を参照してください。

aws quicksight register-user \ --aws-account-id 111122223333 \ --namespace default \ --identity-type IAM \ --iam-arn "arn:aws:iam::111122223333:role/embedding_quicksight_dashboard_role" \ --user-role READER \ --user-name jhnd \ --session-name "john.doe@example.com" \ --email john.doe@example.com \ --region us-east-1 \ --custom-permissions-name TeamA1

Microsoft AD を介して認証されているユーザーに対しては、RegisterUser を使用した設定の必要はありません。代わりに、ユーザーが QuickSight に初めてアクセスしたときに自動的にサブスクライブされる必要があります。Microsoft AD ユーザーの場合、 DescribeUser を使用してユーザー ARN を取得できます。

ユーザーが初めて QuickSight にアクセスしたときに、ダッシュボードを共有しているグループにこのユーザーを追加することもできます。次の例は、ユーザーをグループに追加するための CLI コマンドを示しています。

aws quicksight create-group-membership \ --aws-account-id=111122223333 \ --namespace=default \ --group-name=financeusers \ --member-name="embedding_quicksight_dashboard_role/john.doe@example.com"

これで、ダッシュボードにアクセスできるアプリケーションのユーザーであり、QuickSight のユーザーでもあるユーザーが追加されました。

最後に、ダッシュボードの署名付き URL を取得するには、アプリケーションサーバーから generate-embed-url-for-registered-user を呼び出します。これは埋め込み可能なダッシュボードの URL を返します。次の例は、 AWS Managed Microsoft AD またはシングルサインオン (IAM アイデンティティセンター) で認証されたユーザーのサーバー側の呼び出しを使用して、埋め込みダッシュボードの URL を生成する方法を示しています。

aws quicksight generate-embed-url-for-registered-user \ --aws-account-id 111122223333 \ --session-lifetime-in-minutes 600 \ --user-arn arn:aws:quicksight:us-east-1:111122223333:user/default/embedding_quicksight_visual_role/embeddingsession \ --allowed-domains '["domain1","domain2"]' \ --experience-configuration Dashboard={InitialDashboardId=1a1ac2b2-3fc3-4b44-5e5d-c6db6778df89}

このオペレーションの使用に関する詳細については、GenerateEmbedUrlForRegisteredUser を参照してください。これと他の API オペレーションは、独自のコードで使用できます。

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

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

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

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

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

GenerateEmbedUrlForRegisteredUser API オペレーションを呼び出して URL を生成し、アプリケーションに埋め込みます。この URL は 5 分間有効で、得られたセッションは最大 10 時間有効です。API オペレーションは、シングルサインオンセッションを有効にする auth_code の URL を提供します。

以下に、generate-embed-url-for-registered-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" }

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

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

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

<!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>
<!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>

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

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

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

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

    npm install amazon-quicksight-embedding-sdk