

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menanamkan bilah pencarian Amazon Quick Sight Q untuk pengguna anonim (tidak terdaftar)
<a name="embedded-analytics-q-search-bar-for-anonymous-users"></a>


|  | 
| --- |
|    Audiens yang dituju:  Pengembang Amazon Quick  | 

**catatan**  
Bilah pencarian Amazon Quick Sight Q yang disematkan memberikan pengalaman Tanya Jawab Amazon Quick Sight klasik. Amazon Quick Sight terintegrasi dengan Amazon Q Business untuk meluncurkan pengalaman Tanya Jawab Generatif baru. Pengembang disarankan untuk menggunakan pengalaman Tanya Jawab Generatif yang baru. Untuk informasi selengkapnya tentang pengalaman Tanya Jawab Generatif yang disematkan, lihat Menyematkan [ Amazon Q di pengalaman Tanya Jawab Generatif Amazon Quick Sight. ](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html)

Di bagian berikut, Anda dapat menemukan informasi terperinci tentang cara mengatur bilah pencarian Amazon Quick Sight Q yang disematkan untuk pengguna anonim (tidak terdaftar).

**Topics**
+ [Langkah 1: Siapkan izin](#embedded-q-bar-for-anonymous-users-step-1)
+ [Langkah 2: Hasilkan URL dengan kode otentikasi terlampir](#embedded-q-bar-for-anonymous-users-step-2)
+ [Langkah 3: Sematkan URL bilah pencarian Q](#embedded-q-bar-for-anonymous-users-step-3)
+ [Fungsi penyematan bilah pencarian Amazon Quick Sight Q opsional](#embedded-q-bar-for-anonymous-users-step-4)

## Langkah 1: Siapkan izin
<a name="embedded-q-bar-for-anonymous-users-step-1"></a>

**catatan**  
Bilah pencarian Amazon Quick Sight Q yang disematkan memberikan pengalaman Tanya Jawab Amazon Quick Sight klasik. Amazon Quick Sight terintegrasi dengan Amazon Q Business untuk meluncurkan pengalaman Tanya Jawab Generatif baru. Pengembang disarankan untuk menggunakan pengalaman Tanya Jawab Generatif yang baru. Untuk informasi selengkapnya tentang pengalaman Tanya Jawab Generatif yang disematkan, lihat Menyematkan [ Amazon Q di pengalaman Tanya Jawab Generatif Amazon Quick Sight. ](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html)

Di bagian berikut, Anda dapat menemukan cara mengatur izin untuk aplikasi backend atau server web Anda untuk menyematkan bilah pencarian Q. Tugas ini membutuhkan akses administratif ke AWS Identity and Access Management (IAM).

Setiap pengguna yang mengakses bilah pencarian Q mengambil peran yang memberi mereka akses dan izin Amazon Quick Sight ke bilah pencarian Q. Untuk memungkinkan ini, buat peran IAM di Anda Akun AWS. Kaitkan kebijakan IAM dengan peran untuk memberikan izin kepada setiap pengguna yang mengasumsikannya. Peran IAM perlu memberikan izin untuk mengambil URL penyematan untuk kumpulan pengguna tertentu. 

Dengan bantuan karakter wildcard * \**, Anda dapat memberikan izin untuk menghasilkan URL untuk semua pengguna di namespace tertentu. Atau Anda dapat memberikan izin untuk menghasilkan URL untuk subset pengguna di ruang nama tertentu. Untuk ini, Anda menambahkan`quicksight:GenerateEmbedUrlForAnonymousUser`.

Anda dapat membuat kondisi dalam kebijakan IAM yang membatasi domain yang dapat dicantumkan pengembang dalam `AllowedDomains` parameter operasi `GenerateEmbedUrlForAnonymousUser` API. `AllowedDomains`Parameter adalah parameter opsional. Ini memberi pengembang opsi untuk mengganti domain statis yang dikonfigurasi di ** menu ** Kelola Amazon Quick Sight dan sebagai gantinya mencantumkan hingga tiga domain atau subdomain yang dapat mengakses URL yang dihasilkan. URL ini kemudian disematkan di situs web pengembang. Hanya domain yang tercantum dalam parameter yang dapat mengakses bilah pencarian Q yang disematkan. Tanpa kondisi ini, pengembang dapat mencantumkan domain apa pun di internet dalam `AllowedDomains` parameter. 

Untuk membatasi domain yang dapat digunakan pengembang dengan parameter ini, tambahkan `AllowedEmbeddingDomains` kondisi ke kebijakan IAM Anda. Untuk informasi selengkapnya tentang `AllowedDomains` parameter, lihat [ GenerateEmbedUrlForAnonymousUser ](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForAnonymousUser.html) di Referensi API * Amazon Quick Sight*.

**Praktik terbaik keamanan untuk operator kondisi IAM**  
Operator kondisi IAM yang tidak dikonfigurasi dengan benar dapat mengizinkan akses tidak sah ke sumber daya Cepat yang disematkan melalui variasi URL. Saat menggunakan kunci `quicksight:AllowedEmbeddingDomains` kondisi dalam kebijakan IAM Anda, gunakan operator kondisi yang mengizinkan domain tertentu atau menolak semua domain yang tidak diizinkan secara khusus. Untuk informasi selengkapnya tentang operator kondisi IAM, lihat Elemen kebijakan [ IAM JSON: Operator kondisi ](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_condition_operators.html) di Panduan Pengguna IAM.  
Banyak variasi URL yang berbeda dapat menunjuk ke sumber daya yang sama. Misalnya, URL berikut semuanya terselesaikan ke konten yang sama:  
`https://example.com`
`https://example.com/`
`https://Example.com`
Jika kebijakan Anda menggunakan operator yang tidak memperhitungkan variasi URL ini, penyerang dapat melewati batasan Anda dengan memberikan variasi URL yang setara.  
Anda harus memvalidasi bahwa kebijakan IAM menggunakan operator kondisi yang sesuai untuk mencegah kerentanan bypass dan memastikan bahwa hanya domain yang dituju yang dapat mengakses sumber daya yang disematkan.

Identitas IAM aplikasi Anda harus memiliki kebijakan kepercayaan yang terkait dengannya untuk mengizinkan akses ke peran yang baru saja Anda buat. Ini berarti bahwa ketika pengguna mengakses aplikasi Anda, aplikasi Anda dapat mengambil peran atas nama pengguna untuk membuka bilah pencarian Q. Contoh berikut menunjukkan contoh kebijakan kepercayaan.

------
#### [ 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"
        }
    ]
}
```

------

Untuk informasi selengkapnya mengenai kebijakan kepercayaan, lihat [ Kredentif keamanan sementara di IAM ](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) di Panduan Pengguna * IAM *

## Langkah 2: Hasilkan URL dengan kode otentikasi terlampir
<a name="embedded-q-bar-for-anonymous-users-step-2"></a>

**catatan**  
Bilah pencarian Amazon Quick Sight Q yang disematkan memberikan pengalaman Tanya Jawab Amazon Quick Sight klasik. Amazon Quick Sight terintegrasi dengan Amazon Q Business untuk meluncurkan pengalaman Tanya Jawab Generatif baru. Pengembang disarankan untuk menggunakan pengalaman Tanya Jawab Generatif yang baru. Untuk informasi selengkapnya tentang pengalaman Tanya Jawab Generatif yang disematkan, lihat Menyematkan [ Amazon Q di pengalaman Tanya Jawab Generatif Amazon Quick Sight. ](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html)

Di bagian berikut, Anda dapat menemukan cara mengotentikasi pengguna Anda dan mendapatkan URL topik Q yang dapat disematkan di server aplikasi Anda.

Saat pengguna mengakses aplikasi Anda, aplikasi akan mengambil peran IAM atas nama pengguna. Kemudian aplikasi menambahkan pengguna ke Amazon Quick Sight, jika pengguna itu belum ada. Selanjutnya, ia meneruskan pengenal sebagai ID sesi peran unik. 

Untuk informasi selengkapnya, lihat [`AnonymousUserQSearchBarEmbeddingConfiguration`](https://docs.aws.amazon.com/quicksight/latest/APIReference/AnonymousUserQSearchBarEmbeddingConfiguration.html).

### Java
<a name="embedded-q-bar-for-anonymous-users-java"></a>

```
        import java.util.List;
        import com.amazonaws.auth.AWSCredentials;
        import com.amazonaws.auth.AWSCredentialsProvider;
        import com.amazonaws.auth.BasicAWSCredentials;
        import com.amazonaws.regions.Regions;
        import com.amazonaws.services.quicksight.AmazonQuickSight;
        import com.amazonaws.services.quicksight.AmazonQuickSightClientBuilder;
        import com.amazonaws.services.quicksight.model.AnonymousUserQSearchBarEmbeddingConfiguration;
        import com.amazonaws.services.quicksight.model.AnonymousUserEmbeddingExperienceConfiguration;
        import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForAnonymousUserRequest;
        import com.amazonaws.services.quicksight.model.GenerateEmbedUrlForAnonymousUserResult;
        import com.amazonaws.services.quicksight.model.SessionTag;


        /**
        * Class to call QuickSight AWS SDK to generate embed url for anonymous user.
        */
        public class GenerateEmbedUrlForAnonymousUserExample {

            private final AmazonQuickSight quickSightClient;

            public GenerateEmbedUrlForAnonymousUserExample() {
                quickSightClient = AmazonQuickSightClientBuilder
                    .standard()
                    .withRegion(Regions.US_EAST_1.getName())
                    .withCredentials(new AWSCredentialsProvider() {
                            @Override
                            public AWSCredentials getCredentials() {
                                // provide actual IAM access key and secret key here
                                return new BasicAWSCredentials("access-key", "secret-key");
                            }

                            @Override
                            public void refresh() {
                            }
                        }
                    )
                    .build();
            }

            public String GenerateEmbedUrlForAnonymousUser(
                final String accountId, // YOUR AWS ACCOUNT ID
                final String initialTopicId, // Q TOPIC ID TO WHICH THE CONSTRUCTED URL POINTS AND SEARCHBAR PREPOPULATES INITIALLY
                final String namespace, // ANONYMOUS EMBEDDING REQUIRES SPECIFYING A VALID NAMESPACE FOR WHICH YOU WANT THE EMBEDDING URL
                final List<String> authorizedResourceArns, // Q SEARCHBAR TOPIC ARN LIST TO EMBED
                final List<String> allowedDomains, // RUNTIME ALLOWED DOMAINS FOR EMBEDDING
                final List<SessionTag> sessionTags // SESSION TAGS USED FOR ROW-LEVEL SECURITY
            ) throws Exception {
                AnonymousUserEmbeddingExperienceConfiguration experienceConfiguration = new AnonymousUserEmbeddingExperienceConfiguration();
                AnonymousUserQSearchBarEmbeddingConfiguration qSearchBarConfiguration = new AnonymousUserQSearchBarEmbeddingConfiguration();
                qSearchBarConfiguration.setInitialTopicId(initialTopicId);
                experienceConfiguration.setQSearchBar(qSearchBarConfiguration);

                GenerateEmbedUrlForAnonymousUserRequest generateEmbedUrlForAnonymousUserRequest = new GenerateEmbedUrlForAnonymousUserRequest()
                    .withAwsAccountId(accountId)
                    .withNamespace(namespace)
                    .withAuthorizedResourceArns(authorizedResourceArns)
                    .withExperienceConfiguration(experienceConfiguration)
                    .withSessionTags(sessionTags)
                    .withSessionLifetimeInMinutes(600L); // OPTIONAL: VALUE CAN BE [15-600]. DEFAULT: 600
                    .withAllowedDomains(allowedDomains);

                GenerateEmbedUrlForAnonymousUserResult qSearchBarEmbedUrl = quickSightClient.generateEmbedUrlForAnonymousUser(generateEmbedUrlForAnonymousUserRequest);

                return qSearchBarEmbedUrl.getEmbedUrl();
            }

        }
```

### JavaScript
<a name="embedded-q-bar-for-anonymous-users-js"></a>

```
global.fetch = require('node-fetch');
const AWS = require('aws-sdk');

function generateEmbedUrlForAnonymousUser(
    accountId, // YOUR AWS ACCOUNT ID
    initialTopicId, // Q TOPIC ID TO WHICH THE CONSTRUCTED URL POINTS
    quicksightNamespace, // VALID NAMESPACE WHERE YOU WANT TO DO NOAUTH EMBEDDING
    authorizedResourceArns, // Q SEARCHBAR TOPIC ARN LIST TO EMBED
    allowedDomains, // RUNTIME ALLOWED DOMAINS FOR EMBEDDING
    sessionTags, // SESSION TAGS USED FOR ROW-LEVEL SECURITY
    generateEmbedUrlForAnonymousUserCallback, // SUCCESS CALLBACK METHOD
    errorCallback // ERROR CALLBACK METHOD
    ) {
    const experienceConfiguration = {
        "QSearchBar": {
            "InitialTopicId": initialTopicId // TOPIC ID CAN BE FOUND IN THE URL ON THE TOPIC AUTHOR PAGE
        }
    };
    
    const generateEmbedUrlForAnonymousUserParams = {
        "AwsAccountId": accountId,
        "Namespace": quicksightNamespace,
        "AuthorizedResourceArns": authorizedResourceArns,
        "AllowedDomains": allowedDomains,
        "ExperienceConfiguration": experienceConfiguration,
        "SessionTags": sessionTags,
        "SessionLifetimeInMinutes": 600
    };

    const quicksightClient = new AWS.QuickSight({
        region: process.env.AWS_REGION,
        credentials: {
            accessKeyId: AccessKeyId,
            secretAccessKey: SecretAccessKey,
            sessionToken: SessionToken,
            expiration: Expiration
        }
    });

    quicksightClient.generateEmbedUrlForAnonymousUser(generateEmbedUrlForAnonymousUserParams, function(err, data) {
        if (err) {
            console.log(err, err.stack);
            errorCallback(err);
        } else {
            const result = {
                "statusCode": 200,
                "headers": {
                    "Access-Control-Allow-Origin": "*", // USE YOUR WEBSITE DOMAIN TO SECURE ACCESS TO THIS API
                    "Access-Control-Allow-Headers": "Content-Type"
                },
                "body": JSON.stringify(data),
                "isBase64Encoded": false
            }
            generateEmbedUrlForAnonymousUserCallback(result);
        }
    });
}
```

### Python3
<a name="embedded-q-bar-for-anonymous-users-py"></a>

```
import json
import boto3
from botocore.exceptions import ClientError
import time

# Create QuickSight and STS clients
quicksightClient = boto3.client('quicksight',region_name='us-west-2')
sts = boto3.client('sts')

# Function to generate embedded URL for anonymous user
# accountId: YOUR AWS ACCOUNT ID
# quicksightNamespace: VALID NAMESPACE WHERE YOU WANT TO DO NOAUTH EMBEDDING
# authorizedResourceArns: TOPIC ARN LIST TO EMBED
# allowedDomains: RUNTIME ALLOWED DOMAINS FOR EMBEDDING
# experienceConfiguration: configuration which specifies the TOPIC ID to point URL to
# sessionTags: SESSION TAGS USED FOR ROW-LEVEL SECURITY
def generateEmbedUrlForAnonymousUser(accountId, quicksightNamespace, authorizedResourceArns, allowedDomains, experienceConfiguration, sessionTags):
    try:
        response = quicksightClient.generate_embed_url_for_anonymous_user(
            AwsAccountId = accountId,
            Namespace = quicksightNamespace,
            AuthorizedResourceArns = authorizedResourceArns,
            AllowedDomains = allowedDomains,
            ExperienceConfiguration = experienceConfiguration,
            SessionTags = sessionTags,
            SessionLifetimeInMinutes = 600
        )
            
        return {
            'statusCode': 200,
            'headers': {"Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Content-Type"},
            'body': json.dumps(response),
            'isBase64Encoded':  bool('false')
        }
    except ClientError as e:
        print(e)
        return "Error generating embeddedURL: " + str(e)
```

### Node.js
<a name="embedded-q-bar-for-anonymous-users-nodejs"></a>

Contoh berikut menunjukkan JavaScript (Node.js) yang dapat Anda gunakan di server aplikasi untuk menghasilkan URL untuk dasbor yang disematkan. Anda dapat menggunakan URL ini di situs web atau aplikasi Anda untuk menampilkan dasbor. 

**Example**  

```
const AWS = require('aws-sdk');
const https = require('https');

var quicksightClient = new AWS.Service({
    apiConfig: require('./quicksight-2018-04-01.min.json'),
    region: 'us-east-1',
});

quicksightClient.generateEmbedUrlForAnonymousUser({
    'AwsAccountId': '111122223333',
    'Namespace': 'DEFAULT'
    'AuthorizedResourceArns': '["topic-arn-topicId1","topic-arn-topicId2"]',
    'AllowedDomains': allowedDomains,
    'ExperienceConfiguration': { 
        'QSearchBar': {
            'InitialTopicId': 'U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f'
        }
    },
    'SessionTags': '["Key": tag-key-1,"Value": tag-value-1,{"Key": tag-key-1,"Value": tag-value-1}]',
    'SessionLifetimeInMinutes': 15
}, function(err, data) {
    console.log('Errors: ');
    console.log(err);
    console.log('Response: ');
    console.log(data);
});
```

**Example**  

```
//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/C\#
<a name="embedded-q-bar-for-anonymous-users-cs"></a>

Contoh berikut menunjukkan. NET/C\# kode yang dapat Anda gunakan di server aplikasi untuk menghasilkan URL untuk bilah pencarian Q yang disematkan. Anda dapat menggunakan URL ini di situs web atau aplikasi Anda untuk menampilkan bilah pencarian Q. 

**Example**  

```
using System;
using Amazon.QuickSight;
using Amazon.QuickSight.Model;

namespace GenerateQSearchBarEmbedUrlForAnonymousUser
{
    class Program
    {
        static void Main(string[] args)
        {
            var quicksightClient = new AmazonQuickSightClient(
                AccessKey,
                SecretAccessKey,
                SessionToken,
                Amazon.RegionEndpoint.USEast1);
            try
            {
                AnonymousUserQSearchBarEmbeddingConfiguration anonymousUserQSearchBarEmbeddingConfiguration
                    = new AnonymousUserQSearchBarEmbeddingConfiguration
                    {
                        InitialTopicId = "U4zJMVZ2n2stZflc8Ou3iKySEb3BEV6f"
                    };
                AnonymousUserEmbeddingExperienceConfiguration anonymousUserEmbeddingExperienceConfiguration
                    = new AnonymousUserEmbeddingExperienceConfiguration
                    {
                        QSearchBar = anonymousUserQSearchBarEmbeddingConfiguration
                    }; 
                
                Console.WriteLine(
                    quicksightClient.GenerateEmbedUrlForAnonymousUserAsync(new GenerateEmbedUrlForAnonymousUserRequest
                    {
                        AwsAccountId = "111122223333",
                        Namespace = "DEFAULT",
                        AuthorizedResourceArns '["topic-arn-topicId1","topic-arn-topicId2"]',
                        AllowedDomains = allowedDomains,
                        ExperienceConfiguration = anonymousUserEmbeddingExperienceConfiguration,
                        SessionTags = '["Key": tag-key-1,"Value": tag-value-1,{"Key": tag-key-1,"Value": tag-value-1}]',
                        SessionLifetimeInMinutes = 15,
                    }).Result.EmbedUrl
                );
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
        }
    }
}
```

### AWS CLI
<a name="embedded-q-bar-for-anonymous-users-cli"></a>

Untuk mengambil peran, pilih salah satu operasi API AWS Security Token Service (AWS STS) berikut ini:
+ [AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)Gunakan operasi ini saat Anda menggunakan identitas IAM untuk mengambil peran.
+ [AssumeRoleWithWebIdentity](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithWebIdentity.html)Gunakan operasi ini saat Anda menggunakan penyedia identitas web untuk mengotentikasi pengguna Anda. 
+ [AssumeRoleWithSaml](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html)— Gunakan operasi ini saat Anda menggunakan SAML untuk mengotentikasi pengguna Anda.

Contoh berikut menunjukkan perintah CLI untuk mengatur peran IAM. Peran harus memiliki izin yang diaktifkan`quicksight:GenerateEmbedUrlForAnonymousUser`.

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

`assume-role`Operasi mengembalikan tiga parameter output: kunci akses, kunci rahasia, dan token sesi. 

**catatan**  
Jika Anda mendapatkan `ExpiredToken` kesalahan saat memanggil `AssumeRole` operasi, ini mungkin karena yang sebelumnya `SESSION TOKEN` masih dalam variabel lingkungan. Hapus ini dengan mengatur variabel berikut:  
*AWS\_ACCESS\_KEY\_ID* 
*AWS\_SECRET\_ACCESS\_KEY* 
*AWS\_SESSION\_TOKEN* 

Contoh berikut menunjukkan cara mengatur ketiga parameter ini di CLI. Untuk mesin Microsoft Windows, gunakan alih- `set` alih`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}}"
```

Menjalankan perintah ini menetapkan ID sesi peran pengguna yang mengunjungi situs web Anda`embedding_quicksight_q_search_bar_role/QuickSightEmbeddingAnonymousPolicy`. ID sesi peran terdiri dari nama peran dari `role-arn` dan nil `role-session-name` ainya. Menggunakan ID sesi peran unik untuk setiap pengguna memastikan bahwa izin yang sesuai ditetapkan untuk setiap pengguna. Ini juga mencegah pembatasan akses pengguna. *Throttling * adalah fitur keamanan yang mencegah pengguna yang sama mengakses Amazon Quick Sight dari beberapa lokasi. Selain itu, setiap sesi tetap terpisah dan berbeda. Jika Anda menggunakan array server web, misalnya untuk penyeimbangan beban, dan sesi terhubung kembali ke server yang berbeda, sesi baru dimulai.

Untuk mendapatkan URL yang ditandatangani untuk dasbor, hubungi `generate-embed-url-for-anynymous-user` dari server aplikasi. Ini mengembalikan URL dasbor yang dapat disematkan. Contoh berikut menunjukkan cara membuat URL untuk dasbor tertanam menggunakan panggilan sisi server untuk pengguna yang melakukan kunjungan anonim ke portal web atau aplikasi Anda.

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

Untuk informasi lebih lanjut tentang penggunaan operasi ini, lihat [GenerateEmbedUrlForRegisteredUser](https://docs.aws.amazon.com/quicksight/latest/APIReference/API_GenerateEmbedUrlForRegisteredUser.html). Anda dapat menggunakan ini dan operasi API lainnya dalam kode Anda sendiri.

## Langkah 3: Sematkan URL bilah pencarian Q
<a name="embedded-q-bar-for-anonymous-users-step-3"></a>

**catatan**  
Bilah pencarian Amazon Quick Sight Q yang disematkan memberikan pengalaman Tanya Jawab Amazon Quick Sight klasik. Amazon Quick Sight terintegrasi dengan Amazon Q Business untuk meluncurkan pengalaman Tanya Jawab Generatif baru. Pengembang disarankan untuk menggunakan pengalaman Tanya Jawab Generatif yang baru. Untuk informasi selengkapnya tentang pengalaman Tanya Jawab Generatif yang disematkan, lihat Menyematkan [ Amazon Q di pengalaman Tanya Jawab Generatif Amazon Quick Sight. ](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html)

Di bagian berikut, Anda dapat menemukan cara menyematkan URL bilah pencarian Q dari langkah 3 di situs web atau halaman aplikasi Anda. Anda melakukan ini dengan [ Amazon Quick Sight embedding SDK ](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) (JavaScript). Dengan SDK, Anda dapat melakukan hal berikut: 
+ Tempatkan bilah pencarian Q pada halaman HTML.
+ Masukkan parameter ke bilah pencarian Q.
+ Tangani status kesalahan dengan pesan yang disesuaikan dengan aplikasi Anda.

Untuk membuat URL yang dapat disematkan di aplikasi, panggil operasi `GenerateEmbedUrlForAnonymousUser` API. URL ini berlaku selama 5 menit, dan sesi yang dihasilkan berlaku hingga 10 jam. Operasi API menyediakan URL dengan `auth_code` nilai yang memungkinkan sesi tanda tangan tunggal. 

Berikut ini menunjukkan contoh respons dari`generate-embed-url-for-anonymous-user`.

```
//The URL returned is over 900 characters. For this example, we've shortened the string for
//readability and added ellipsis to indicate that it's incomplete.
{
     "Status": "200",
     "EmbedUrl": "https://{{quicksightdomain}}/embedding/12345/q/search...",
     "RequestId": "7bee030e-f191-45c4-97fe-d9faf0e03713"
}
```

Sematkan bilah pencarian Q di halaman web Anda dengan menggunakan SDK [ penyematan Amazon Quick Sight ](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk) atau dengan menambahkan URL ini ke dalam iframe. Jika Anda menetapkan angka tinggi dan lebar tetap (dalam piksel), Amazon Quick Sight menggunakannya dan tidak mengubah visual Anda saat jendela Anda berubah ukuran. Jika Anda menetapkan tinggi dan lebar persen relatif, Amazon Quick Sight menyediakan tata letak responsif yang dimodifikasi saat ukuran jendela Anda berubah. 

Untuk melakukan ini, pastikan bahwa domain untuk meng-host bilah pencarian Q yang disematkan ada di daftar * izinkan*, daftar domain yang disetujui untuk langganan Amazon Quick Sight Anda. Persyaratan ini melindungi data Anda dengan menjaga domain yang tidak disetujui dari hosting bilah pencarian Q yang disematkan. Untuk informasi selengkapnya tentang menambahkan domain untuk bilah pencarian Q yang disematkan, lihat M [ engelola domain dan penyematan. ](https://docs.aws.amazon.com/quicksight/latest/user/manage-qs-domains-and-embedding.html)

Saat Anda menggunakan Amazon Quick Sight Embedding SDK, bilah pencarian Q di halaman Anda diubah ukurannya secara dinamis berdasarkan status. Dengan menggunakan Amazon Quick Sight Embedding SDK, Anda juga dapat mengontrol parameter dalam bilah pencarian Q dan menerima panggilan balik dalam hal penyelesaian pemuatan halaman dan kesalahan. 

Contoh berikut menunjukkan cara menggunakan URL yang dihasilkan. Kode ini dibuat di server aplikasi Anda.

### SDK 2.0
<a name="embedded-q-bar-for-anonymous-users-sdkv2"></a>

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

### SDK 1.0
<a name="embedded-q-bar-for-anonymous-users-sdkv1"></a>

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

Agar contoh ini berfungsi, pastikan untuk menggunakan Amazon Quick Sight Embedding SDK untuk memuat bilah pencarian Q yang disematkan di situs web Anda menggunakan JavaScript. Untuk mendapatkan salinan Anda, lakukan salah satu hal berikut:
+ Unduh SDK [ penyematan Amazon Quick Sight ](https://github.com/awslabs/amazon-quicksight-embedding-sdk#step-3-create-the-quicksight-session-object) dari GitHub. Repositori ini dikelola oleh sekelompok pengembang Amazon Quick Sight.
+ Unduh versi SDK penyematan terbaru dari [ https://www.npmjs.com/package/amazon-quicksight-embedding-sdk](https://www.npmjs.com/package/amazon-quicksight-embedding-sdk).
+ Jika Anda menggunakan `npm` untuk JavaScript dependensi, unduh dan instal dengan menjalankan perintah berikut.

  ```
  npm install amazon-quicksight-embedding-sdk
  ```

## Fungsi penyematan bilah pencarian Amazon Quick Sight Q opsional
<a name="embedded-q-bar-for-anonymous-users-step-4"></a>

**catatan**  
Bilah pencarian Amazon Quick Sight Q yang disematkan memberikan pengalaman Tanya Jawab Amazon Quick Sight klasik. Amazon Quick Sight terintegrasi dengan Amazon Q Business untuk meluncurkan pengalaman Tanya Jawab Generatif baru. Pengembang disarankan untuk menggunakan pengalaman Tanya Jawab Generatif yang baru. Untuk informasi selengkapnya tentang pengalaman Tanya Jawab Generatif yang disematkan, lihat Menyematkan [ Amazon Q di pengalaman Tanya Jawab Generatif Amazon Quick Sight. ](https://docs.aws.amazon.com/quicksight/latest/user/embedding-gen-bi.html)

Fungsi opsional berikut tersedia untuk bilah pencarian Q tertanam menggunakan SDK penyematan. 

### Memanggil tindakan bilah pencarian Q
<a name="w2aac34c31c21c43c31c17c21b7"></a>

Opsi berikut hanya didukung untuk penyematan bilah pencarian Q. 
+ Atur pertanyaan bilah pencarian Q - Fitur ini mengirimkan pertanyaan ke bilah pencarian Q dan segera menanyakan pertanyaan tersebut. Ini juga secara otomatis membuka Q popover.

  ```
  qBar.setQBarQuestion('{{show me monthly revenue}}');
  ```
+ Tutup Q popover — Fitur ini menutup popover Q dan mengembalikan iframe ke ukuran bilah pencarian Q asli.

  ```
  qBar.closeQPopover();
  ```

Untuk informasi selengkapnya, lihat SDK [https://github.com/awslabs/amazon-quicksight-embedding-sdk](https://github.com/awslabs/amazon-quicksight-embedding-sdk) penyematan Amazon Quick Sight.