內嵌已註冊使用者的 Amazon QuickSight Q 搜尋列 - Amazon QuickSight

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

內嵌已註冊使用者的 Amazon QuickSight Q 搜尋列

 適用於:企業版本 
   目標對象:Amazon QuickSight 開發人員 
注意

內嵌 QuickSight Q 搜尋列提供傳統 QuickSight Q&A 體驗。 與 Amazon Q Business QuickSight 整合,以啟動新的生成式 Q&A 體驗。建議開發人員使用新的生成式問答體驗。如需內嵌生成式問答體驗的詳細資訊,請參閱內嵌 Amazon Q in QuickSight Generative Q&A 體驗

在下列各節中,您可以找到如何為 的註冊使用者設定內嵌 Amazon QuickSight Q 搜尋列的詳細資訊 QuickSight。

步驟 1:設定許可

注意

內嵌 QuickSight Q 搜尋列提供傳統 QuickSight Q&A 體驗。 與 Amazon Q Business QuickSight 整合,以啟動新的生成式 Q&A 體驗。建議開發人員使用新的生成式問答體驗。如需內嵌生成式問答體驗的詳細資訊,請參閱內嵌 Amazon Q in QuickSight Generative Q&A 體驗

在以下章節中,您可以了解如何為後端應用程式或 Web 伺服器設定許可以內嵌 Q 搜尋列。此任務需要 AWS Identity and Access Management () 的管理存取權IAM。

每個存取儀表板的使用者都會擔任一個角色,該角色會授予他們儀表板的 Amazon QuickSight 存取權和許可。若要實現此目標,請在 中建立 IAM角色 AWS 帳戶。將IAM政策與 角色建立關聯,以便為擔任該角色的任何使用者提供許可。IAM 角色需要提供許可,才能擷取特定使用者集URLs區的內嵌。

透過萬用字元 * 的協助,您可以授予許可,為特定命名空間中的所有URL使用者產生 。或者,您可以授予許可,以URL針對特定命名空間中的使用者子集產生 。對於這一點,您新增 quicksight:GenerateEmbedUrlForRegisteredUser

您可以在IAM政策中建立條件,以限制開發人員可以在 GenerateEmbedUrlForRegisteredUser API 操作的 AllowedDomains 參數中列出的網域。AllowedDomains 參數是選用參數。它授予開發人員覆寫在管理 QuickSight功能表中設定的靜態網域的選項,並改為列出最多三個可存取所產生 的網域或子網域URL。然後URL,這會內嵌在開發人員的網站中。只有參數中列出的域可以存取內嵌 Q 搜尋列。如果沒有這種情況,開發人員可以在 AllowedDomains 參數中列出網際網路上的任何域。

若要限制開發人員可搭配此參數使用的網域,請將 AllowedEmbeddingDomains條件新增至您的IAM政策。如需 AllowedDomains 參數的詳細資訊,請參閱《Amazon QuickSight API 參考GenerateEmbedUrlForRegisteredUser》中的 。

下列範例政策提供這些許可。

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

此外,如果您要建立將成為 Amazon QuickSight 讀者的第一次使用者,請務必在政策中新增 quicksight:RegisterUser 許可。

下列範例政策提供許可,以擷取URL初次作為 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" ] } } } ] }

最後,您應用程式的IAM身分必須具有與其相關聯的信任政策,以允許存取您剛建立的角色。這表示當使用者存取您的應用程式時,您的應用程式可以代表使用者擔任該角色,並在其中佈建使用者 QuickSight。

範例信任政策如下所示。

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

如需 OpenID Connect 或安全聲明標記語言 (SAML) 身分驗證的信任政策詳細資訊,請參閱 IAM 使用者指南的下列章節:

步驟 2:產生URL已連接驗證碼的

注意

內嵌 QuickSight Q 搜尋列提供傳統 QuickSight Q&A 體驗。 與 Amazon Q Business QuickSight 整合,以啟動新的生成式 Q&A 體驗。建議開發人員使用新的生成式問答體驗。如需內嵌生成式問答體驗的詳細資訊,請參閱內嵌 Amazon Q in QuickSight Generative Q&A 體驗

在下一節中,您可以找到如何驗證使用者,並在應用程式伺服器上取得可內嵌的 Q URL 主題。如果您計劃內嵌 IAM或 Amazon QuickSight 身分類型的 Q 列,請與使用者共用 Q 主題。

當使用者存取您的應用程式時,應用程式會代表使用者擔任該IAM角色。然後,如果使用者尚未存在 QuickSight,應用程式會將使用者新增至 。接著,它傳遞識別符當作唯一的角色工作階段 ID。

執行所述的步驟可確保 Q 主題的每個檢視器都是以唯一的方式佈建 QuickSight。它還會強制執行個別使用者設定,例如資料列層級的安全性和參數的動態預設值。

下列範例代表使用者執行IAM身分驗證。此代碼在您的應用程式伺服器上運行。

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)

下列範例顯示您可以在應用程式伺服器上使用的 JavaScript (Node.js),以URL為內嵌儀表板產生 。您可以在URL網站或應用程式中使用此項目來顯示儀表板。

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' }

下列範例顯示 。NET/您可以在應用程式伺服器上用來產生內嵌 Q 搜尋列URL的 C# 程式碼。您可以在URL網站或應用程式中使用此項目來顯示 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); } } } }

若要擔任角色,請選擇下列其中一個 AWS Security Token Service (AWS STS) API操作:

  • AssumeRole – 當您使用IAM身分擔任角色時,請使用此操作。

  • AssumeRoleWithWebIdentity – 當您使用 Web 身分提供者來驗證使用者時,請使用此操作。

  • AssumeRoleWithSaml – 當您使用 驗證使用者時SAML,請使用此操作。

下列範例顯示 CLI命令來設定IAM角色。角色需要啟用 quicksight:GenerateEmbedUrlForRegisteredUser 的許可。如果您在 Q 搜尋列中使用主題時採取 just-in-time新增使用者的方法,該角色也需要為 啟用許可quicksight:RegisterUser

aws sts assume-role \ --role-arn "arn:aws:iam::111122223333:role/embedding_quicksight_q_search_bar_role" \ --role-session-name john.doe@example.com

assume-role 操作會傳回三個輸出參數:存取金鑰、私密金鑰和工作階段字符。

注意

若您呼叫 AssumeRole 操作時收到 ExpiredToken 錯誤,原因可能是先前的 SESSION TOKEN 仍在環境變數中。設定以下變數便可清除此錯誤:

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

  • AWS_SESSION_TOKEN

下列範例示範如何在 中設定這三個參數CLI。對於 Microsoft Windows 電腦,請使用 set,不要使用 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"

對於瀏覽您網站的使用者,執行這些命令可將其角色工作階段 ID 設為 embedding_quicksight_q_search_bar_role/john.doe@example.com。角色工作階段 ID 由來自 role-arnrole-session-name 值的角色名稱所組成。對每個使用者使用唯一的角色工作階段 ID,可確保為每個使用者設定適當的許可。還能避免對使用者存取進行任何調節。調節是一種安全功能,可防止相同的使用者 QuickSight 從多個位置存取 。

角色工作階段 ID 也會在 QuickSight 中變成使用者名稱。您可以使用此模式 QuickSight 提前佈建使用者,或在使用者第一次存取 Q 搜尋列時佈建他們。

下列範例顯示您可以用來佈建使用者的CLI命令。如需 RegisterUserDescribeUser和其他 QuickSight API 操作的詳細資訊,請參閱 QuickSight API參考

aws quicksight register-user \ --aws-account-id 111122223333 \ --namespace default \ --identity-type IAM \ --iam-arn "arn:aws:iam::111122223333:role/embedding_quicksight_q_search_bar_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

如果使用者是透過 Microsoft AD 進行身分驗證,您就不需要使用 RegisterUser 設定他們。相反地,當他們第一次存取時,就應該自動訂閱 QuickSight。對於 Microsoft AD 使用者,您可以使用 DescribeUser 取得使用者 Amazon Resource Name (ARN)。

使用者第一次存取時 QuickSight,您也可以將此使用者新增至儀表板共用的群組。下列範例顯示將使用者新增至 群組的 CLI 命令。

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"

您現在擁有的應用程式使用者,其也是 的使用者 QuickSight,以及有權存取儀表板的使用者。

最後,若要取得儀表板URL的簽署,generate-embed-url-for-registered-user請從應用程式伺服器呼叫 。這會傳回可內嵌的儀表板 URL。下列範例示範如何使用伺服器端呼叫URL,為透過 AWS Managed Microsoft AD 或單一登入 (IAM 身分中心) 驗證的使用者產生內嵌儀表板的 。

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_q_search_bar_role/embeddingsession --allowed-domains '["domain1","domain2"]' \ --experience-configuration QSearchBar={InitialTopicId=U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f}

如需使用此操作的詳細資訊,請參閱 GenerateEmbedUrlForRegisteredUser。 您可以在自己的程式碼中使用此操作和其他API操作。

步驟 3:內嵌 Q 搜尋列 URL

注意

內嵌 QuickSight Q 搜尋列提供傳統 QuickSight Q&A 體驗。 與 Amazon Q Business QuickSight 整合,以啟動新的生成式 Q&A 體驗。建議開發人員使用新的生成式問答體驗。如需內嵌生成式問答體驗的詳細資訊,請參閱內嵌 Amazon Q in QuickSight Generative Q&A 體驗

在下一節中,您可以找到如何在網站或應用程式頁面中嵌入步驟 3 URL 中的 Q 搜尋列。您可以使用 Amazon QuickSight 內嵌 SDK () 來執行此操作JavaScript。您可以使用SDK執行以下操作:

  • 將 Q 搜尋列放在HTML頁面上。

  • 將參數傳遞至 Q 搜尋列。

  • 以針對您的應用程式而訂做的訊息來處理錯誤狀態。

若要產生您可以內嵌在應用程式中URL的 ,請呼叫 GenerateEmbedUrlForRegisteredUserAPI操作。這URL有效時間為 5 分鐘,而產生的工作階段有效時間最長為 10 小時。API 操作會提供 URL auth_code值,以啟用工作階段的單一登入。

以下是 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" }

使用內嵌或將此項目新增至 iframe,將 Q 搜尋列QuickSight內嵌SDKURL至您的網頁。如果您設定固定高度和寬度數字 (以像素為單位), QuickSight 會使用這些值,而且不會隨著視窗大小調整而變更視覺效果。如果您是設定相對百分比高度和寬度, QuickSight 將提供隨視窗大小變更而改變的回應式配置。

若要執行此作業,請確定託管內嵌 Q 搜尋列的網域位於允許清單,即 QuickSight 訂閱的核准網域清單。這項要求將使未獲核准的網域無法託管內嵌儀表板,進而保護您的資料。如需為內嵌 Q 搜尋列新增域的詳細資訊,請參閱 管理域和內嵌

當您使用 QuickSight 內嵌 時SDK,頁面上的 Q 搜尋列會根據狀態動態調整大小。透過使用 QuickSight 內嵌 SDK,您也可以控制 Q 搜尋列中的參數,並根據頁面載入完成和錯誤接收回呼。

下列範例示範如何使用產生的 URL。此代碼在您的應用程式伺服器上生成。

<!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>

若要讓此範例運作,請務必使用 Amazon QuickSight Embedding SDK 載入您網站上的內嵌儀表板 JavaScript。為獲得您的版本,請執行以下其中一項操作:

選用的 Amazon QuickSight Q 搜尋列內嵌功能

注意

內嵌 QuickSight Q 搜尋列提供傳統 QuickSight Q&A 體驗。 與 Amazon Q Business QuickSight 整合,以啟動新的生成式 Q&A 體驗。建議開發人員使用新的生成式問答體驗。如需內嵌生成式問答體驗的詳細資訊,請參閱內嵌 Amazon Q in QuickSight Generative Q&A 體驗

下列選用功能可用於使用內嵌 的內嵌 Q 搜尋列SDK。

調用 Q 搜尋列動作

下列選項僅支援 Q 搜尋列內嵌。

  • 設定 Q 搜尋列問題 – 此功能會將問題傳送至 Q 搜尋列,並立即查詢問題。它也會自動開啟 Q 快顯。

    qBar.setQBarQuestion('show me monthly revenue');
  • 關閉 Q 快顯 – 此功能關閉 Q 快顯窗口,並將 iframe 回復到原來的 Q 搜尋列大小。

    qBar.closeQPopover();

如需詳細資訊,請參閱QuickSight 內嵌 SDK