Einbetten der Amazon QuickSight Q-Suchleiste für anonyme (nicht 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 Amazon QuickSight Q-Suchleiste für anonyme (nicht registrierte) Benutzer

   Zielgruppe: QuickSight Amazon-Entwickler 
Anmerkung

Die eingebettete QuickSight Q-Suchleiste bietet das klassische QuickSight Q & A-Erlebnis. QuickSight integriert sich in Amazon Q Business, um ein neues generatives Q&A-Erlebnis einzuführen. Entwicklern wird empfohlen, das neue Generative Q&A-Erlebnis zu nutzen. Weitere Informationen zum integrierten Generative Q&A-Erlebnis finden Sie unter. Einbettung von Amazon Q in das QuickSight Generative Q & A-Erlebnis

In den folgenden Abschnitten finden Sie detaillierte Informationen zum Einrichten einer eingebetteten Amazon QuickSight Q-Suchleiste für anonyme (nicht registrierte) Benutzer.

Schritt 1: Festlegen von Berechtigungen

Anmerkung

Die eingebettete QuickSight Q-Suchleiste bietet das klassische QuickSight Q&A-Erlebnis. QuickSight integriert sich in Amazon Q Business, um ein neues generatives Q&A-Erlebnis einzuführen. Entwicklern wird empfohlen, das neue Generative Q&A-Erlebnis zu nutzen. Weitere Informationen zum integrierten Generative Q&A-Erlebnis finden Sie unter. Einbettung von Amazon Q in das QuickSight Generative Q & A-Erlebnis

Im folgenden Abschnitt erfahren Sie, wie Sie Berechtigungen für Ihre Back-End-Anwendung oder Ihren Webserver einrichten, um die Q-Suchleiste einzubetten. Für diese Aufgabe ist Administratorzugriff auf AWS Identity and Access Management (IAM) erforderlich.

Jeder Benutzer, der auf eine Q-Suchleiste zugreift, nimmt eine Rolle ein, die ihm QuickSight Amazon-Zugriff und Berechtigungen für die Q-Suchleiste 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 sie annimmt, Berechtigungen zu gewähren. Die IAM Rolle muss Berechtigungen zum Abrufen von Einbettungen URLs für einen bestimmten Benutzerpool bereitstellen.

Mithilfe des Platzhalterzeichens * können Sie allen Benutzern in einem bestimmten Namespace die Berechtigungen URL zum Generieren von a gewähren. Oder Sie können einer Teilmenge von Benutzern in bestimmten Namespaces Berechtigungen URL zum Generieren von A gewähren. Dazu fügen Sie quicksight:GenerateEmbedUrlForAnonymousUser hinzu.

Sie können in Ihrer IAM Richtlinie eine Bedingung erstellen, die die Domänen einschränkt, die Entwickler im AllowedDomains Parameter eines Vorgangs auflisten können. GenerateEmbedUrlForAnonymousUser API Der AllowedDomains-Parameter ist ein optionaler Parameter. Sie gibt Entwicklern die Möglichkeit, die statischen Domänen, die im QuickSight Menü Verwalten konfiguriert sind, zu überschreiben und stattdessen bis zu drei Domänen oder Subdomänen aufzulisten, die auf eine generierte URL Domain zugreifen können. Dies URL wird dann in die Website eines Entwicklers eingebettet. Nur die Domains, die im Parameter aufgeführt sind, können auf die eingebettete Q-Suchleiste zugreifen. Ohne diese Bedingung können Entwickler jede Domain im Internet im AllowedDomains-Parameter auflisten.

Um die Domänen einzuschränken, die Entwickler mit diesem Parameter verwenden können, fügen Sie Ihrer IAM Richtlinie eine AllowedEmbeddingDomains Bedingung hinzu. Weitere Informationen zu dem AllowedDomains Parameter finden Sie GenerateEmbedUrlForAnonymousUserin der QuickSight APIAmazon-Referenz.

Die folgende Beispielrichtlinie gewährt diese Berechtigungen.

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

Der IAM Identität Ihrer Anwendung muss eine Vertrauensrichtlinie zugeordnet sein, um den Zugriff auf die Rolle zu ermöglichen, die Sie gerade erstellt haben. Dies bedeutet: Wenn ein Benutzer auf Ihre Anwendung zugreift, kann Ihre Anwendung die Rolle für den Benutzer übernehmen, um die Q-Suchleiste zu öffnen. 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 finden Sie unter Temporäre Sicherheitsanmeldedaten IAM im IAM Benutzerhandbuch

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

Anmerkung

Die eingebettete QuickSight Q-Suchleiste bietet das klassische QuickSight Q & A-Erlebnis. QuickSight integriert sich in Amazon Q Business, um ein neues generatives Q&A-Erlebnis einzuführen. Entwicklern wird empfohlen, das neue Generative Q&A-Erlebnis zu nutzen. Weitere Informationen zum integrierten Generative Q&A-Erlebnis finden Sie unter. Einbettung von Amazon Q in das QuickSight Generative Q & A-Erlebnis

Im folgenden Abschnitt erfahren Sie, wie Sie Ihren Benutzer authentifizieren und das einbettbare Q-Thema URL auf Ihrem Anwendungsserver abrufen können.

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

Weitere Informationen finden Sie unter AnonymousUserQSearchBarEmbeddingConfiguration.

import java.util.List; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.AWSCredentialsProvider; import com.amazonaws.auth.BasicAWSCredentials; import com.amazonaws.regions.Regions; import com.amazonaws.services.quicksight.AmazonQuickSight; import com.amazonaws.services.quicksight.AmazonQuickSightClientBuilder; import com.amazonaws.services.quicksight.model.AnonymousUserQSearchBarEmbeddingConfiguration; import com.amazonaws.services.quicksight.model.AnonymousUserEmbeddingExperienceConfiguration; import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForAnonymousUserRequest; import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForAnonymousUserResult; import com.amazonaws.services.quicksight.model.SessionTag; /** * Class to call QuickSight AWS SDK to generate embed url for anonymous user. */ public class GenerateEmbedUrlForAnonymousUserExample { private final AmazonQuickSight quickSightClient; public GenerateEmbedUrlForAnonymousUserExample() { 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 GenerateEmbedUrlForAnonymousUser( final String accountId, // YOUR AWS ACCOUNT ID final String initialTopicId, // Q TOPIC ID TO WHICH THE CONSTRUCTED URL POINTS AND SEARCHBAR PREPOPULATES INITIALLY final String namespace, // ANONYMOUS EMBEDDING REQUIRES SPECIFYING A VALID NAMESPACE FOR WHICH YOU WANT THE EMBEDDING URL final List<String> authorizedResourceArns, // Q SEARCHBAR TOPIC ARN LIST TO EMBED final List<String> allowedDomains, // RUNTIME ALLOWED DOMAINS FOR EMBEDDING final List<SessionTag> sessionTags // SESSION TAGS USED FOR ROW-LEVEL SECURITY ) throws Exception { AnonymousUserEmbeddingExperienceConfiguration experienceConfiguration = new AnonymousUserEmbeddingExperienceConfiguration(); AnonymousUserQSearchBarEmbeddingConfiguration qSearchBarConfiguration = new AnonymousUserQSearchBarEmbeddingConfiguration(); qSearchBarConfiguration.setInitialTopicId(initialTopicId); experienceConfiguration.setQSearchBar(qSearchBarConfiguration); GenerateEmbedUrlForAnonymousUserRequest generateEmbedUrlForAnonymousUserRequest = new GenerateEmbedUrlForAnonymousUserRequest() .withAwsAccountId(accountId) .withNamespace(namespace) .withAuthorizedResourceArns(authorizedResourceArns) .withExperienceConfiguration(experienceConfiguration) .withSessionTags(sessionTags) .withSessionLifetimeInMinutes(600L); // OPTIONAL: VALUE CAN BE [15-600]. DEFAULT: 600 .withAllowedDomains(allowedDomains); GenerateEmbedUrlForAnonymousUserResult qSearchBarEmbedUrl = quickSightClient.generateEmbedUrlForAnonymousUser(generateEmbedUrlForAnonymousUserRequest); return qSearchBarEmbedUrl.getEmbedUrl(); } }
global.fetch = require('node-fetch'); const AWS = require('aws-sdk'); function generateEmbedUrlForAnonymousUser( accountId, // YOUR AWS ACCOUNT ID initialTopicId, // Q TOPIC ID TO WHICH THE CONSTRUCTED URL POINTS quicksightNamespace, // VALID NAMESPACE WHERE YOU WANT TO DO NOAUTH EMBEDDING authorizedResourceArns, // Q SEARCHBAR TOPIC ARN LIST TO EMBED allowedDomains, // RUNTIME ALLOWED DOMAINS FOR EMBEDDING sessionTags, // SESSION TAGS USED FOR ROW-LEVEL SECURITY generateEmbedUrlForAnonymousUserCallback, // SUCCESS CALLBACK METHOD errorCallback // ERROR CALLBACK METHOD ) { const experienceConfiguration = { "QSearchBar": { "InitialTopicId": initialTopicId // TOPIC ID CAN BE FOUND IN THE URL ON THE TOPIC AUTHOR PAGE } }; const generateEmbedUrlForAnonymousUserParams = { "AwsAccountId": accountId, "Namespace": quicksightNamespace, "AuthorizedResourceArns": authorizedResourceArns, "AllowedDomains": allowedDomains, "ExperienceConfiguration": experienceConfiguration, "SessionTags": sessionTags, "SessionLifetimeInMinutes": 600 }; const quicksightClient = new AWS.QuickSight({ region: process.env.AWS_REGION, credentials: { accessKeyId: AccessKeyId, secretAccessKey: SecretAccessKey, sessionToken: SessionToken, expiration: Expiration } }); quicksightClient.generateEmbedUrlForAnonymousUser(generateEmbedUrlForAnonymousUserParams, 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 THIS API "Access-Control-Allow-Headers": "Content-Type" }, "body": JSON.stringify(data), "isBase64Encoded": false } generateEmbedUrlForAnonymousUserCallback(result); } }); }
import json import boto3 from botocore.exceptions import ClientError import time # Create QuickSight and STS clients quicksightClient = boto3.client('quicksight',region_name='us-west-2') sts = boto3.client('sts') # Function to generate embedded URL for anonymous user # accountId: YOUR AWS ACCOUNT ID # quicksightNamespace: VALID NAMESPACE WHERE YOU WANT TO DO NOAUTH EMBEDDING # authorizedResourceArns: TOPIC ARN LIST TO EMBED # allowedDomains: RUNTIME ALLOWED DOMAINS FOR EMBEDDING # experienceConfiguration: configuration which specifies the TOPIC ID to point URL to # sessionTags: SESSION TAGS USED FOR ROW-LEVEL SECURITY def generateEmbedUrlForAnonymousUser(accountId, quicksightNamespace, authorizedResourceArns, allowedDomains, experienceConfiguration, sessionTags): try: response = quicksightClient.generate_embed_url_for_anonymous_user( AwsAccountId = accountId, Namespace = quicksightNamespace, AuthorizedResourceArns = authorizedResourceArns, AllowedDomains = allowedDomains, ExperienceConfiguration = experienceConfiguration, SessionTags = sessionTags, 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: print(e) return "Error generating embeddedURL: " + str(e)

Das folgende Beispiel zeigt die Datei JavaScript (Node.js), die Sie auf dem App-Server verwenden können, um das URL für das eingebettete Dashboard zu generieren. Sie können dies URL in Ihrer Website oder App verwenden, um das Dashboard 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.generateEmbedUrlForAnonymousUser({ 'AwsAccountId': '111122223333', 'Namespace': 'DEFAULT' 'AuthorizedResourceArns': '["topic-arn-topicId1","topic-arn-topicId2"]', 'AllowedDomains': allowedDomains, 'ExperienceConfiguration': { 'QSearchBar': { 'InitialTopicId': 'U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f' } }, 'SessionTags': '["Key": tag-key-1,"Value": tag-value-1,{"Key": tag-key-1,"Value": tag-value-1}]', 'SessionLifetimeInMinutes': 15 }, 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' }

Das folgende Beispiel zeigt die. NET/C # -Code, den Sie auf dem App-Server verwenden können, um die Suchleiste URL für das eingebettete Q zu generieren. Sie können dies URL in Ihrer Website oder App verwenden, um die Q-Suchleiste anzuzeigen.

using System; using Amazon.QuickSight; using Amazon.QuickSight.Model; namespace GenerateQSearchBarEmbedUrlForAnonymousUser { class Program { static void Main(string[] args) { var quicksightClient = new AmazonQuickSightClient( AccessKey, SecretAccessKey, SessionToken, Amazon.RegionEndpoint.USEast1); try { AnonymousUserQSearchBarEmbeddingConfiguration anonymousUserQSearchBarEmbeddingConfiguration = new AnonymousUserQSearchBarEmbeddingConfiguration { InitialTopicId = "U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f" }; AnonymousUserEmbeddingExperienceConfiguration anonymousUserEmbeddingExperienceConfiguration = new AnonymousUserEmbeddingExperienceConfiguration { QSearchBar = anonymousUserQSearchBarEmbeddingConfiguration }; Console.WriteLine( quicksightClient.GenerateEmbedUrlForAnonymousUserAsync(new GenerateEmbedUrlForAnonymousUserRequest { AwsAccountId = "111122223333", Namespace = "DEFAULT", AuthorizedResourceArns '["topic-arn-topicId1","topic-arn-topicId2"]', AllowedDomains = allowedDomains, ExperienceConfiguration = anonymousUserEmbeddingExperienceConfiguration, SessionTags = '["Key": tag-key-1,"Value": tag-value-1,{"Key": tag-key-1,"Value": tag-value-1}]', SessionLifetimeInMinutes = 15, }).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:GenerateEmbedUrlForAnonymousUser aktiviert sein.

aws sts assume-role \ --role-arn "arn:aws:iam::111122223333:role/embedding_quicksight_q_search_bar_role" \ --role-session-name anonymous caller

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. Für einen Microsoft Windows-Computer 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_q_search_bar_role/QuickSightEmbeddingAnonymousPolicy. 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. Darüber hinaus hält sie auch jede Sitzung getrennt und unterscheidbar. Wenn Sie eine Reihe von Webservern verwenden, z. B. für den Lastenausgleich, und eine Sitzung erneut mit einem anderen Server verbunden wird, beginnt eine neue Sitzung.

Rufen Sie vom App-Server aus an, um eine Signatur URL für das generate-embed-url-for-anynymous-user Dashboard zu erhalten. Dadurch wird das einbettbare Dashboard zurückgegeben. URL Das folgende Beispiel zeigt, wie Sie das URL für ein eingebettetes Dashboard mithilfe eines serverseitigen Aufrufs für Benutzer generieren, die Ihr Webportal oder Ihre App anonym besuchen.

aws quicksight generate-embed-url-for-anonymous-user \ --aws-account-id 111122223333 \ --namespace default-or-something-else \ --authorized-resource-arns '["topic-arn-topicId1","topic-arn-topicId2"]' \ --allowed-domains '["domain1","domain2"]' \ --experience-configuration 'QSearchBar={InitialTopicId="topicId1"}' \ --session-tags '["Key": tag-key-1,"Value": tag-value-1,{"Key": tag-key-1,"Value": tag-value-1}]' \ --session-lifetime-in-minutes 15

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 Q-Suchleiste ein URL

Anmerkung

Die eingebettete QuickSight Q-Suchleiste bietet das klassische QuickSight Q & A-Erlebnis. QuickSight integriert sich in Amazon Q Business, um ein neues generatives Q&A-Erlebnis einzuführen. Entwicklern wird empfohlen, das neue Generative Q&A-Erlebnis zu nutzen. Weitere Informationen zum integrierten Generative Q&A-Erlebnis finden Sie unter. Einbettung von Amazon Q in das QuickSight Generative Q & A-Erlebnis

Im folgenden Abschnitt erfahren Sie, wie Sie die Q-Suchleiste URL aus Schritt 3 in Ihre Website oder Anwendungsseite einbetten können. Das machst du mit der QuickSightAmazon-Einbettung SDK (JavaScript). Mit dem SDK können Sie folgende Aktionen ausführen:

  • Platzieren Sie die Q-Suchleiste auf einer HTML Seite.

  • Übergeben Sie Parameter an die Q-Suchleiste.

  • Umgang mit Fehlerstatus mit Meldungen, die an Ihre Anwendung angepasst wurden.

Rufen Sie den GenerateEmbedUrlForAnonymousUser API Vorgang aufURL, um den zu generieren, 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 einen auth_code Wert bereit, der URL eine Single-Sign-On-Sitzung ermöglicht.

Es folgt eine Beispielantwort von generate-embed-url-for-anonymous-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/q/search...", "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713" }

Binden Sie die Q-Suchleiste mithilfe der QuickSightEinbettung in Ihre Webseite ein SDK oder fügen Sie sie einem URL Iframe hinzu. Wenn du eine feste Zahl für Höhe und Breite (in Pixeln) festlegst, QuickSight verwendet diese und ändert deine visuelle Darstellung nicht, wenn sich die Größe deines Fensters ändert. Wenn Sie Höhe und Breite als relativen Prozentwert einstellen, stellt QuickSight ein dynamisches Layout bereit, dessen Größe der Fenstergröße entsprechend geändert wird.

Stellen Sie dazu sicher, dass die Domain, auf der die eingebettete Q-Suchleiste gehostet werden soll, auf der Zulassungsliste steht, der Liste der zugelassenen Domains für Ihr QuickSight Abonnement. Diese Voraussetzung schützt die Daten, indem unzulässige Domains daran gehindert werden, eingebettete Q-Suchleiste zu hosten. Weitere Informationen zum Hinzufügen von Domains für eine eingebettete Q-Suchleiste finden Sie unter Verwaltung und Einbettung von Domains.

Wenn Sie die QuickSight Einbettung verwendenSDK, wird die Größe der Q-Suchleiste auf Ihrer Seite je nach Status dynamisch angepasst. Mithilfe der QuickSight Einbettung SDK können Sie auch die Parameter in der Q-Suchleiste steuern und Rückrufe in Bezug auf den Abschluss des Seitenladevorgangs und Fehler erhalten.

Das folgende Beispiel zeigt, wie Sie die generierten verwenden. URL Dieser Code wird auf Ihrem App-Server generiert.

<!DOCTYPE html> <html> <head> <title>Q Search Bar 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 embedQSearchBar = 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 = { hideTopicName: false, theme: '<YOUR_THEME_ID>', allowTopicSelection: true, onMessage: async (messageEvent, experienceMetadata) => { switch (messageEvent.eventName) { case 'Q_SEARCH_OPENED': { console.log("Do something when Q Search content expanded"); break; } case 'Q_SEARCH_CLOSED': { console.log("Do something when Q Search content collapsed"); break; } case 'Q_SEARCH_SIZE_CHANGED': { console.log("Do something when Q Search size changed"); break; } case 'CONTENT_LOADED': { console.log("Do something when the Q Search is loaded."); break; } case 'ERROR_OCCURRED': { console.log("Do something when the Q Search fails loading."); break; } } } }; const embeddedDashboardExperience = await embeddingContext.embedQSearchBar(frameOptions, contentOptions); }; </script> </head> <body onload="embedQSearchBar()"> <div id="experience-container"></div> </body> </html>
<!DOCTYPE html> <html> <head> <title>QuickSight Q Search Bar Embedding</title> <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@1.18.0/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 onOpen() { console.log("Do something when the Q search bar opens"); } function onClose() { console.log("Do something when the Q search bar closes"); } function embedQSearchBar() { var containerDiv = document.getElementById("embeddingContainer"); var options = { 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, width: "1000px", locale: "en-US", qSearchBarOptions: { expandCallback: onOpen, collapseCallback: onClose, iconDisabled: false, topicNameDisabled: false, themeId: 'bdb844d0-0fe9-4d9d-b520-0fe602d93639', allowTopicSelection: true } }; session = QuickSightEmbedding.embedQSearchBar(options); session.on("error", onError); } function onCountryChange(obj) { session.setParameters({country: obj.value}); } </script> </head> <body onload="embedQSearchBar()"> <div id="embeddingContainer"></div> </body> </html>

Damit dieses Beispiel funktioniert, stellen Sie sicher, dass Sie Amazon QuickSight Embedding verwenden, SDK um die eingebettete Q-Suchleiste auf Ihrer Website mit JavaScript zu laden. Führen Sie für den Erhalt dieser Kopie einen der folgenden Schritte aus:

Optionale Funktionen zum Einbetten der Amazon QuickSight Q-Suchleiste

Anmerkung

Die eingebettete QuickSight Q-Suchleiste bietet das klassische QuickSight Q & A-Erlebnis. QuickSight integriert sich in Amazon Q Business, um ein neues generatives Q&A-Erlebnis einzuführen. Entwicklern wird empfohlen, das neue Generative Q&A-Erlebnis zu nutzen. Weitere Informationen zum integrierten Generative Q&A-Erlebnis finden Sie unter. Einbettung von Amazon Q in das QuickSight Generative Q & A-Erlebnis

Die folgenden optionalen Funktionen sind für die eingebettete Q-Suchleiste mithilfe der Einbettung SDK verfügbar.

Rufen Sie Aktionen in der Q-Suchleiste auf

Die folgenden Optionen werden nur für die Einbettung von Q-Suchleisten unterstützt.

  • Stellen Sie ein Feature in der Q-Suchleiste ein — Dieses Feature sendet eine Frage an die Q-Suchleiste und fragt die Abfrage sofort ab. Außerdem wird das Q-Popover automatisch geöffnet.

    qBar.setQBarQuestion('show me monthly revenue');
  • Q-Popover schließen — Dieses Feature schließt das Q-Popover und setzt den iframe auf die ursprüngliche Größe der Q-Suchleiste zurück.

    qBar.closeQPopover();

Weitere Informationen finden Sie unter QuickSight SDKEinbettung.