Intégration de représentations visuelles QuickSight pour les utilisateurs enregistrés - Amazon QuickSight

Intégration de représentations visuelles QuickSight pour les utilisateurs enregistrés

 S'applique à : édition Enterprise 
   Public cible : développeurs Amazon QuickSight 

Dans les sections suivantes, vous trouverez des informations détaillées sur la configuration des représentations visuelles Amazon QuickSight intégrées pour les utilisateurs enregistrés à l'aide de Amazon QuickSight.

Étape 1 : Configurer des autorisations

Dans la section suivante, vous apprendrez à configurer les autorisations pour l'application backend ou le serveur web. Cette tâche requiert un accès d'administration à IAM.

Chaque utilisateur qui accède à une représentation visuelle assume un rôle qui lui permet d'accéder à Amazon QuickSight et à la représentation visuelle. Pour que cela soit possible, créez un rôle IAM dans votre Compte AWS. Associez une politique IAM au rôle afin de fournir des autorisations à n'importe quel utilisateur qui assume ce rôle. Le rôle IAM doit fournir des autorisations pour récupérer les URL d'intégration pour un groupe d'utilisateurs spécifique. À l'aide du caractère générique *, vous pouvez accorder l'autorisation de générer une URL pour tous les utilisateurs d'un espace de noms spécifique, ou pour un sous-ensemble d'utilisateurs dans des espaces de noms spécifiques. Pour cela, ajoutez quicksight:GenerateEmbedUrlForRegisteredUser.

Vous pouvez créer une condition dans votre politique IAM qui limite les domaines que les développeurs peuvent répertorier dans le paramètre AllowedDomains d'une opération d'API GenerateEmbedUrlForAnonymousUser. Le paramètre AllowedDomains est un paramètre facultatif. En tant que développeur, il vous donne la possibilité de remplacer les domaines statiques configurés dans le menu Gérer QuickSight. Vous pouvez plutôt répertorier jusqu'à trois domaines ou sous-domaines qui peuvent accéder à une URL générée. Cette URL est ensuite intégrée au site web que vous créez. Seuls les domaines répertoriés dans le paramètre peuvent accéder au tableau de bord intégré. Sans cette condition, vous pouvez répertorier n'importe quel domaine sur Internet dans le paramètre AllowedDomains.

Pour limiter les domaines que les développeurs peuvent utiliser avec ce paramètre, ajoutez une condition AllowedEmbeddingDomains à votre politique IAM. Pour plus d'informations sur le paramètre AllowedDomains, consultez GenerateEmbedUrlForRegisteredUser (français non garanti) dans la Référence d'API Amazon QuickSight (français non garanti).

L'exemple de stratégie suivant fournit ces autorisations.

De plus, si vous créez pour la première fois des utilisateurs qui seront des lecteurs Amazon QuickSight, assurez-vous d'ajouter l'autorisation quicksight:RegisterUser dans la politique.

L'exemple de politique suivant autorise la récupération d'une URL d'intégration pour les nouveaux utilisateurs destinés à lire QuickSight.

Enfin, l'identité IAM de votre application doit avoir une politique d'approbation qui lui est associée afin d'autoriser l'accès au rôle que vous venez de créer. Cela signifie que lorsqu'un utilisateur accède à votre application, votre application peut assumer le rôle pour le compte de l'utilisateur, et provisionner l'utilisateur dans QuickSight. Voici un exemple de politique d'approbation.

JSON
{ "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" } ] }

Pour plus d'informations sur les stratégies d'approbation pour OpenId Connect ou l'authentification SAML, consultez les sections suivantes du Guide de l'utilisateur IAM :

Étape 2 : Générer l'URL avec le code d'authentification en pièce jointe

Dans la section suivante, vous découvrirez comment authentifier votre utilisateur QuickSight et obtenir l'URL de la représentation visuelle intégrable sur votre serveur d'applications. Si vous envisagez d'intégrer les représentations visuelles pour les types d'identités IAM ou Amazon QuickSight, partagez la représentation visuelle Q avec les utilisateurs QuickSight.

Lorsqu'un utilisateur QuickSight accède à votre application, l'application assume le rôle IAM pour le compte de l'utilisateur QuickSight. Ensuite, elle ajoute l'utilisateur à QuickSight, si ce dernier n'existe pas déjà. Puis, elle transmet un identifiant comme ID de session de rôle unique.

L'exécution des étapes décrites garantit que chaque utilisateur de la représentation visuelle est provisionné de manière unique dans QuickSight. Elle applique également les paramètres par utilisateur, tels que les valeurs dynamiques et de sécurité par défaut au niveau des lignes pour les paramètres.

Les exemples suivants effectuent l'authentification IAM pour le compte de l'utilisateur QuickSight. Ce code s'exécute sur votre serveur d'applications.

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.DashboardVisualId; import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForRegisteredUserRequest; import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForRegisteredUserResult; import com.amazonaws.services.quicksight.model.RegisteredUserDashboardVisualEmbeddingConfiguration; import com.amazonaws.services.quicksight.model.RegisteredUserEmbeddingExperienceConfiguration; import java.util.List; /** * Class to call QuickSight AWS SDK to get url for Visual embedding. */ public class GenerateEmbedUrlForRegisteredUserTest { private final AmazonQuickSight quickSightClient; public GenerateEmbedUrlForRegisteredUserTest() { 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 getEmbedUrl( final String accountId, // AWS Account ID final String dashboardId, // Dashboard ID of the dashboard to embed final String sheetId, // Sheet ID of the sheet to embed final String visualId, // Visual ID of the visual to embed final List<String> allowedDomains, // Runtime allowed domains for embedding final String userArn // Registered user arn of the user that you want to provide embedded visual. Refer to Get Embed Url section in developer portal to find out how to get user arn for a QuickSight user. ) throws Exception { final DashboardVisualId dashboardVisual = new DashboardVisualId() .withDashboardId(dashboardId) .withSheetId(sheetId) .withVisualId(visualId); final RegisteredUserDashboardVisualEmbeddingConfiguration registeredUserDashboardVisualEmbeddingConfiguration = new RegisteredUserDashboardVisualEmbeddingConfiguration() .withInitialDashboardVisualId(dashboardVisual); final RegisteredUserEmbeddingExperienceConfiguration registeredUserEmbeddingExperienceConfiguration = new RegisteredUserEmbeddingExperienceConfiguration() .withDashboardVisual(registeredUserDashboardVisualEmbeddingConfiguration); final GenerateEmbedUrlForRegisteredUserRequest generateEmbedUrlForRegisteredUserRequest = new GenerateEmbedUrlForRegisteredUserRequest() .withAwsAccountId(accountId) .withUserArn(userArn) .withExperienceConfiguration(registeredUserEmbeddingExperienceConfiguration) .withAllowedDomains(allowedDomains); final GenerateEmbedUrlForRegisteredUserResult generateEmbedUrlForRegisteredUserResult = quickSightClient.generateEmbedUrlForRegisteredUser(generateEmbedUrlForRegisteredUserRequest); return generateEmbedUrlForRegisteredUserResult.getEmbedUrl(); } }
global.fetch = require('node-fetch'); const AWS = require('aws-sdk'); function generateEmbedUrlForRegisteredUser( accountId, // Your AWS account ID dashboardId, // Dashboard ID to which the constructed URL points sheetId, // Sheet ID to which the constructed URL points visualId, // Visual ID to which the constructed URL points 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": { "DashboardVisual": { "InitialDashboardVisualId": { "DashboardId": dashboardId, "SheetId": sheetId, "VisualId": visualId } } }, "UserArn": userArn, "AllowedDomains": allowedDomains, "SessionLifetimeInMinutes": 600 }; const quicksightGetDashboard = 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 } }); quicksightGetDashboard.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 # sheetId: SHEET ID to embed from the dashboard # visualId: Id for the Visual you want to embedded from the dashboard sheet. # 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, sheetId, visualId, 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 = { 'DashboardVisual': { 'InitialDashboardVisualId': { 'DashboardId': dashboardId, 'SheetId': sheetId, 'VisualId': visualId } }, }, 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)

L'exemple suivant montre le code JavaScript (Node.js) que vous pouvez utiliser sur le serveur d'applications afin de générer l'URL pour le tableau de bord intégré. Vous pouvez utiliser cette URL dans votre site Web ou votre application pour afficher le tableau de bord.

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': { 'DashboardVisual': { 'InitialDashboardVisualId': { 'DashboardId': 'dashboard_id', 'SheetId': 'sheet_id', 'VisualId': 'visual_id' } } }, '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/sheets/12345/visuals/67890...", "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713" }

L'exemple suivant montre le code .NET/C # que vous pouvez utiliser sur le serveur d'applications afin de générer l'URL pour le tableau de bord intégré. Vous pouvez utiliser cette URL dans votre site Web ou votre application pour afficher le tableau de bord.

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 { DashboardVisualId dashboardVisual = new DashboardVisualId { DashboardId = "dashboard_id", SheetId = "sheet_id", VisualId = "visual_id" }; RegisteredUserDashboardVisualEmbeddingConfiguration registeredUserDashboardVisualEmbeddingConfiguration = new RegisteredUserDashboardVisualEmbeddingConfiguration { InitialDashboardVisualId = dashboardVisual }; RegisteredUserEmbeddingExperienceConfiguration registeredUserEmbeddingExperienceConfiguration = new RegisteredUserEmbeddingExperienceConfiguration { DashboardVisual = registeredUserDashboardVisualEmbeddingConfiguration }; 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); } } } }

Pour assumer le rôle, choisissez l'une des opérations d'API AWS Security Token Service (AWS STS) suivantes :

  • AssumeRole : utilisez cette opération lorsque vous utilisez une identité IAM pour assumer le rôle.

  • AssumeRoleWithWebIdentity : utilisez cette opération lorsque vous utilisez un fournisseur d'identités web pour authentifier votre utilisateur.

  • AssumeRoleWithSaml : utilisez cette opération lorsque vous utilisez le langage SAML pour authentifier vos utilisateurs.

L'exemple suivant illustre la commande de l'interface de ligne de commande pour définir le rôle IAM. Les autorisations doivent être activées pour quicksight:GenerateEmbedUrlForRegisteredUser. Si vous adoptez une approche juste à temps pour ajouter des utilisateurs lorsqu'ils ouvrent un tableau de bord pour la première fois, les autorisations doivent également être activées pour quicksight:RegisterUser.

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

L'opération assume-role renvoie trois paramètres de sortie : la clé d'accès, la clé secrète et le jeton de session.

Note

Si vous obtenez une erreur ExpiredToken lorsque vous appelez l'opération AssumeRole, ceci est probablement dû au fait que le précédent SESSION TOKEN est encore dans les variables de l'environnement. Pour l'effacer, définissez les variables suivantes :

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

  • AWS_SESSION_TOKEN

L'exemple suivant montre comment définir ces trois paramètres dans l'interface de ligne de commande. Si vous utilisez une machine Microsoft Windows, utilisez set au lieu de export.

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"

L'exécution de ces commandes définit l'ID de session de rôle de l'utilisateur visitant votre site web sur embedding_quicksight_visual_role/john.doe@example.com. L'ID de session de rôle se compose du nom de rôle issu du role-arn et de la valeur role-session-name. L'utilisation de l'ID de session de rôle unique pour chaque utilisateur garantit que les autorisations appropriées sont définies pour chaque utilisateur. Ceci évite également toute limitation des accès des utilisateurs. La limitation est une fonctionnalité de sécurité qui empêche à un même utilisateur d'accéder à QuickSight depuis différents endroits.

L'ID de session de rôle devient également le nom d'utilisateur dans QuickSight. Vous pouvez utiliser ce modèle pour provisionner vos utilisateurs dans QuickSight à l'avance, ou pour les provisionner la première fois qu'ils accèdent au tableau de bord.

L'exemple suivant montre la commande de l'interface de ligne de commande que vous pouvez utiliser pour provisionner un utilisateur. Pour plus d'informations sur RegisterUser (français non garanti), DescribeUser (français non garanti) et les autres opérations d'API QuickSight, consultez la Référence d'API Amazon QuickSight (français non garanti).

aws quicksight register-user \ --aws-account-id 111122223333 \ --namespace default \ --identity-type IAM \ --iam-arn "arn:aws:iam::111122223333:role/embedding_quicksight_visual_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

Si l'utilisateur est authentifié via Microsoft AD, vous n'avez pas besoin d'utiliser RegisterUser pour le configurer. Au lieu de cela, il doit être automatiquement abonné la première fois qu'il accède à QuickSight. Pour les utilisateurs Microsoft AD, vous pouvez utiliser DescribeUser pour obtenir l'ARN de l'utilisateur.

La première fois qu'un utilisateur accède à QuickSight, vous pouvez également ajouter cet utilisateur au groupe avec lequel la représentation visuelle est partagée. L'exemple suivant montre la commande de l'interface de ligne de commande pour ajouter un utilisateur à un groupe.

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

Vous avez maintenant un utilisateur de votre application qui est également un utilisateur de QuickSight et qui a accès à la représentation visuelle.

Enfin, pour obtenir une URL signée pour la représentation visuelle, appelez generate-embed-url-for-registered-user à partir du serveur d'applications. Ceci renvoie l'URL de la représentation visuelle intégrable. L'exemple suivant indique comment générer l'URL d'une représentation visuelle intégrée à l'aide d'un appel côté serveur pour les utilisateurs authentifiés à l'aide de AWS Managed Microsoft AD ou de l'authentification unique (IAM Identity Center).

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 'DashboardVisual={InitialDashboardVisualId={DashboardId=dashboard_id,SheetId=sheet_id,VisualId=visual_id}}'

Pour plus d'informations sur l'utilisation de cette opération, consultez GenerateEmbedUrlForRegisteredUser. Vous pouvez utiliser cette opération et d'autres opérations d'API dans votre propre code.

Étape 3 : Intégrer l'URL de la représentation visuelle

Dans la section suivante, vous découvrirez comment utiliser le kit SDK d'intégration Amazon QuickSight (JavaScript) pour intégrer l'URL de la représentation visuelle de l'étape 3 sur votre site web ou sur votre page d'application. Le kit SDK vous permet d'effectuer les opérations suivantes :

  • Placer la représentation visuelle sur une page HTML.

  • Transmettre les paramètres à la représentation visuelle.

  • Gérer les états d'erreurs avec des messages personnalisés pour votre application.

Appelez l'opération d'API GenerateEmbedUrlForRegisteredUser pour générer l'URL que vous pouvez intégrer dans votre application. Cette URL est valable pendant 5 minutes et la session qui en résulte est valide jusqu'à 10 heures. L'opération d'API fournit l'URL avec un auth_code qui permet une session à connexion unique.

Voici un exemple de réponse de generate-embed-url-for-registered-user. Dans cet exemple, quicksightdomain est l'URL que vous utilisez pour accéder à votre compte QuickSight.

//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/sheets/12345/visuals/67890...", "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713" }

Intégrez cette représentation visuelle dans votre page web en utilisant le kit SDK d'intégration QuickSight (français non garanti) ou en ajoutant cette URL dans un iframe. Si vous définissez une hauteur et une largeur fixes (en pixels), QuickSight utilise ces valeurs et ne change pas votre représentation visuelle pendant le redimensionnement de votre fenêtre. Si vous définissez un pourcentage relatif pour la hauteur et la largeur, QuickSight génère une présentation réactive, qui change en fonction du redimensionnement de votre fenêtre. En utilisant le kit SDK d'intégration Amazon QuickSight, vous pouvez également contrôler les paramètres dans la représentation visuelle et recevoir des rappels en termes de chargement des pages et d'erreurs.

Le domaine qui hébergera les représentations visuelles et les tableaux de bord intégrés doit figurer sur la liste d'autorisation, la liste des domaines approuvés pour votre abonnement Quick Suite. Cette exigence protège vos données en empêchant les domaines non approuvés d'héberger des représentations visuelles et des tableaux de bord intégrés. Pour plus d'informations sur l'ajout de domaines aux représentations visuelles et aux tableaux de bord intégrés, consultez la rubrique Autorisation de répertorier les domaines au moment de l'exécution à l'aide de l'API QuickSight.

L'exemple suivant montre comment utiliser l'URL générée. Ce code est généré sur votre serveur d'applications.

<!DOCTYPE html> <html> <head> <title>Visual 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 embedVisual = 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>", // replace this value with the url generated via embedding API 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", 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 occured while rendering the experience. Error code:", messageEvent.message.errorCode); break; } case 'PARAMETERS_CHANGED': { console.log("Parameters changed. Changed parameters:", messageEvent.message.changedParameters); break; } case 'SIZE_CHANGED': { console.log("Size changed. New dimensions:", messageEvent.message); break; } } }, }; const embeddedVisualExperience = await embeddingContext.embedVisual(frameOptions, contentOptions); const selectCountryElement = document.getElementById('country'); selectCountryElement.addEventListener('change', (event) => { embeddedVisualExperience.setParameters([ { Name: 'country', Values: event.target.value } ]); }); }; </script> </head> <body onload="embedVisual()"> <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>Visual Embedding Example</title> <!-- You can download the latest QuickSight embedding SDK version from https://www.npmjs.com/package/amazon-quicksight-embedding-sdk --> <!-- Or you can do "npm install amazon-quicksight-embedding-sdk", if you use npm for javascript dependencies --> <script src="./quicksight-embedding-js-sdk.min.js"></script> <script type="text/javascript"> let embeddedVisualExperience; function onVisualLoad(payload) { console.log("Do something when the visual is fully loaded."); } function onError(payload) { console.log("Do something when the visual fails loading"); } function embedVisual() { const containerDiv = document.getElementById("embeddingContainer"); const options = { url: "<YOUR_EMBED_URL>", // replace this value with the url generated via embedding API container: containerDiv, parameters: { country: "United States" }, height: "700px", width: "1000px", locale: "en-US" }; embeddedVisualExperience = QuickSightEmbedding.embedVisual(options); embeddedVisualExperience.on("error", onError); embeddedVisualExperience.on("load", onVisualLoad); } function onCountryChange(obj) { embeddedVisualExperience.setParameters({country: obj.value}); } </script> </head> <body onload="embedVisual()"> <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>

Pour que cet exemple fonctionne, assurez-vous d'utiliser le kit SDK d'intégration Amazon QuickSight pour charger la représentation visuelle intégrée sur votre site web à l'aide de JavaScript. Pour obtenir votre copie, effectuez l'une des actions suivantes :