View a markdown version of this page

Einbetten von Amazon Quick Sight-Grafiken für registrierte Benutzer - Amazon Quick

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 von Amazon Quick Sight-Grafiken für registrierte Benutzer

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

In den folgenden Abschnitten finden Sie detaillierte Informationen zur Einrichtung eingebetteter Amazon Quick Sight-Grafiken für registrierte Benutzer von Amazon Quick Sight.

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 Bild zugreift, übernimmt eine Rolle, die ihm Amazon Quick Sight-Zugriff und Berechtigungen für das Bild 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 oder 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 GenerateEmbedUrlForAnonymousUser-API-Operation auflisten können. Der AllowedDomains-Parameter ist ein optionaler Parameter. Sie als Entwickler haben damit die Möglichkeit, die statischen Domains, die im Menü „Amazon Quick Sight verwalten“ konfiguriert sind, außer Kraft zu setzen. 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.

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 GenerateEmbedUrlForRegisteredUser in der Amazon Quick Sight API-Referenz.

Bewährte Sicherheitsverfahren für IAM-Bedingungsoperatoren

Falsch konfigurierte IAM-Bedingungsoperatoren können durch URL-Variationen den unbefugten Zugriff auf Ihre eingebetteten Quick-Ressourcen ermöglichen. Wenn Sie den quicksight:AllowedEmbeddingDomains Bedingungsschlüssel in Ihren IAM-Richtlinien verwenden, verwenden Sie Bedingungsoperatoren, die entweder bestimmte Domänen zulassen oder alle Domänen ablehnen, die nicht ausdrücklich zugelassen sind. Weitere Informationen zu IAM-Bedingungsoperatoren finden Sie unter IAM-JSON-Richtlinienelemente: Bedingungsoperatoren im IAM-Benutzerhandbuch.

Viele verschiedene URL-Varianten können auf dieselbe Ressource verweisen. Die folgenden URLs werden beispielsweise alle auf denselben Inhalt aufgelöst:

  • https://example.com

  • https://example.com/

  • https://Example.com

Wenn Ihre Richtlinie Operatoren verwendet, die diese URL-Variationen nicht berücksichtigen, kann ein Angreifer Ihre Einschränkungen umgehen, indem er äquivalente URL-Variationen bereitstellt.

Sie müssen überprüfen, ob Ihre IAM-Richtlinie geeignete Bedingungsoperatoren verwendet, um Sicherheitslücken durch Umgehung von Sicherheitslücken zu verhindern und sicherzustellen, dass nur Ihre vorgesehenen Domains auf Ihre eingebetteten Ressourcen zugreifen können.

Die folgende Beispielrichtlinie gewährt diese Berechtigungen.

Wenn Sie Erstbenutzer erstellen, die Amazon Quick Sight-Leser sein werden, stellen Sie außerdem sicher, dass Sie die quicksight:RegisterUser Berechtigung in die Richtlinie aufnehmen.

Die folgende Beispielrichtlinie gewährt Erstbenutzern, die Amazon Quick Sight-Leser werden sollen, die Erlaubnis zum Abrufen einer Einbettungs-URL.

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. Das bedeutet, dass, wenn ein Benutzer auf Ihre Anwendung zugreift, Ihre Anwendung die Rolle im Namen des Benutzers übernehmen und den Benutzer in Amazon Quick Sight bereitstellen kann. Das folgende Beispiel zeigt eine Vertrauensrichtlinie.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowLambdaFunctionsToAssumeThisRole", "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Sid": "AllowEC2InstancesToAssumeThisRole", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

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 Amazon Quick Sight-Benutzer authentifizieren und die einbettbare visuelle URL auf Ihrem Anwendungsserver abrufen. Wenn Sie beabsichtigen, Grafiken für die Identitätstypen IAM oder Amazon Quick Sight einzubetten, teilen Sie das Bild mit den Amazon Quick Sight-Benutzern.

Wenn ein Amazon Quick Sight-Benutzer auf Ihre App zugreift, übernimmt die App im Namen des Amazon Quick Sight-Benutzers die IAM-Rolle. Dann fügt sie den Benutzer zu Amazon Quick Sight hinzu, falls dieser Amazon Quick Sight-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 Betrachter des Visuals in Amazon Quick Sight einzigartig eingerichtet ist. Dazu werden benutzerspezifische Einstellungen erzwungen, etwa Sicherheit auf niedriger Ebene sowie dynamische Standardwerte für Parameter.

Die folgenden Beispiele führen die IAM-Authentifizierung im Namen des Amazon Quick Sight-Benutzers durch. 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.DashboardVisualId; import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForRegisteredUserRequest; import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForRegisteredUserResult; import com.amazonaws.services.quicksight.model.RegisteredUserDashboardVisualEmbeddingConfiguration; import com.amazonaws.services.quicksight.model.RegisteredUserEmbeddingExperienceConfiguration; import java.util.List; /** * Class to call QuickSight AWS SDK to get url for Visual embedding. */ public class GenerateEmbedUrlForRegisteredUserTest { private final AmazonQuickSight quickSightClient; public GenerateEmbedUrlForRegisteredUserTest() { this.quickSightClient = AmazonQuickSightClientBuilder .standard() .withRegion(Regions.US_EAST_1.getName()) .withCredentials(new AWSCredentialsProvider() { @Override public AWSCredentials getCredentials() { // provide actual IAM access key and secret key here return new BasicAWSCredentials("access-key", "secret-key"); } @Override public void refresh() { } } ) .build(); } public String getEmbedUrl( final String accountId, // AWS Account ID final String dashboardId, // Dashboard ID of the dashboard to embed final String sheetId, // Sheet ID of the sheet to embed final String visualId, // Visual ID of the visual to embed final List<String> allowedDomains, // Runtime allowed domains for embedding final String userArn // Registered user arn of the user that you want to provide embedded visual. Refer to Get Embed Url section in developer portal to find out how to get user arn for a QuickSight user. ) throws Exception { final DashboardVisualId dashboardVisual = new DashboardVisualId() .withDashboardId(dashboardId) .withSheetId(sheetId) .withVisualId(visualId); final RegisteredUserDashboardVisualEmbeddingConfiguration registeredUserDashboardVisualEmbeddingConfiguration = new RegisteredUserDashboardVisualEmbeddingConfiguration() .withInitialDashboardVisualId(dashboardVisual); final RegisteredUserEmbeddingExperienceConfiguration registeredUserEmbeddingExperienceConfiguration = new RegisteredUserEmbeddingExperienceConfiguration() .withDashboardVisual(registeredUserDashboardVisualEmbeddingConfiguration); final GenerateEmbedUrlForRegisteredUserRequest generateEmbedUrlForRegisteredUserRequest = new GenerateEmbedUrlForRegisteredUserRequest() .withAwsAccountId(accountId) .withUserArn(userArn) .withExperienceConfiguration(registeredUserEmbeddingExperienceConfiguration) .withAllowedDomains(allowedDomains); final GenerateEmbedUrlForRegisteredUserResult generateEmbedUrlForRegisteredUserResult = quickSightClient.generateEmbedUrlForRegisteredUser(generateEmbedUrlForRegisteredUserRequest); return generateEmbedUrlForRegisteredUserResult.getEmbedUrl(); } }
global.fetch = require('node-fetch'); const AWS = require('aws-sdk'); function generateEmbedUrlForRegisteredUser( accountId, // Your AWS account ID dashboardId, // Dashboard ID to which the constructed URL points sheetId, // Sheet ID to which the constructed URL points visualId, // Visual ID to which the constructed URL points openIdToken, // Cognito-based token userArn, // registered user arn roleArn, // IAM user role to use for embedding sessionName, // Session name for the roleArn assume role allowedDomains, // Runtime allowed domain for embedding getEmbedUrlCallback, // GetEmbedUrl success callback method errorCallback // GetEmbedUrl error callback method ) { const stsClient = new AWS.STS(); let stsParams = { RoleSessionName: sessionName, WebIdentityToken: openIdToken, RoleArn: roleArn } stsClient.assumeRoleWithWebIdentity(stsParams, function(err, data) { if (err) { console.log('Error assuming role'); console.log(err, err.stack); errorCallback(err); } else { const getDashboardParams = { "AwsAccountId": accountId, "ExperienceConfiguration": { "DashboardVisual": { "InitialDashboardVisualId": { "DashboardId": dashboardId, "SheetId": sheetId, "VisualId": visualId } } }, "UserArn": userArn, "AllowedDomains": allowedDomains, "SessionLifetimeInMinutes": 600 }; const quicksightGetDashboard = new AWS.QuickSight({ region: process.env.AWS_REGION, credentials: { accessKeyId: data.Credentials.AccessKeyId, secretAccessKey: data.Credentials.SecretAccessKey, sessionToken: data.Credentials.SessionToken, expiration: data.Credentials.Expiration } }); quicksightGetDashboard.generateEmbedUrlForRegisteredUser(getDashboardParams, function(err, data) { if (err) { console.log(err, err.stack); errorCallback(err); } else { const result = { "statusCode": 200, "headers": { "Access-Control-Allow-Origin": "*", // Use your website domain to secure access to GetEmbedUrl API "Access-Control-Allow-Headers": "Content-Type" }, "body": JSON.stringify(data), "isBase64Encoded": false } getEmbedUrlCallback(result); } }); } }); }
import json import boto3 from botocore.exceptions import ClientError sts = boto3.client('sts') # Function to generate embedded URL # accountId: AWS account ID # dashboardId: Dashboard ID to embed # sheetId: SHEET ID to embed from the dashboard # visualId: Id for the Visual you want to embedded from the dashboard sheet. # userArn: arn of registered user # allowedDomains: Runtime allowed domain for embedding # roleArn: IAM user role to use for embedding # sessionName: session name for the roleArn assume role def getEmbeddingURL(accountId, dashboardId, sheetId, visualId, userArn, allowedDomains, roleArn, sessionName): try: assumedRole = sts.assume_role( RoleArn = roleArn, RoleSessionName = sessionName, ) except ClientError as e: return "Error assuming role: " + str(e) else: assumedRoleSession = boto3.Session( aws_access_key_id = assumedRole['Credentials']['AccessKeyId'], aws_secret_access_key = assumedRole['Credentials']['SecretAccessKey'], aws_session_token = assumedRole['Credentials']['SessionToken'], ) try: quicksightClient = assumedRoleSession.client('quicksight', region_name='us-west-2') response = quicksightClient.generate_embed_url_for_registered_user( AwsAccountId=accountId, ExperienceConfiguration = { 'DashboardVisual': { 'InitialDashboardVisualId': { 'DashboardId': dashboardId, 'SheetId': sheetId, 'VisualId': visualId } }, }, UserArn = userArn, AllowedDomains = allowedDomains, SessionLifetimeInMinutes = 600 ) return { 'statusCode': 200, 'headers': {"Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Content-Type"}, 'body': json.dumps(response), 'isBase64Encoded': bool('false') } except ClientError as e: return "Error generating embedding url: " + str(e)

Das folgende Beispiel zeigt die JavaScript (Node.js), die 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.

Beispiel
const AWS = require('aws-sdk'); const https = require('https'); var quicksightClient = new AWS.Service({ apiConfig: require('./quicksight-2018-04-01.min.json'), region: 'us-east-1', }); quicksightClient.generateEmbedUrlForRegisteredUser({ 'AwsAccountId': '111122223333', 'ExperienceConfiguration': { 'DashboardVisual': { 'InitialDashboardVisualId': { 'DashboardId': 'dashboard_id', 'SheetId': 'sheet_id', 'VisualId': 'visual_id' } } }, 'UserArn': 'REGISTERED_USER_ARN', 'AllowedDomains': allowedDomains, 'SessionLifetimeInMinutes': 100 }, function(err, data) { console.log('Errors: '); console.log(err); console.log('Response: '); console.log(data); });
Beispiel
//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 das. NET/C# Code, den 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.

Beispiel
using System; using Amazon.QuickSight; using Amazon.QuickSight.Model; namespace GenerateDashboardEmbedUrlForRegisteredUser { class Program { static void Main(string[] args) { var quicksightClient = new AmazonQuickSightClient( AccessKey, SecretAccessKey, SessionToken, Amazon.RegionEndpoint.USEast1); try { DashboardVisualId dashboardVisual = new DashboardVisualId { DashboardId = "dashboard_id", SheetId = "sheet_id", VisualId = "visual_id" }; RegisteredUserDashboardVisualEmbeddingConfiguration registeredUserDashboardVisualEmbeddingConfiguration = new RegisteredUserDashboardVisualEmbeddingConfiguration { InitialDashboardVisualId = dashboardVisual }; RegisteredUserEmbeddingExperienceConfiguration registeredUserEmbeddingExperienceConfiguration = new RegisteredUserEmbeddingExperienceConfiguration { DashboardVisual = registeredUserDashboardVisualEmbeddingConfiguration }; Console.WriteLine( quicksightClient.GenerateEmbedUrlForRegisteredUserAsync(new GenerateEmbedUrlForRegisteredUserRequest { AwsAccountId = "111122223333", ExperienceConfiguration = registeredUserEmbeddingExperienceConfiguration, UserArn = "REGISTERED_USER_ARN", AllowedDomains = allowedDomains, SessionLifetimeInMinutes = 100 }).Result.EmbedUrl ); } catch (Exception ex) { Console.WriteLine(ex.Message); } } } }

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

  • AssumeRole— Verwenden Sie diesen Vorgang, 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 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 diese ein Dashboard 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_visual_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 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_visual_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. Throttling ist eine Sicherheitsfunktion, die verhindert, dass derselbe Benutzer von mehreren Standorten aus auf Amazon Quick Sight zugreift.

Die Rollensitzungs-ID wird auch zum Benutzernamen in Amazon Quick Sight. Sie können dieses Muster verwenden, um Ihre Benutzer im Voraus in Amazon Quick Sight bereitzustellen, oder um sie beim ersten Zugriff auf das Dashboard bereitzustellen.

Das folgende Beispiel zeigt den CLI-Befehl, den Sie verwenden können, um einen Benutzer bereitstellen. Weitere Informationen zu RegisterUser und anderen Amazon Quick Sight API-Vorgängen finden Sie in der Amazon Quick Sight API-Referenz. DescribeUser

aws quicksight register-user \ --aws-account-id 111122223333 \ --namespace default \ --identity-type IAM \ --iam-arn "arn:aws:iam::111122223333:role/embedding_quicksight_visual_role" \ --user-role READER \ --user-name jhnd \ --session-name "john.doe@example.com" \ --email john.doe@example.com \ --region us-east-1 \ --custom-permissions-name TeamA1

Wenn der Benutzer durch Microsoft AD authentifiziert wird, müssen Sie RegisterUser nicht verwenden, um sie einzurichten. Stattdessen sollten sie automatisch abonniert werden, wenn sie zum ersten Mal auf Amazon Quick Sight zugreifen. Für Microsoft AD-Benutzer können Sie DescribeUser verwenden, um den Benutzer ARN zu erhalten.

Wenn ein Benutzer zum ersten Mal auf Amazon Quick Sight zugreift, können Sie diesen Benutzer auch zu der Gruppe hinzufügen, mit der das Bild geteilt wird. 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_visual_role/john.doe@example.com"

Sie haben jetzt einen Benutzer Ihrer App, der auch Amazon Quick Sight verwendet und Zugriff auf das Bild hat.

Um eine signierte URL für die Visualisierung zu erhalten, rufen Sie schließlich generate-embed-url-for-registered-user vom App-Server auf. Dies gibt die einbettungsfähige Visualisierungs-URL zurück. Das folgende Beispiel zeigt, wie die URL für ein eingebettetes Bild mithilfe eines serverseitigen Aufrufs für Benutzer generiert wird, die sich über AWS Managed Microsoft AD oder Single Sign-On (IAM Identity Center) authentifiziert haben.

aws quicksight generate-embed-url-for-registered-user \ --aws-account-id 111122223333 \ --session-lifetime-in-minutes 600 \ --user-arn arn:aws:quicksight:us-east-1:111122223333:user/default/embedding_quicksight_visual_role/embeddingsession \ --allowed-domains '["domain1","domain2"]' \ --experience-configuration 'DashboardVisual={InitialDashboardVisualId={DashboardId=dashboard_id,SheetId=sheet_id,VisualId=visual_id}}'

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 Visualisierung-URL ein

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

  • Platzieren Sie die Visualisierung auf einer HTML-Seite.

  • Übergeben Sie Parameter an die Visualisierung.

  • 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: quicksightdomainIn diesem Beispiel handelt es sich um die URL, die Sie für den Zugriff auf Ihr Amazon Quick Sight-Konto verwenden.

//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" }

Betten Sie dieses Bild mithilfe des Amazon Quick Sight Embedding SDK in Ihre Webseite ein oder fügen Sie diese URL zu einem Iframe hinzu. Wenn Sie eine feste Höhe und Breite (in Pixeln) festlegen, verwendet Amazon Quick Sight diese und ändert Ihr Bild nicht, wenn sich die Größe Ihres Fensters ändert. Wenn Sie eine relative prozentuale Höhe und Breite festlegen, bietet Amazon Quick Sight ein responsives Layout, das sich ändert, wenn sich Ihre Fenstergröße ändert. Mithilfe des Amazon Quick Sight Embedding SDK können Sie auch die Parameter innerhalb des Visuals steuern und Rückrufe in Bezug auf den Abschluss des Seitenladevorgangs und Fehler erhalten.

Die Domain, die eingebettete Grafiken und Dashboards hosten soll, muss auf der Zulassungsliste stehen, der Liste der für Ihr Abonnement zugelassenen Domains. Quick Diese Voraussetzung schützt die Daten, indem unzulässige Domains daran gehindert werden, eingebettete Visualisierungen und Dashboards zu hosten. Weitere Informationen zum Hinzufügen von Domains für eingebettete Grafiken und Dashboards finden Sie unter Erlauben Sie das Auflisten von Domains zur Laufzeit mit der Amazon Quick Sight-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>Visual Embedding Example</title> <script src="https://unpkg.com/amazon-quicksight-embedding-sdk@2.0.0/dist/quicksight-embedding-js-sdk.min.js"></script> <script type="text/javascript"> const embedVisual = async() => { const { createEmbeddingContext, } = QuickSightEmbedding; const embeddingContext = await createEmbeddingContext({ onChange: (changeEvent, metadata) => { console.log('Context received a change', changeEvent, metadata); }, }); const frameOptions = { url: "<YOUR_EMBED_URL>", // replace this value with the url generated via embedding API container: '#experience-container', height: "700px", width: "1000px", onChange: (changeEvent, metadata) => { switch (changeEvent.eventName) { case 'FRAME_MOUNTED': { console.log("Do something when the experience frame is mounted."); break; } case 'FRAME_LOADED': { console.log("Do something when the experience frame is loaded."); break; } } }, }; const contentOptions = { parameters: [ { Name: 'country', Values: ['United States'], }, { Name: 'states', Values: [ 'California', 'Washington' ] } ], locale: "en-US", onMessage: async (messageEvent, experienceMetadata) => { switch (messageEvent.eventName) { case 'CONTENT_LOADED': { console.log("All visuals are loaded. The title of the document:", messageEvent.message.title); break; } case 'ERROR_OCCURRED': { console.log("Error occurred while rendering the experience. Error code:", messageEvent.message.errorCode); break; } case 'PARAMETERS_CHANGED': { console.log("Parameters changed. Changed parameters:", messageEvent.message.changedParameters); break; } case 'SIZE_CHANGED': { console.log("Size changed. New dimensions:", messageEvent.message); break; } } }, }; const embeddedVisualExperience = await embeddingContext.embedVisual(frameOptions, contentOptions); const selectCountryElement = document.getElementById('country'); selectCountryElement.addEventListener('change', (event) => { embeddedVisualExperience.setParameters([ { Name: 'country', Values: event.target.value } ]); }); }; </script> </head> <body onload="embedVisual()"> <span> <label for="country">Country</label> <select id="country" name="country"> <option value="United States">United States</option> <option value="Mexico">Mexico</option> <option value="Canada">Canada</option> </select> </span> <div id="experience-container"></div> </body> </html>
<!DOCTYPE html> <html> <head> <title>Visual Embedding Example</title> <!-- You can download the latest QuickSight embedding SDK version from https://www.npmjs.com/package/amazon-quicksight-embedding-sdk --> <!-- Or you can do "npm install amazon-quicksight-embedding-sdk", if you use npm for javascript dependencies --> <script src="./quicksight-embedding-js-sdk.min.js"></script> <script type="text/javascript"> let embeddedVisualExperience; function onVisualLoad(payload) { console.log("Do something when the visual is fully loaded."); } function onError(payload) { console.log("Do something when the visual fails loading"); } function embedVisual() { const containerDiv = document.getElementById("embeddingContainer"); const options = { url: "<YOUR_EMBED_URL>", // replace this value with the url generated via embedding API container: containerDiv, parameters: { country: "United States" }, height: "700px", width: "1000px", locale: "en-US" }; embeddedVisualExperience = QuickSightEmbedding.embedVisual(options); embeddedVisualExperience.on("error", onError); embeddedVisualExperience.on("load", onVisualLoad); } function onCountryChange(obj) { embeddedVisualExperience.setParameters({country: obj.value}); } </script> </head> <body onload="embedVisual()"> <span> <label for="country">Country</label> <select id="country" name="country" onchange="onCountryChange(this)"> <option value="United States">United States</option> <option value="Mexico">Mexico</option> <option value="Canada">Canada</option> </select> </span> <div id="embeddingContainer"></div> </body> </html>

Damit dieses Beispiel funktioniert, stellen Sie sicher, dass Sie das Amazon Quick Sight Embedding SDK verwenden, um das eingebettete Bild auf Ihre Website zu laden. JavaScript Führen Sie für den Erhalt dieser Kopie einen der folgenden Schritte aus: