Einbetten der vollen Funktionalität der QuickSight Amazon-Konsole für registrierte Benutzer - Amazon QuickSight

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Einbetten der vollen Funktionalität der QuickSight Amazon-Konsole für registrierte Benutzer

Wichtig

Amazon QuickSight bietet neue API Funktionen zum Einbetten von Analysen: GenerateEmbedUrlForAnonymousUser undGenerateEmbedUrlForRegisteredUser.

Sie können weiterhin die GetSessionEmbedUrl API Operationen GetDashboardEmbedUrl und verwenden, um Dashboards und die QuickSight Konsole einzubetten, sie enthalten jedoch nicht die neuesten Einbettungsfunktionen. Weitere Informationen zum Einbetten mithilfe der alten API Operationen finden Sie unter. Einbetten von Analysen mithilfe der GetDashboardEmbedURL- und GetSessionEmbedURL-API-Operationen

 Gilt für: Enterprise Edition 
   Zielgruppe: QuickSight Amazon-Entwickler 

Mit der Enterprise Edition können Sie nicht nur lesbare Dashboards bereitstellen, sondern auch die QuickSight Amazon-Konsole in einem maßgeschneiderten 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 QuickSight über eine eingebettete Konsole darauf zugreifen, müssen der Sicherheitsgruppe des Autors oder des Administrators angehören. Leser haben nicht genügend Zugriff, um die QuickSight Konsole für die Erstellung von Inhalten zu verwenden, unabhängig davon, ob sie eingebettet ist oder Teil der Konsole ist. 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, der den Vorgang durchführt, ein benutzerdefiniertes Berechtigungsprofil hinzufügen. UpdateUserAPI Verwenden Sie den RegisterUserAPIVorgang, um einen neuen Benutzer mit einem angehängten benutzerdefinierten Berechtigungsprofil hinzuzufügen. Weitere Informationen finden Sie in den folgenden Abschnitten:

In den folgenden Abschnitten finden Sie detaillierte Informationen zur Einrichtung eingebetteter QuickSight Amazon-Dashboards für registrierte Benutzer.

Schritt 1: Festlegen von Berechtigungen

Im folgenden Abschnitt erfahren Sie, wie Sie Berechtigungen für die Back-End-Anwendung oder den Webserver einrichten. Für diese Aufgabe ist Administratorzugriff auf IAM erforderlich.

Jeder Benutzer, der auf eine zugreift, QuickSight nimmt eine Rolle ein, die ihm QuickSight Amazon-Zugriff und Berechtigungen für die Konsolensitzung gewährt. Um dies zu ermöglichen, erstellen Sie eine IAM Rolle in Ihrem AWS Konto. Ordnen Sie der Rolle eine IAM Richtlinie zu, um jedem Benutzer, der diese Rolle annimmt, Berechtigungen zu gewähren. Fügen Sie quicksight:RegisterUser Berechtigungen hinzu, um sicherzustellen, dass der Leser nur lesend darauf zugreifen QuickSight kann und keinen Zugriff auf andere Daten oder Erstellungsfunktionen hat. Die IAM Rolle muss auch Berechtigungen zum Abrufen der Konsolensitzung bereitstellen. URLs Dazu fügen Sie quicksight:GenerateEmbedUrlForRegisteredUser hinzu.

Sie können in Ihrer IAM Richtlinie eine Bedingung erstellen, die die Domänen einschränkt, die Entwickler im AllowedDomains Parameter eines GenerateEmbedUrlForAnonymousUser API Vorgangs auflisten können. Der AllowedDomains-Parameter ist ein optionaler Parameter. Sie gewährt Ihnen als Entwickler die Möglichkeit, die statischen Domänen zu überschreiben, die im QuickSight Menü Verwalten konfiguriert sind. Stattdessen können Sie bis zu drei Domains oder Subdomains auflisten, die auf eine generierte URL Domain zugreifen können. Dies 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.

{ "Version": "2012-10-17", "Statement": [ { "Action": "quicksight:RegisterUser", "Resource": "*", "Effect": "Allow" }, { "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" ] } } } ] }

Die folgende Beispielrichtlinie gewährt die Berechtigung zum Abrufen einer KonsolensitzungURL. Sie können die Richtlinie auch ohne quicksight:RegisterUser verwenden, wenn Sie Benutzer erstellen, bevor sie auf eine eingebettete Sitzung zugreifen.

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

Schließlich muss der IAM Identität Ihrer Anwendung eine Vertrauensrichtlinie zugeordnet sein, um den Zugriff auf die Rolle zu ermöglichen, die Sie gerade erstellt haben. Das heißt, wenn ein Benutzer auf Ihre Anwendung zugreift, kann Ihre Anwendung die Rolle im Namen des Benutzers übernehmen und dem Benutzer Zugriff gewähren. QuickSight Das folgende Beispiel zeigt eine Vertrauensrichtlinie.

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

Weitere Informationen zu Vertrauensrichtlinien für OpenID Connect oder SAML Authentifizierung finden Sie in den folgenden Abschnitten des IAMBenutzerhandbuchs:

Schritt 2: Generieren Sie das URL mit dem angehängten Authentifizierungscode

Im folgenden Abschnitt erfahren Sie, wie Sie Ihren Benutzer authentifizieren und die einbettbare Konsolensitzung URL auf Ihrem Anwendungsserver einrichten.

Wenn ein Benutzer auf Ihre App zugreift, übernimmt die App die IAM Rolle im Namen des Benutzers. Dann fügt sie den Benutzer hinzu QuickSight, falls dieser Benutzer noch nicht existiert. Anschließend übergibt sie eine ID als eindeutige Rollensitzungs-ID.

Durch die Ausführung der beschriebenen Schritte wird sichergestellt, dass für jeden Betrachter der Konsolensitzung eine eindeutige Provisionierung erfolgt. QuickSight 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 die Datei JavaScript (Node.js), die Sie auf dem App-Server verwenden können, um die Sitzung URL für die eingebettete Konsole zu generieren. Sie können dies URL in Ihrer Website oder App verwenden, um die Konsolensitzung anzuzeigen.

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 die. NET/C # -Code, den Sie auf dem App-Server verwenden können, um die Sitzung URL für die eingebettete Konsole zu generieren. Sie können dies URL in Ihrer Website oder App verwenden, um die Konsole anzuzeigen.

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); } } } }

Um die Rolle zu übernehmen, wählen Sie eine der folgenden AWS Security Token Service (AWS STS) API Operationen:

  • AssumeRole— Verwenden Sie diese Operation, wenn Sie eine IAM Identität verwenden, um die Rolle zu übernehmen.

  • AssumeRoleWithWebIdentity— Verwenden Sie diesen Vorgang, wenn Sie einen Web-Identitätsanbieter verwenden, um Ihren Benutzer zu authentifizieren.

  • AssumeRoleWithSaml— Verwenden Sie diesen Vorgang, wenn Sie Ihre Benutzer authentifizieren. SAML

Das folgende Beispiel zeigt den CLI Befehl zum Einstellen der IAM Rolle. Für die Rolle müssen die Berechtigungen für quicksight:GenerateEmbedUrlForRegisteredUser aktiviert sein. Wenn Sie Benutzer beim ersten Öffnen hinzufügen möchten QuickSight, müssen für die Rolle auch die entsprechenden Berechtigungen aktiviert seinquicksight:RegisterUser. just-in-time

aws sts assume-role \ --role-arn "arn:aws:iam::111122223333:role/embedding_quicksight_dashboard_role" \ --role-session-name john.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 diese drei Parameter in der CLI festgelegt werden. 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 eine Sicherheitsfunktion, die verhindert, dass derselbe Benutzer von mehreren Standorten QuickSight aus zugreift.

Die Rollensitzungs-ID wird außerdem zum Benutzernamen in QuickSight. Sie können dieses Muster verwenden, um Ihren Benutzern im QuickSight Voraus oder beim ersten Zugriff auf eine Konsolensitzung eine Bereitstellung bereitzustellen.

Das folgende Beispiel zeigt den CLI Befehl, mit dem Sie einen Benutzer bereitstellen können. Weitere Informationen zu RegisterUserDescribeUser, und anderen QuickSight API Operationen finden Sie in der QuickSight APIReferenz.

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

Wenn der Benutzer durch Microsoft AD authentifiziert wird, müssen Sie RegisterUser nicht verwenden, um sie einzurichten. Stattdessen sollten sie beim ersten Zugriff QuickSight automatisch abonniert werden. Für Microsoft AD-Benutzer können Sie verwenden, DescribeUser um den Benutzer abzurufenARN.

Wenn ein Benutzer zum ersten Mal zugreift QuickSight, können Sie ihn 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 der QuickSight QuickSight Konsolensitzung ist und Zugriff auf diese hat.

Rufen Sie abschließend vom App-Server generate-embed-url-for-registered-user aus an, um eine Signatur URL für die Konsolensitzung zu erhalten. Dadurch wird die einbettbare Konsolensitzung zurückgegeben. URL Das folgende Beispiel zeigt, wie der 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 (Identity Center). IAM

aws quicksight generate-embed-url-for-registered-user \ --aws-account-id 111122223333 \ --entry-point the-url-for--the-console-session \ --session-lifetime-in-minutes 600 \ --user-arn arn: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 dieses Vorgangs finden Sie unter GenerateEmbedUrlForRegisteredUser. Sie können diese und andere API Operationen in Ihrem eigenen Code verwenden.

Schritt 3: Betten Sie die Konsolensitzung ein URL

Im folgenden Abschnitt erfahren Sie, wie Sie Amazon QuickSight Embedding SDK (JavaScript) verwenden können, um die Konsolensitzung URL aus Schritt 3 in Ihre Website oder Anwendungsseite einzubetten. Mit dem SDK können Sie folgende Aktionen ausführen:

  • 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 den GenerateEmbedUrlForRegisteredUser API Vorgang auf, um den zu generierenURL, den Sie in Ihre App einbetten können. Dies URL ist 5 Minuten gültig, und die daraus resultierende Sitzung ist bis zu 10 Stunden gültig. Der API Vorgang stellt eine URL Verbindung bereitauth_code, die eine Single-Sign-On-Sitzung ermöglicht.

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 mithilfe der QuickSight Einbettung in Ihre Webseite ein SDK oder fügen Sie sie URL zu einem Iframe hinzu. Wenn Sie eine feste Höhe und Breite (in Pixel) festlegen, verwendet QuickSight diese Werte und ändert die Visualisierung nicht, wenn die Fenstergröße geändert wird. Wenn Sie Höhe und Breite in Prozent angeben, QuickSight erhalten Sie ein responsives Layout, das sich an die Fenstergröße anpasst. Mithilfe von Amazon QuickSight Embedding SDK können Sie auch Parameter innerhalb der Konsolensitzung steuern und Rückrufe in Bezug auf den Abschluss des Seitenladevorgangs und Fehler erhalten.

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 Amazon QuickSight -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 Erlaube das Auflisten von Domains zur Laufzeit mit dem QuickSight API.

Das folgende Beispiel zeigt, wie Sie die generierten verwenden. URL 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 Amazon QuickSight Embedding verwenden, SDK um die eingebettete Konsolensitzung auf Ihre Website mit JavaScript zu laden. Führen Sie für den Erhalt dieser Kopie einen der folgenden Schritte aus: