Incorporação da barra de pesquisa do Amazon QuickSight Q para usuários registrados
Aplica-se a: Enterprise Edition |
Público-alvo: desenvolvedores do Amazon QuickSight |
nota
A barra de pesquisa incorporada do QuickSight Q disponibiliza a experiência clássica de perguntas e respostas do QuickSight. O QuickSight se integra ao Amazon Q Business para iniciar uma nova experiência de perguntas e respostas generativas. Recomenda-se que os desenvolvedores usem a nova experiência de perguntas e respostas generativas. Para obter mais informações sobre a experiência de perguntas e respostas generativas incorporada, consulte Incorporação do Amazon Q na experiência de perguntas e respostas generativas do QuickSight.
Nas seções apresentadas a seguir, você encontrará informações detalhadas sobre como configurar uma barra de pesquisa incorporada do Amazon QuickSight Q para usuários registrados do QuickSight.
Tópicos
Etapa 1: configurar permissões
nota
A barra de pesquisa incorporada do QuickSight Q disponibiliza a experiência clássica de perguntas e respostas do QuickSight. O QuickSight se integra ao Amazon Q Business para iniciar uma nova experiência de perguntas e respostas generativas. Recomenda-se que os desenvolvedores usem a nova experiência de perguntas e respostas generativas. Para obter mais informações sobre a experiência de perguntas e respostas generativas incorporada, consulte Incorporação do Amazon Q na experiência de perguntas e respostas generativas do QuickSight.
Na seção a seguir, você descobrirá como configurar permissões para sua aplicação de back-end ou para o servidor Web incorporar a barra de pesquisa do Q. Esta tarefa requer acesso administrativo ao AWS Identity and Access Management (IAM).
Cada usuário que acessa um painel assume um perfil que lhe concede acesso e permissões do Amazon QuickSight para o painel. Para tornar isso possível, crie um perfil do IAM em sua Conta da AWS. Associe uma política do IAM à função, para fornecer permissões a qualquer usuário que a assumir. O perfil do IAM precisa fornecer permissões para a recuperação de URLs de incorporação para um grupo de usuários específico.
Com a ajuda do caractere curinga *, é possível conceder as permissões para a geração de um URL para todos os usuários em um namespace específico. Como alternativa, você pode conceder as permissões para a geração de um URL para um subconjunto de usuários em namespaces específicos. Para isso, você adiciona quicksight:GenerateEmbedUrlForRegisteredUser
.
É possível criar uma condição na política do IAM que limite os domínios que os desenvolvedores podem listar no parâmetro AllowedDomains
de uma operação de API GenerateEmbedUrlForRegisteredUser
. O parâmetro AllowedDomains
é opcional. Ele concede aos desenvolvedores a opção de substituir os domínios estáticos configurados no menu Gerenciar QuickSight e, em vez disso, listar até três domínios ou subdomínios que podem acessar um URL gerado. Em seguida, esse URL é incorporado ao site do desenvolvedor. Somente os domínios que estão listados no parâmetro podem acessar a barra de pesquisa Q incorporada. Sem essa condição, os desenvolvedores podem listar qualquer domínio da Internet no parâmetro AllowedDomains
.
Para limitar os domínios que os desenvolvedores podem usar com esse parâmetro, adicione uma condição AllowedEmbeddingDomains
à política do IAM. Para obter mais informações sobre o parâmetro AllowedDomains
, consulte GenerateEmbedUrlForRegisteredUser na referência da APIs do Amazon QuickSight.
O modelo de política a seguir fornece essas permissões.
{ "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" ] } } } ] }
Além disso, se você estiver criando usuários iniciantes que serão leitores do Amazon QuickSight, certifique-se de adicionar a permissão quicksight:RegisterUser
na política.
O exemplo de política a seguir fornece permissão para a recuperação de um URL de incorporação para usuários iniciantes que serão leitores do QuickSight.
{ "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" ] } } } ] }
Por fim, a identidade do IAM da sua aplicação deve ter uma política de confiança associada a ela, para permitir acesso ao perfil que você acabou de criar. Isso significa que, quando um usuário acessar a aplicação, ele poderá assumir o perfil em nome do usuário e provisioná-lo no QuickSight.
O exemplo apresentado a seguir mostra um exemplo de política de confiança.
{ "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" } ] }
Para obter mais informações sobre as políticas de confiança para a autenticação do OpenID Connect ou para a Security Assertion Markup Language (SAML), consulte as seguintes seções do Guia do usuário do IAM:
Etapa 2: gerar o URL com o código de autenticação anexado
nota
A barra de pesquisa incorporada do QuickSight Q disponibiliza a experiência clássica de perguntas e respostas do QuickSight. O QuickSight se integra ao Amazon Q Business para iniciar uma nova experiência de perguntas e respostas generativas. Recomenda-se que os desenvolvedores usem a nova experiência de perguntas e respostas generativas. Para obter mais informações sobre a experiência de perguntas e respostas generativas incorporada, consulte Incorporação do Amazon Q na experiência de perguntas e respostas generativas do QuickSight.
Na seção apresentada a seguir, você descobrirá como realizar a autenticação do usuário e obter o URL do tópico do Q incorporável em seu servidor de aplicações. Se você planeja incorporar a barra do Q para os tipos de identidade do IAM ou do Amazon QuickSight, compartilhe o tópico do Q com os usuários.
Quando um usuário acessa a aplicação, ela assume o perfil do IAM em nome do usuário. Em seguida, a aplicação adiciona o usuário ao QuickSight, se esse usuário ainda não existir. Depois disso, ela transfere um identificador como o ID exclusivo de sessão do usuário.
A execução das etapas descritas garante que cada visualizador do tópico do Q seja provisionado exclusivamente no QuickSight. Ele também aplica as configurações por usuário, como a segurança em nível de linha e padrões dinâmicos para os parâmetros.
Os exemplos a seguir executam a autenticação do IAM em nome do usuário. Este código é executado no servidor da aplicação.
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)
O exemplo a seguir mostra o JavaScript (Node.js) que você pode usar no servidor de aplicações para gerar o URL para o painel incorporado. Você pode usar esse URL no seu site ou aplicativo para exibir o painel.
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' }
O exemplo a seguir mostra o código em .NET/C# que você pode usar no servidor de aplicações para gerar o URL para a barra de pesquisa Q incorporada. É possível usar esse URL em seu site ou em sua aplicação para exibir a barra de pesquisa do Q.
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); } } } }
Para assumir a função, escolha uma das seguintes operações de API do AWS Security Token Service (AWS STS):
-
AssumeRole: use esta operação quando estiver usando uma identidade do IAM para assumir o perfil.
-
AssumeRoleWithWebIdentity: use esta operação quando estiver usando um provedor de identidades da Web para autenticar seu usuário.
-
AssumeRoleWithSaml: use esta operação quando estiver usando a SAML para autenticar seus usuários.
O exemplo a seguir mostra o comando da CLI que define a função do IAM. O perfil precisa ter permissões habilitadas para quicksight:GenerateEmbedUrlForRegisteredUser
. Se você estiver adotando uma abordagem just-in-time para adicionar usuários quando eles usarem um tópico na barra de pesquisa do Q, o perfil também precisará de permissões habilitadas para quicksight:RegisterUser
.
aws sts assume-role \ --role-arn "
arn:aws:iam::111122223333:role/embedding_quicksight_q_search_bar_role
" \ --role-session-namejohn.doe@example.com
A operação assume-role
retorna três parâmetros de saída: a chave de acesso, a chave secreta e o token da sessão.
nota
Se você receber um erro ExpiredToken
ao chamar a operação AssumeRole
, isso provavelmente ocorre porque o SESSION TOKEN
anterior ainda está nas variáveis de ambiente. Resolva isso definindo as seguintes variáveis:
-
AWS_ACCESS_KEY_ID
-
AWS_SECRET_ACCESS_KEY
-
AWS_SESSION_TOKEN
O exemplo a seguir mostra como definir esses três parâmetros na CLI. Para uma máquina com Microsoft Windows, use set
em vez de 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
"
Executar esses comandos define o ID da sessão da função do usuário que está acessando o site embedding_quicksight_q_search_bar_role/john.doe@example.com
. O ID da sessão da função é composto pelo nome da função a partir de role-arn
e o valor de role-session-name
. Usando o ID único da sessão da função para cada usuário garante que as permissões apropriadas sejam definidas para cada usuário. Isso também impede qualquer limitação do acesso do usuário. O controle de utilização corresponde a um recurso de segurança que impede que o mesmo usuário acesse o QuickSight de vários locais.
Além disso, o ID da sessão do perfil se torna o nome do usuário no QuickSight. Você pode usar esse padrão para provisionar os usuários no QuickSight antecipadamente ou para provisioná-los na primeira vez em que acessarem a barra de pesquisa do Q.
O exemplo a seguir mostra o comando da CLI que você pode usar para provisionar um usuário. Para obter mais informações sobre RegisterUser, DescribeUser e outras operações de API do QuickSight, consulte a Referência da API do QuickSight.
aws quicksight register-user \ --aws-account-id
111122223333
\ --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
Se o usuário for autenticado por meio do Microsoft AD, você não precisará usar o RegisterUser
para configurá-lo. Em vez disso, os usuários devem ser inscritos automaticamente na primeira vez que acessarem o QuickSight. Para os usuários do Microsoft AD, você pode usar DescribeUser
para obter o nome do recurso da Amazon (ARN) do usuário.
Na primeira vez que um usuário acessa o QuickSight, você também pode adicioná-lo ao grupo com o qual o painel é compartilhado. O exemplo a seguir mostra o comando da CLI para adicionar um usuário a um grupo.
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
"
Agora, você tem um usuário da sua aplicação que também é um usuário do QuickSight e tem acesso ao painel.
Por fim, obtenha um signed URL para o painel, chame o generate-embed-url-for-registered-user
partir do servidor de aplicativo. Isso retorna o URL do painel incorporável. O exemplo a seguir mostra como gerar o URL para um painel incorporado usando uma chamada do lado do servidor para usuários autenticados por meio do AWS Managed Microsoft AD ou do Single Sign-On (Centro de Identidade do IAM).
aws quicksight generate-embed-url-for-registered-user \ --aws-account-id
111122223333
\ --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
}
Para obter mais informações sobre o uso dessa operação, consulte GenerateEmbedUrlForRegisteredUser. Você pode usar essa e outras operações de API no seu próprio código.
Etapa 3: incorporar o URL da barra de pesquisa do Q
nota
A barra de pesquisa incorporada do QuickSight Q disponibiliza a experiência clássica de perguntas e respostas do QuickSight. O QuickSight se integra ao Amazon Q Business para iniciar uma nova experiência de perguntas e respostas generativas. Recomenda-se que os desenvolvedores usem a nova experiência de perguntas e respostas generativas. Para obter mais informações sobre a experiência de perguntas e respostas generativas incorporada, consulte Incorporação do Amazon Q na experiência de perguntas e respostas generativas do QuickSight.
Na seção apresentada a seguir, você descobrirá como incorporar o URL da barra de pesquisa Q da etapa 3 no site ou na página da aplicação. Você faz isso com o SDK de incorporação do Amazon QuickSight
-
Coloque a barra de pesquisa Q em uma página HTML.
-
Adicione os parâmetros para a barra de pesquisa do Q.
-
Corrija os estados de erro com mensagens que são personalizados para seu aplicativo.
Para gerar o URL que você pode incorporar à aplicação, chame a operação de API GenerateEmbedUrlForRegisteredUser
. Esse URL é válido por cinco minutos e a sessão resultante é válida por, no máximo, dez horas. A operação de API fornece ao URL um valor auth_code
que possibilita uma sessão de logon único.
Veja a seguir uma resposta de exemplo de 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" }
Incorpore a barra de pesquisa Q em sua página da Web ao usar o SDK de incorporação do QuickSight
Para fazer isso, certifique-se de que o domínio para a hospedagem da barra de pesquisa Q incorporada esteja na lista de permissões, a lista de domínios aprovados para a assinatura do QuickSight. Esse requisito protege seus dados, impedindo que domínios não aprovados hospedem painéis incorporados. Para obter mais informações sobre como adicionar domínios para uma barra de pesquisa Q incorporada, consulte Gerenciar domínios e incorporação.
Quando você usa o SDK de incorporação do QuickSight, a barra de pesquisa Q em sua página é redimensionada dinamicamente com base no estado. Ao usar o SDK de incorporação do QuickSight, você também pode controlar parâmetros na barra de pesquisa Q e receber retornos de chamada em termos de conclusões e erros de carregamento de páginas.
O exemplo a seguir mostra como usar o URL gerado. Este código é gerado no seu servidor de aplicações.
<!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>
Para que este exemplo funcione, certifique-se de usar o SDK de incorporação do Amazon QuickSight para carregar o painel incorporado em seu site usando JavaScript. Para obter sua cópia, siga um destes procedimentos:
-
Faça download do SDK de incorporação do Amazon QuickSight
usando o GitHub. Este repositório é mantido por um grupo de desenvolvedores do QuickSight. -
Faça download da versão mais recente do SDK de incorporação em https://www.npmjs.com/package/amazon-quicksight-embedding-sdk
. -
Se você usa
npm
para dependências do JavaScript, faça o download e a instalação ao executar o comando apresentado a seguir.npm install amazon-quicksight-embedding-sdk
Funcionalidades opcionais de incorporação da barra de pesquisa do Amazon QuickSight Q
nota
A barra de pesquisa incorporada do QuickSight Q disponibiliza a experiência clássica de perguntas e respostas do QuickSight. O QuickSight se integra ao Amazon Q Business para iniciar uma nova experiência de perguntas e respostas generativas. Recomenda-se que os desenvolvedores usem a nova experiência de perguntas e respostas generativas. Para obter mais informações sobre a experiência de perguntas e respostas generativas incorporada, consulte Incorporação do Amazon Q na experiência de perguntas e respostas generativas do QuickSight.
As funcionalidades opcionais a seguir estão disponíveis para a barra de pesquisa Q incorporada usando o SDK de incorporação.
Invocar ações da barra de pesquisa do Q
As opções apresentadas a seguir são compatíveis somente para a incorporação da barra de pesquisa do Q.
-
Definir uma pergunta na barra de pesquisa Q: este recurso envia uma pergunta para a barra de pesquisa Q e a consulta imediatamente. O recurso também abre automaticamente o pop-over do Q.
qBar.setQBarQuestion('
show me monthly revenue
'); -
Fechar o pop-over do Q: este recurso fecha o pop-over do Q e retorna o iframe ao tamanho original da barra de pesquisa do Q.
qBar.closeQPopover();
Para obter mais informações, consulte o SDK de incorporação do QuickSight