Einbetten der vollen Funktionalität der Amazon QuickSight-Konsole für registrierte Benutzer
Wichtig
Amazon QuickSight verfügt über neue API-Operationen zum Einbetten von Analysen: GenerateEmbedUrlForAnonymousUser und GenerateEmbedUrlForRegisteredUser.
Sie können weiterhin die GetDashboardEmbedUrl- und GetSessionEmbedUrl-API-Operationen verwenden, um Dashboards und die QuickSight-Konsole einzubetten, sie enthalten jedoch nicht die neuesten Einbettungsfunktionen. Weitere Informationen zum Einbetten mit alten API-Operationen finden Sie unter Einbetten von Analysen mithilfe der GetDashboardEmbedURL- und GetSessionEmbedURL-API-Operationen.
| Gilt für: Enterprise Edition |
| Zielgruppe: Amazon QuickSight-Entwickler |
Mit der Enterprise Edition können Sie nicht nur schreibgeschützte Dashboards bereitstellen, sondern auch die Amazon QuickSight-Konsole in einem kundenspezifischen Authoring-Portal bereitstellen. Mit diesem Ansatz ermöglichen Sie Ihren Benutzern die Erstellung von Datenquellen, Datensätzen und Analysen. In derselben Oberfläche können sie Dashboards erstellen, veröffentlichen und anzeigen. Wenn Sie einige dieser Berechtigungen einschränken möchten, können Sie dies auch tun.
Benutzer, die über eine eingebettete Konsole auf QuickSight zugreifen, müssen der Sicherheitskohorte des Autors oder des Administrators angehören. Leser haben nicht genügend Zugriff, um die QuickSight-Konsole für die Authoring zu verwenden, unabhängig davon, ob sie eingebettet ist oder Teil von AWS Management Console. Autoren und Administratoren können jedoch weiterhin auf eingebettete Dashboards zugreifen. Wenn Sie die Berechtigungen für einige der Authoring-Funktionen einschränken möchten, können Sie dem Benutzer mit der UpdateUser-API-Operation ein benutzerdefiniertes Berechtigungsprofil hinzufügen. Verwenden Sie die API-Operation RegisterUser, um einen neuen Benutzer mit angehängtem benutzerdefiniertem Berechtigungsprofil hinzuzufügen. Weitere Informationen finden Sie in den folgenden Abschnitten:
-
Informationen zum Erstellen benutzerdefinierter Rollen durch Definieren benutzerdefinierter Konsolenberechtigungen finden Sie unter Anpassen des Zugriffs auf die QuickSight-Konsole.
-
Informationen zur Verwendung von Namespaces zur Isolierung von Benutzern, Gruppen und QuickSight-Ressourcen mit mehreren Mandanten finden Sie unter QuickSight-Namespaces.
-
Informationen zum Hinzufügen Ihres eigenen Brandings zu einer eingebetteten QuickSight-Konsole finden Sie unter Using Themes in QuickSight (Verwenden von Themen in QuickSight) QuickSight Theme API Operations (QuickSight Themen-API-Operationen).
In den folgenden Abschnitten finden Sie detaillierte Informationen zum Einrichten von eingebetteten Amazon QuickSight-Dashboards für registrierte Benutzer.
Themen
Schritt 1: Festlegen von Berechtigungen
Im folgenden Abschnitt erfahren Sie, wie Sie Berechtigungen für die Back-End-Anwendung oder den Webserver einrichten. Diese Aufgabe erfordert administrativen Zugriff auf IAM.
Jeder Benutzer, der auf ein QuickSight zugreift, nimmt eine Rolle ein, die ihm Amazon QuickSight-Zugriff und -Berechtigungen für die Konsolensitzung gewährt. Um dies zu ermöglichen, erstellen Sie eine IAM-Rolle in Ihrem AWS-Konto. Verknüpfen Sie eine IAM-Richtlinie mit der Rolle, um Berechtigungen für alle Benutzer zu gewähren, die die Rolle annehmen. Fügen Sie quicksight:RegisterUser-Berechtigungen hinzu, um sicherzustellen, dass der Leser im schreibgeschützten Modus auf QuickSight zugreifen kann und keinen Zugriff auf andere Daten oder Erstellungsfunktionen erhält. Die IAM-Rolle muss außerdem Berechtigungen zum Abrufen von URLs für Konsolensitzungen bereitstellen. Dazu fügen Sie quicksight:GenerateEmbedUrlForRegisteredUser hinzu.
Sie können in Ihrer IAM-Richtlinie eine Bedingung erstellen, die die Domains einschränkt, die Entwickler im AllowedDomains-Parameter einer GenerateEmbedUrlForAnonymousUser-API-Operation auflisten können. Der AllowedDomains-Parameter ist ein optionaler Parameter. Es bietet Ihnen als Entwickler die Möglichkeit, die statischen Domains zu überschreiben, die im Menü QuickSight verwalten konfiguriert sind. Stattdessen können Sie bis zu drei Domains oder Subdomains auflisten, die auf eine generierte URL zugreifen können. Diese URL wird dann in die von Ihnen erstellte Website eingebettet. Nur die Domains, die im Parameter aufgeführt sind, können auf das eingebettete Dashboard zugreifen. Ohne diese Bedingung können Sie jede Domain im Internet im AllowedDomains-Parameter auflisten.
Die folgende Beispielrichtlinie gewährt diese Berechtigungen.
Die folgende Beispielrichtlinie gewährt die Berechtigung zum Abrufen einer Konsolensitzungs-URL. Sie können die Richtlinie auch ohne quicksight:RegisterUser verwenden, wenn Sie Benutzer erstellen, bevor sie auf eine eingebettete Sitzung zugreifen.
Der IAM-Identität Ihrer Anwendung muss schließlich eine Vertrauensrichtlinie zugeordnet sein, um den Zugriff auf die soeben von Ihnen erstellte Rolle zu gewähren. Dies bedeutet: Wenn ein Benutzer auf Ihre Anwendung zugreift, kann Ihre Anwendung die Rolle für den Benutzer übernehmen und den Benutzer in QuickSight bereitstellen. Das folgende Beispiel zeigt eine Vertrauensrichtlinie.
Weitere Informationen bezüglich Vertrauensrichtlinien für die OpenId Connect- oder SAML-Authentifizierung finden Sie in den folgenden Abschnitten im IAM-Benutzerhandbuch:
Schritt 2: Generieren Sie die URL mit dem angehängten Authentifizierungscode
Im folgenden Abschnitt erfahren Sie, wie Sie Ihren Benutzer authentifizieren und die einbettungsfähige Konsolensitzung-URL auf Ihrem Anwendungsserver abrufen.
Wenn ein Benutzer auf Ihre App zugreift, übernimmt die App die IAM-Rolle für den Benutzer. Anschließend fügt sie den Benutzer zu QuickSight hinzu, wenn dieser Benutzer nicht bereits vorhanden ist. Anschließend übergibt sie eine ID als eindeutige Rollensitzungs-ID.
Durch die Ausführung der beschriebenen Schritte wird sichergestellt, dass jeder Viewer der Konsolensitzung in QuickSight eindeutig bereitgestellt wird. Dazu werden benutzerspezifische Einstellungen erzwungen, etwa Sicherheit auf niedriger Ebene sowie dynamische Standardwerte für Parameter.
In den folgenden Beispielen wird die IAM-Authentifizierung im Namen des Benutzers durchgeführt. Dieser Code wird auf Ihrem App-Server ausgeführt.
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.RegisteredUserQuickSightConsoleEmbeddingConfiguration; /** * Class to call QuickSight AWS SDK to get url for QuickSight console embedding. */ public class GetQuicksightEmbedUrlRegisteredUserQSConsoleEmbedding { private final AmazonQuickSight quickSightClient; public GetQuicksightEmbedUrlRegisteredUserQSConsoleEmbedding() { 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, 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. final List<String> allowedDomains, // Runtime allowed domain for embedding final String initialPath ) throws Exception { final RegisteredUserEmbeddingExperienceConfiguration experienceConfiguration = new RegisteredUserEmbeddingExperienceConfiguration() .withQuickSightConsole(new RegisteredUserQuickSightConsoleEmbeddingConfiguration().withInitialPath(initialPath)); 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": { "QuickSightConsole": { "InitialPath": '/start' } }, "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 # Create QuickSight and STS clients qs = boto3.client('quicksight', region_name='us-east-1') sts = boto3.client('sts') # Function to generate embedded URL # accountId: AWS account ID # 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 generateEmbeddingURL(accountId, 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-east-1') experienceConfiguration = { "QuickSightConsole": { "InitialPath": "/start" } } response = quickSightClient.generate_embed_url_for_registered_user( AwsAccountId = accountId, ExperienceConfiguration = experienceConfiguration, 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)
Das folgende Beispiel zeigt das JavaScript (Node.js), das Sie auf dem App-Server verwenden können, um die URL für die eingebettete Konsolensitzung generieren. Sie können diese URL auf Ihrer Website oder in Ihrer App verwenden, um die Konsolensitzung aufzurufen.
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': { 'QuickSightConsole': { 'InitialPath': '/start' } }, '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' }
Das folgende Beispiel zeigt den .NET/C # Code, den Sie auf dem App-Server verwenden können, um die URL für die eingebettete Konsolensitzung generieren. Sie können diese URL auf Ihrer Website oder in Ihrer App verwenden, um die Konsole aufzurufen.
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 { RegisteredUserQuickSightConsoleEmbeddingConfiguration registeredUserQuickSightConsoleEmbeddingConfiguration = new RegisteredUserQuickSightConsoleEmbeddingConfiguration { InitialPath = "/start" }; RegisteredUserEmbeddingExperienceConfiguration registeredUserEmbeddingExperienceConfiguration = new RegisteredUserEmbeddingExperienceConfiguration { QuickSightConsole = registeredUserQuickSightConsoleEmbeddingConfiguration }; 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); } } } }
Wählen Sie zum Übernehmen der Rolle eine der folgenden AWS Security Token Service (AWS STS)-API-Operationen:
-
AssumeRole – Verwenden Sie diese Operation, wenn eine IAM-Identität zum Übernehmen der Rolle verwendet wird.
-
AssumeRoleWithWebIdentity – Verwenden Sie diese Operation, wenn Sie einen Web-Identitätsanbieter verwenden, um Ihren Benutzer zu authentifizieren.
-
AssumeRoleWithSAML – Verwenden Sie diese Operation, wenn Sie SAML zur Authentifizierung Ihrer Benutzer verwenden.
Das folgende Beispiel zeigt den CLI-Befehl zum Festlegen der IAM-Rolle. Für die Rolle müssen die Berechtigungen für quicksight:GenerateEmbedUrlForRegisteredUser aktiviert sein. Wenn Sie einen Just-in-Time-Ansatz verfolgen, um Benutzer hinzuzufügen, wenn sie QuickSight zum ersten Mal öffnen, müssen für die Rolle auch die entsprechenden Berechtigungen für quicksight:RegisterUser aktiviert sein.
aws sts assume-role \ --role-arn "arn:aws:iam::111122223333:role/embedding_quicksight_dashboard_role" \ --role-session-namejohn.doe@example.com
Die assume-role-Operation gibt drei Parameter zurück: den Zugriffsschlüssel, den geheimen Schlüssel und das Sitzungs-Token.
Anmerkung
Wenn beim Aufrufen der Operation AssumeRole der Fehler ExpiredToken gemeldet wird, liegt dies wahrscheinlich daran, dass sich der vorherige SESSION TOKEN-Wert noch in den Umgebungsvariablen befindet. Deaktivieren Sie dies, indem Sie die folgenden Variablen einstellen:
-
AWS_ACCESS_KEY_ID
-
AWS_SECRET_ACCESS_KEY
-
AWS_SESSION_TOKEN
Das folgende Beispiel zeigt, wie Sie diese drei Parameter in der CLI einrichten. Wenn Sie einen Microsoft Windows-Computer nutzen, verwenden Sie set anstelle von 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"
Diese Befehle setzen die Rollensitzungs-ID des Benutzers, der Ihre Website besucht, auf embedding_quicksight_console_session_role/john.doe@example.com. Die Rollensitzungs-ID besteht aus dem Rollennamen role-arn und dem role-session-name-Wert. Die Verwendung der eindeutigen Rollensitzungs-ID für jeden Benutzer garantiert, dass fpr jeden benutzer die korrekten Berechtigungen eingerichtet werden. Außerdem wird eine Drosselung des Benutzerzugriffs verhindert. Die Drosselung ist ein Sicherheitsfeature, das verhindert, dass ein Benutzer von mehreren Standorten aus auf QuickSight zugreift.
Die Rollensitzungs-ID wird außerdem zum Benutzernamen in QuickSight. Sie können mit diesem Muster Ihre Benutzer in QuickSight im Voraus oder dann, wenn Sie auf eine Konsolensitzung zugreifen, bereitstellen.
Das folgende Beispiel zeigt den CLI-Befehl, den Sie verwenden können, um einen Benutzer bereitstellen. Weitere Informationen zu RegisterUser, DescribeUser und anderen QuickSight-API-Operationen finden Sie in der QuickSight-API-Referenz.
aws quicksight register-user \ --aws-account-id111122223333\ --namespacedefault\ --identity-typeIAM\ --iam-arn "arn:aws:iam::111122223333:role/embedding_quicksight_dashboard_role" \ --user-roleREADER\ --user-namejhnd\ --session-name "john.doe@example.com" \ --emailjohn.doe@example.com\ --regionus-east-1\ --custom-permissions-nameTeamA1
Wenn der Benutzer durch Microsoft AD authentifiziert wird, müssen Sie RegisterUser nicht verwenden, um sie einzurichten. Stattdessen sollten sie beim ersten Zugriff auf QuickSight automatisch angemeldet werden. Für Microsoft AD-Benutzer können Sie DescribeUser verwenden, um den Benutzer ARN zu erhalten.
Wenn ein Benutzer zum ersten Mal auf QuickSight zugreift, können Sie diesen Benutzer auch der entsprechenden Gruppe hinzufügen. Das folgende Beispiel zeigt den CLI-Befehl zum Hinzufügen eines Benutzers zu einer Gruppe.
aws quicksight create-group-membership \ --aws-account-id=111122223333\ --namespace=default\ --group-name=financeusers\ --member-name="embedding_quicksight_dashboard_role/john.doe@example.com"
Sie haben jetzt einen Benutzer Ihrer App, der auch Benutzer von QuickSight ist und auf die QuickSight-Konsolensitzung zugreifen kann.
Um eine signierte URL für die Konsolensitzung zu erhalten, rufen Sie schließlich generate-embed-url-for-registered-user vom App-Server auf. Dadurch wird die URL der einbettbaren Konsolensitzung zurückgegeben. Das folgende Beispiel zeigt, wie die URL für eine eingebettete Konsolensitzung mithilfe eines serverseitigen Aufrufs für Benutzer generiert wird, die über AWS Managed Microsoft AD oder Single Sign-On authentifiziert wurden (IAM Identity Center).
aws quicksight generate-embed-url-for-registered-user \ --aws-account-id111122223333\ --entry-pointthe-url-for--the-console-session\ --session-lifetime-in-minutes600\ --user-arnarn:aws:quicksight:us-east-1:111122223333:user/default/embedding_quicksight_dashboard_role/embeddingsession--allowed-domains '["domain1","domain2"]' \ --experience-configuration QuickSightConsole={InitialPath="/start"}
Weitere Informationen zur Verwendung dieser Operation finden Sie unter GenerateEmbedUrlForRegisteredUser. Sie können diese und andere API-Operationen in Ihrem eigenen Code verwenden.
Schritt 3: Betten Sie die URL der Konsolensitzung ein
Im folgenden Abschnitt erläutern wir Ihnen, wie Sie das Amazon QuickSight Embedding SDK
-
Platzieren Sie die Konsolensitzung auf einer HTML-Seite.
-
Übergeben Sie Parameter an die Konsolensitzung.
-
Umgang mit Fehlerstatus mit Meldungen, die an Ihre Anwendung angepasst wurden.
Rufen Sie die GenerateEmbedUrlForRegisteredUser-API-Operation auf, um die URL zu generieren, die Sie in Ihre App einbetten können. Diese URL ist für 5 Minuten gültig, die resultierende Sitzung für bis zu 10 Stunden. Die API-Operation stellt die URL mit einem auth_code bereit, der eine Single-Sign-On-Sitzung unterstützt.
Es folgt eine Beispielantwort von 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/embedding/12345/start...", "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713" }
Betten Sie diese Konsolensitzung in die Webseite ein, indem Sie das QuickSight-Embedding SDK
Die Domain, die als Host für die eingebetteten Dashboards dienen soll, muss in der Zulassungsliste (allow list) stehen, der Liste zulässiger Domains für das Quick Suite-Abonnement. Diese Voraussetzung schützt die Daten, indem unzulässige Domains daran gehindert werden, eingebettete Dashboards zu hosten. Weitere Informationen zum Hinzufügen von Domains für eine eingebettete Konsole finden Sie unter Erlauben Sie das Auflisten von Domains zur Laufzeit mit der QuickSight-API.
Im folgenden Beispiel wird gezeigt, wie Sie die generierte URL nutzen. Dieser Code wird auf Ihrem App-Server generiert.
<!DOCTYPE html> <html> <head> <title>Console 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 embedSession = 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 = { onMessage: async (messageEvent, experienceMetadata) => { switch (messageEvent.eventName) { case 'ERROR_OCCURRED': { console.log("Do something when the embedded experience fails loading."); break; } } } }; const embeddedConsoleExperience = await embeddingContext.embedConsole(frameOptions, contentOptions); }; </script> </head> <body onload="embedSession()"> <div id="experience-container"></div> </body> </html>
<!DOCTYPE html> <html> <head> <title>QuickSight Console Embedding</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 session function onError(payload) { console.log("Do something when the session fails loading"); } function embedSession() { 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", // replace this dummy url with the one generated via embedding API container: containerDiv, parameters: { country: "United States" }, scrolling: "no", height: "700px", width: "1000px", locale: "en-US", footerPaddingEnabled: true, defaultEmbeddingVisualType: "TABLE", // this option only applies to QuickSight console embedding and is not used for dashboard embedding }; session = QuickSightEmbedding.embedSession(options); session.on("error", onError); } function onCountryChange(obj) { session.setParameters({country: obj.value}); } </script> </head> <body onload="embedSession()"> <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>
Damit dieses Beispiel funktioniert, stellen Sie sicher, dass Sie das Amazon QuickSight Embedding SDK verwenden, um die eingebettete Konsolensitzung mithilfe von JavaScript auf Ihre Website zu laden. Führen Sie für den Erhalt dieser Kopie einen der folgenden Schritte aus:
-
Laden Sie das Amazon QuickSight Embedding SDK
von GitHub herunter. Dieses Repository wird von einer Gruppe von QuickSight-Entwicklern verwaltet. -
Laden Sie die neueste Version des Embedded SDK von https://www.npmjs.com/package/amazon-quicksight-embedding-sdk
herunter. -
Wenn Sie
npmfür JavaScript-Abhängigkeiten verwenden, laden Sie es herunter und installieren Sie es, indem Sie den folgenden Befehl ausführen.npm install amazon-quicksight-embedding-sdk