Einbetten der Amazon QuickSight Q-Suchleiste für registrierte Benutzer
| Gilt für: Enterprise Edition |
| Zielgruppe: Amazon QuickSight-Entwickler |
Anmerkung
Die eingebettete QuickSight Q-Suchleiste bietet das klassische QuickSight-Q&A-Erlebnis. QuickSight lässt sich in Amazon Q Business integrieren, um ein neues Erlebnis mit generativem Q&A einzuführen. Entwicklern wird empfohlen, das neue Erlebnis mit generativem Q&A zu nutzen. Weitere Informationen zum eingebetteten Erlebnis mit generativem Q&A finden Sie unter Einbetten des Erlebnisses mit generativem Q&A von Amazon Q in QuickSight.
In den folgenden Abschnitten finden Sie detaillierte Informationen zum Einrichten einer eingebetteten Amazon QuickSight Q-Suchleiste für registrierte Benutzer von QuickSight.
Themen
Schritt 1: Festlegen von Berechtigungen
Anmerkung
Die eingebettete QuickSight Q-Suchleiste bietet das klassische QuickSight-Q&A-Erlebnis. QuickSight lässt sich in Amazon Q Business integrieren, um ein neues Erlebnis mit generativem Q&A einzuführen. Entwicklern wird empfohlen, das neue Erlebnis mit generativem Q&A zu nutzen. Weitere Informationen zum eingebetteten Erlebnis mit generativem Q&A finden Sie unter Einbetten des Erlebnisses mit generativem Q&A von Amazon Q in QuickSight.
Im folgenden Abschnitt erfahren Sie, wie Sie Berechtigungen für Ihre Back-End-Anwendung oder Ihren Webserver einrichten, um die Q-Suchleiste einzubetten. Diese Aufgabe erfordert administrativen Zugriff auf AWS Identity and Access Management (IAM).
Jeder Benutzer, der auf ein Dashboard zugreift, übernimmt eine Rolle, die ihm Amazon QuickSight-Zugriff und Berechtigungen für das Dashboard 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. Die IAM-Rolle muss Berechtigungen zum Abrufen von Einbettungs-URLs für einen bestimmten Benutzerpool bereitstellen.
Mithilfe des Platzhalterzeichens * können Sie die Berechtigungen zum Generieren einer URL für alle Benutzer in einem bestimmten Namespace gewähren. Sie können auch Berechtigungen zum Generieren einer URL für eine Teilmenge von Benutzern in bestimmten Namespaces gewähren. 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 GenerateEmbedUrlForRegisteredUser-API-Operation auflisten können. Der AllowedDomains-Parameter ist ein optionaler Parameter. Er bietet Entwicklern die Möglichkeit, die statischen Domains, die im Menü QuickSight verwalten konfiguriert sind, zu überschreiben und stattdessen bis zu drei Domains oder Subdomains aufzulisten, die auf eine generierte URL zugreifen können. Diese 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 Domains 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 unter GenerateEmbedUrlForRegisteredUser in der Amazon QuickSight-API-Referenz.
Die folgende Beispielrichtlinie gewährt diese Berechtigungen.
Wenn Sie Erstbenutzer erstellen, die Amazon QuickSight-Leser sein werden, stellen Sie außerdem sicher, dass Sie die quicksight:RegisterUser-Berechtigung in der Richtlinie hinzufügen.
Die folgende Beispielrichtlinie gewährt Erstbenutzern, die QuickSight-Leser sein sollen, die Erlaubnis, eine Einbettungs-URL abzurufen.
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 Security Assertion Markup Language (SAML)-Authentifizierung finden Sie in den folgenden Abschnitten im IAM-Benutzerhandbuch:
Schritt 2: Generieren Sie die URL mit dem angehängten Authentifizierungscode
Anmerkung
Die eingebettete QuickSight Q-Suchleiste bietet das klassische QuickSight-Q&A-Erlebnis. QuickSight lässt sich in Amazon Q Business integrieren, um ein neues Erlebnis mit generativem Q&A einzuführen. Entwicklern wird empfohlen, das neue Erlebnis mit generativem Q&A zu nutzen. Weitere Informationen zum eingebetteten Erlebnis mit generativem Q&A finden Sie unter Einbetten des Erlebnisses mit generativem Q&A von Amazon Q in QuickSight.
Im folgenden Abschnitt erfahren Sie, wie Sie Ihren Benutzer authentifizieren und die einbettungsfähige Q-Themen-URL auf Ihrem Anwendungsserver abrufen. Wenn Sie die Q-Leiste für IAM- oder Amazon QuickSight-Identitätstypen einbetten möchten, teilen Sie das Q-Thema den Benutzern mit.
Wenn ein Benutzer auf Ihre App zugreift, übernimmt die App die IAM-Rolle für den Benutzer. Dann fügt die App den Benutzer zu QuickSight hinzu, 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 jeder Viewer des Q-Themas 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.RegisteredUserQSearchBarEmbeddingConfiguration; /** * Class to call QuickSight AWS SDK to get url for embedding the Q search bar. */ public class RegisteredUserQSearchBarEmbeddingConfiguration { private final AmazonQuickSight quickSightClient; public RegisteredUserQSearchBarEmbeddingConfiguration() { this.quickSightClient = AmazonQuickSightClientBuilder .standard() .withRegion(Regions.US_EAST_1.getName()) .withCredentials(new AWSCredentialsProvider() { @Override public AWSCredentials getCredentials() { // provide actual IAM access key and secret key here return new BasicAWSCredentials("access-key", "secret-key"); } @Override public void refresh() { } } ) .build(); } public String getQuicksightEmbedUrl( final String accountId, // AWS Account ID final String topicId, // Topic ID to embed final List<String> allowedDomains, // Runtime allowed domain for embedding final String userArn // Registered user arn to use for embedding. Refer to Get Embed Url section in developer portal to find how to get user arn for a QuickSight user. ) throws Exception { final RegisteredUserEmbeddingExperienceConfiguration experienceConfiguration = new RegisteredUserEmbeddingExperienceConfiguration() .withQSearchBar(new RegisteredUserQSearchBarEmbeddingConfiguration().withInitialTopicId(topicId)); final GenerateEmbedUrlForRegisteredUserRequest generateEmbedUrlForRegisteredUserRequest = new GenerateEmbedUrlForRegisteredUserRequest(); generateEmbedUrlForRegisteredUserRequest.setAwsAccountId(accountId); generateEmbedUrlForRegisteredUserRequest.setUserArn(userArn); generateEmbedUrlForRegisteredUserRequest.setAllowedDomains(allowedDomains); generateEmbedUrlForRegisteredUserRequest.setExperienceConfiguration(QSearchBar); final GenerateEmbedUrlForRegisteredUserResult generateEmbedUrlForRegisteredUserResult = quickSightClient.generateEmbedUrlForRegisteredUser(generateEmbedUrlForRegisteredUserRequest); return generateEmbedUrlForRegisteredUserResult.getEmbedUrl(); } }
global.fetch = require('node-fetch'); const AWS = require('aws-sdk'); function generateEmbedUrlForRegisteredUser( accountId, topicId, // Topic ID to embed 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 getQSearchBarParams = { "AwsAccountId": accountId, "ExperienceConfiguration": { "QSearchBar": { "InitialTopicId": topicId } }, "UserArn": userArn, "AllowedDomains": allowedDomains, "SessionLifetimeInMinutes": 600 }; const quicksightGetQSearchBar = 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 } }); quicksightGetQSearchBar.generateEmbedUrlForRegisteredUser(getQSearchBarParams, 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 # topicId: Topic ID to embed # userArn: arn of registered user # allowedDomains: Runtime allowed domain for embedding # roleArn: IAM user role to use for embedding # sessionName: session name for the roleArn assume role def getEmbeddingURL(accountId, topicId, 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 = { "QSearchBar": { "InitialTopicId": topicId } }, 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 das eingebettete Dashboard zu generieren. Sie können diese URL auf Ihrer Website oder in Ihrer App verwenden, um das Dashboard 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': { 'QSearchBar': { 'InitialTopicId': 'U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f' } }, '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' }
Das folgende Beispiel zeigt den .NET/C # Code, den Sie auf dem App-Server verwenden können, um die URL für die eingebettete Q-Suchleiste zu generieren. Sie können diese URL auf Ihrer Website oder in Ihrer App verwenden, um die Q-Suchleiste 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 { RegisteredUserQSearchBarEmbeddingConfiguration registeredUserQSearchBarEmbeddingConfiguration = new RegisteredUserQSearchBarEmbeddingConfiguration { InitialTopicId = "U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f" }; RegisteredUserEmbeddingExperienceConfiguration registeredUserEmbeddingExperienceConfiguration = new RegisteredUserEmbeddingExperienceConfiguration { QSearchBar = registeredUserQSearchBarEmbeddingConfiguration }; 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 zum Authentifizieren Ihres Benutzers verwenden.
-
AssumeRoleWithSaml – Verwenden Sie diese Operation, wenn Sie SAML zum Authentifizieren 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 diese ein Thema in der Q-Suchleiste verwenden, müssen für die Rolle auch die Berechtigungen für quicksight:RegisterUser aktiviert sein.
aws sts assume-role \ --role-arn "arn:aws:iam::111122223333:role/embedding_quicksight_q_search_bar_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. 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/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. Das Throttling (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 die Q-Suchleiste 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\ --namespace default \ --identity-typeIAM\ --iam-arn "arn:aws:iam::111122223333:role/embedding_quicksight_q_search_bar_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 ihrem ersten Zugriff auf QuickSight automatisch angemeldet werden. Für Microsoft AD-Benutzer können Sie DescribeUser verwenden, um den Amazon Resource Name (ARN) des Benutzers zu erhalten.
Beim ersten Zugriff eines Benutzers auf QuickSight können Sie diesen Benutzer auch der Gruppe hinzufügen, für die das Dashboard freigegeben ist. 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_q_search_bar_role/john.doe@example.com"
Sie haben jetzt einen Benutzer Ihrer App, der auch Benutzer von QuickSight ist und auf das Dashboard zugreifen kann.
Um eine signierte URL für das Dashboard zu erhalten, rufen Sie schließlich generate-embed-url-for-registered-user vom App-Server auf. Dies gibt die einbettungsfähige Dashboard-URL zurück. Im folgenden Beispiel wird gezeigt, wie Sie die URL für ein eingebettetes Dashboard mithilfe eines serverseitigen Aufrufs für Benutzer generieren können, die über AWS Managed Microsoft AD oder Single-Sign-On (IAM Identity Center) authentifiziert sind.
aws quicksight generate-embed-url-for-registered-user \ --aws-account-id111122223333\ --session-lifetime-in-minutes600\ --user-arnarn:aws:quicksight:us-east-1:111122223333:user/default/embedding_quicksight_q_search_bar_role/embeddingsession--allowed-domains '["domain1","domain2"]' \ --experience-configuration QSearchBar={InitialTopicId=U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f}
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 Q-Suchleiste ein
Anmerkung
Die eingebettete QuickSight Q-Suchleiste bietet das klassische QuickSight-Q&A-Erlebnis. QuickSight lässt sich in Amazon Q Business integrieren, um ein neues Erlebnis mit generativem Q&A einzuführen. Entwicklern wird empfohlen, das neue Erlebnis mit generativem Q&A zu nutzen. Weitere Informationen zum eingebetteten Erlebnis mit generativem Q&A finden Sie unter Einbetten des Erlebnisses mit generativem Q&A von Amazon Q in QuickSight.
Im folgenden Abschnitt erfahren Sie, wie Sie die Q-Suchleisten-URL aus Schritt 3 in Ihre Website oder Anwendungsseite einbetten. Sie tun dies mit dem Amazon QuickSight Embedding SDK
-
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 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-Wert 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/q/search...", "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713" }
Betten Sie die Q-Suchleiste in die Webseite ein, indem Sie das QuickSight-Embedding-SDK
Stellen Sie dazu sicher, dass die Domain, die die eingebettete Q-Suchleiste hosten 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 Dashboards 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 das QuickSight Embedding SDK verwenden, wird die Größe der Q-Suchleiste auf Ihrer Seite je nach Status dynamisch angepasst. Mit dem QuickSight Embedding SDK können Sie auch Parameter in der Q-Suchleiste steuern und Callbacks zu Seitenladefortschritt und Fehlern erhalten.
Im folgenden Beispiel wird gezeigt, wie Sie die generierte URL nutzen. 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 das Amazon QuickSight Embedding SDK verwenden, um das eingebettete Dashboard 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
Optionale Funktionen zum Einbetten der Suchleiste von Amazon QuickSight Q
Anmerkung
Die eingebettete QuickSight Q-Suchleiste bietet das klassische QuickSight-Q&A-Erlebnis. QuickSight lässt sich in Amazon Q Business integrieren, um ein neues Erlebnis mit generativem Q&A einzuführen. Entwicklern wird empfohlen, das neue Erlebnis mit generativem Q&A zu nutzen. Weitere Informationen zum eingebetteten Erlebnis mit generativem Q&A finden Sie unter Einbetten des Erlebnisses mit generativem Q&A von Amazon Q in QuickSight.
Die folgenden optionalen Funktionen sind für die eingebettete Q-Suchleiste mithilfe des eingebetteten 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 Embedding SDK