

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

# Membuat Indeks
<a name="create-index"></a>

Anda dapat membuat indeks menggunakan konsol, atau dengan memanggil [CreateIndex](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateIndex.html)API. Anda dapat menggunakan AWS Command Line Interface (AWS CLI) atau SDK dengan API. Setelah Anda membuat indeks Anda, Anda dapat menambahkan dokumen langsung ke sana atau dari sumber data.

Untuk membuat indeks, Anda harus memberikan Amazon Resource Name (ARN) peran AWS Identity and Access Management (IAM) agar indeks dapat diakses. CloudWatch Untuk informasi selengkapnya, lihat [IAM peran untuk indeks](https://docs.aws.amazon.com/kendra/latest/dg/iam-roles.html#iam-roles-index).

Tab berikut menyediakan prosedur untuk membuat indeks dengan menggunakan Konsol Manajemen AWS, dan contoh kode untuk menggunakan AWS CLI, dan Python dan Java. SDKs

------
#### [ Console ]

**Untuk membuat indeks**

1. Masuk ke Konsol AWS Manajemen dan buka Amazon Kendra konsol di [https://console.aws.amazon.com/kendra/](https://console.aws.amazon.com/kendra/).

1. Pilih **Buat indeks** di bagian **Indeks**.

1. Pada **Tentukan detail indeks**, beri indeks Anda nama dan deskripsi.

1. Dalam **IAM peran** memberikan IAM peran. Untuk menemukan peran, pilih dari peran di akun Anda yang berisi kata “kendra” atau masukkan nama peran lain. Untuk informasi selengkapnya tentang izin yang diperlukan peran, lihat [IAM peran untuk indeks](https://docs.aws.amazon.com/kendra/latest/dg/iam-roles.html#iam-roles-index).

1. Pilih **Berikutnya**.

1. Di halaman **Konfigurasikan kontrol akses pengguna**, pilih **Selanjutnya**. Anda dapat memperbarui indeks untuk menggunakan token untuk kontrol akses setelah membuat indeks. Untuk informasi selengkapnya, lihat [Mengontrol akses ke dokumen](https://docs.aws.amazon.com/kendra/latest/dg/create-index-access-control.html).

1. **Pada halaman **Detail penyediaan**, pilih Buat.**

1. Mungkin perlu beberapa waktu untuk membuat indeks. Periksa daftar indeks untuk melihat kemajuan pembuatan indeks Anda. Ketika status indeks `ACTIVE`, indeks Anda siap digunakan.

------
#### [ AWS CLI ]

**Untuk membuat indeks**

1. Gunakan perintah berikut ini untuk membuat indeks. `role-arn`Harus berupa Nama Sumber Daya Amazon (ARN) dari IAM peran yang dapat menjalankan Amazon Kendra tindakan. Untuk informasi selengkapnya, lihat [IAM peran](https://docs.aws.amazon.com/kendra/latest/dg/iam-roles.html).

   Perintah ini diformat untuk Linux dan macOS. Jika menggunakan Windows, ganti karakter kelanjutan baris Unix (\$1) dengan caret (^).

   ```
   aws kendra create-index \
    --name index name \
    --description "index description" \
    --role-arn arn:aws:iam::account ID:role/role name
   ```

1. Mungkin perlu beberapa waktu untuk membuat indeks. Untuk memeriksa status indeks Anda, gunakan ID indeks yang dikembalikan `create-index` dengan perintah berikut. Ketika status indeks `ACTIVE`, indeks Anda siap digunakan.

   ```
   aws kendra describe-index \
    --index-id index ID
   ```

------
#### [ Python ]

**Untuk membuat indeks**
+ Berikan nilai untuk variabel berikut dalam contoh kode berikut:
  + `description`—Deskripsi indeks yang Anda buat. Ini opsional.
  + `index_name`—Nama indeks yang Anda buat.
  + `role_arn`—Nama Sumber Daya Amazon (ARN) dari peran yang dapat dijalankan. Amazon Kendra APIs Untuk informasi selengkapnya, lihat [IAM peran](https://docs.aws.amazon.com/kendra/latest/dg/iam-roles.html).

  ```
  import boto3
  from botocore.exceptions import ClientError
  import pprint
  import time
  
  kendra = boto3.client("kendra")
  
  print("Create an index.")
  
  # Provide a name for the index
  index_name = "index-name"
  # Provide an optional description for the index
  description = "index description"
  # Provide the IAM role ARN required for indexes
  role_arn = "arn:aws:iam::${account id}:role/${role name}"
  
  try:
      index_response = kendra.create_index(
          Name = index_name,
          Description = description,
          RoleArn = role_arn
      )
  
      pprint.pprint(index_response)
  
      index_id = index_response["Id"]
  
      print("Wait for Amazon Kendra to create the index.")
  
      while True:
          # Get the details of the index, such as the status
          index_description = kendra.describe_index(
              Id = index_id
          )
          # If status is not CREATING, then quit
          status = index_description["Status"]
          print(" Creating index. Status: "+status)
          if status != "CREATING":
              break
          time.sleep(60)
  
  except  ClientError as e:
          print("%s" % e)
  
  print("Program ends.")
  ```

------
#### [ Java ]

**Untuk membuat indeks**
+ Berikan nilai untuk variabel berikut dalam contoh kode berikut:
  + `description`—Deskripsi indeks yang Anda buat. Ini opsional.
  + `index_name`—Nama indeks yang Anda buat.
  + `role_arn`—Nama Sumber Daya Amazon (ARN) dari peran yang dapat dijalankan. Amazon Kendra APIs Untuk informasi selengkapnya, lihat [IAM peran](https://docs.aws.amazon.com/kendra/latest/dg/iam-roles.html).

  ```
  package com.amazonaws.kendra;
  
  import java.util.concurrent.TimeUnit;
  import software.amazon.awssdk.services.kendra.KendraClient;
  import software.amazon.awssdk.services.kendra.model.CreateIndexRequest;
  import software.amazon.awssdk.services.kendra.model.CreateIndexResponse;
  import software.amazon.awssdk.services.kendra.model.DescribeIndexRequest;
  import software.amazon.awssdk.services.kendra.model.DescribeIndexResponse;
  import software.amazon.awssdk.services.kendra.model.IndexStatus;
  
  
  public class CreateIndexExample {
  
      public static void main(String[] args) throws InterruptedException {
  
          String indexDescription = "Getting started index for Kendra";
          String indexName = "java-getting-started-index";
          String indexRoleArn = "arn:aws:iam::<your AWS account ID>:role/KendraRoleForGettingStartedIndex";
  
          System.out.println(String.format("Creating an index named %s", indexName));
          CreateIndexRequest createIndexRequest = CreateIndexRequest
              .builder()
              .description(indexDescription)
              .name(indexName)
              .roleArn(indexRoleArn)
              .build();
          KendraClient kendra = KendraClient.builder().build();
          CreateIndexResponse createIndexResponse = kendra.createIndex(createIndexRequest);
          System.out.println(String.format("Index response %s", createIndexResponse));
  
          String indexId = createIndexResponse.id();
  
          System.out.println(String.format("Waiting until the index with ID %s is created.", indexId));
          while (true) {
              DescribeIndexRequest describeIndexRequest = DescribeIndexRequest.builder().id(indexId).build();
              DescribeIndexResponse describeIndexResponse = kendra.describeIndex(describeIndexRequest);
              IndexStatus status = describeIndexResponse.status();
              if (status != IndexStatus.CREATING) {
                  break;
              }
  
              TimeUnit.SECONDS.sleep(60);
          }
  
          System.out.println("Index creation is complete.");
      }
  }
  ```

------

Setelah Anda membuat indeks Anda, Anda menambahkan dokumen ke dalamnya. Anda dapat menambahkannya secara langsung atau membuat sumber data yang memperbarui indeks Anda pada jadwal reguler.

**Topics**
+ [Menambahkan dokumen langsung ke indeks dengan batch upload](in-adding-documents.md)
+ [Menambahkan pertanyaan yang sering diajukan (FAQs) ke indeks](in-creating-faq.md)
+ [Membuat bidang dokumen kustom](custom-attributes.md)
+ [Mengontrol akses pengguna ke dokumen dengan token](create-index-access-control.md)

# Menambahkan dokumen langsung ke indeks dengan batch upload
<a name="in-adding-documents"></a>

Anda dapat menambahkan dokumen langsung ke indeks menggunakan [BatchPutDocument](https://docs.aws.amazon.com/kendra/latest/APIReference/API_BatchPutDocument.html)API. Anda tidak dapat menambahkan dokumen secara langsung menggunakan konsol tersebut. Jika Anda menggunakan konsol, Anda terhubung ke sumber data untuk menambahkan dokumen ke indeks Anda. Dokumen dapat ditambahkan dari bucket S3 atau disediakan sebagai data biner. Untuk daftar jenis dokumen yang didukung oleh Amazon Kendra lihat [Jenis dokumen](https://docs.aws.amazon.com/kendra/latest/dg/index-document-types.html).

Menambahkan dokumen ke indeks menggunakan `BatchPutDocument` adalah operasi asinkron. Setelah Anda memanggil `BatchPutDocument` API, Anda menggunakan [BatchGetDocumentStatus](https://docs.aws.amazon.com/kendra/latest/APIReference/API_BatchGetDocumentStatus)API untuk memantau kemajuan pengindeksan dokumen Anda. Ketika Anda memanggil `BatchGetDocumentStatus` API dengan daftar dokumen IDs, ia mengembalikan status dokumen. Ketika status dokumen menjadi `INDEXED` atau `FAILED`, pemrosesan dokumen selesai. Ketika statusnya`FAILED`, `BatchGetDocumentStatus` API mengembalikan alasan bahwa dokumen tidak dapat diindeks.

[Jika Anda ingin mengubah bidang atau atribut metadata konten dan dokumen selama proses penyerapan dokumen, lihat Pengayaan Dokumen Kustom.Amazon Kendra](https://docs.aws.amazon.com/kendra/latest/dg/custom-document-enrichment.html) Jika Anda ingin menggunakan sumber data kustom, setiap dokumen yang Anda kirimkan menggunakan `BatchPutDocument` API memerlukan ID sumber data dan ID eksekusi sebagai atribut atau bidang. Untuk informasi selengkapnya, lihat [Atribut yang diperlukan untuk sumber data kustom](https://docs.aws.amazon.com/kendra/latest/dg/data-source-custom.html#custom-required-attributes).

**catatan**  
Setiap ID dokumen harus unik per indeks. Anda tidak dapat membuat sumber data untuk mengindeks dokumen Anda dengan IDs keunikannya dan kemudian menggunakan `BatchPutDocument` API untuk mengindeks dokumen yang sama, atau sebaliknya. Anda dapat menghapus sumber data dan kemudian menggunakan `BatchPutDocument` API untuk mengindeks dokumen yang sama, atau sebaliknya. Menggunakan `BatchPutDocument` dan `BatchDeleteDocument` APIs dalam kombinasi dengan konektor sumber Amazon Kendra data untuk kumpulan dokumen yang sama dapat menyebabkan ketidakkonsistenan dengan data Anda. Sebagai gantinya, sebaiknya gunakan [konektor sumber data Amazon Kendra khusus](https://docs.aws.amazon.com/kendra/latest/dg/data-source-custom.html).

Dokumen panduan pengembang berikut menunjukkan cara menambahkan dokumen langsung ke indeks.

**Topics**
+ [Menambahkan dokumen dengan BatchPutDocument API](#in-adding-binary-doc)
+ [Menambahkan dokumen dari bucket S3](#in-adding-plain-text)

## Menambahkan dokumen dengan BatchPutDocument API
<a name="in-adding-binary-doc"></a>

Contoh berikut menambahkan gumpalan teks ke indeks dengan memanggil [BatchPutDocument](https://docs.aws.amazon.com/kendra/latest/APIReference/API_BatchPutDocument). Anda dapat menggunakan `BatchPutDocument` API untuk menambahkan dokumen langsung ke indeks Anda. Untuk daftar jenis dokumen yang didukung oleh Amazon Kendra lihat [Jenis dokumen](https://docs.aws.amazon.com/kendra/latest/dg/index-document-types.html).

Untuk contoh membuat indeks menggunakan AWS CLI dan SDKs, lihat [Membuat indeks](https://docs.aws.amazon.com/kendra/latest/dg/create-index.html). Untuk mengatur CLI dan SDKs, lihat [Menyiapkan](https://docs.aws.amazon.com/kendra/latest/dg/setup.html). Amazon Kendra

**catatan**  
File yang ditambahkan ke indeks harus dalam pengaliran byte yang dikodekan dengan UTF-8.

Dalam contoh berikut, teks yang dikodekan UTF-8 ditambahkan ke indeks.

------
#### [ CLI ]

Dalam AWS Command Line Interface, gunakan perintah berikut. Perintah ini diformat untuk Linux dan macOS. Jika menggunakan Windows, ganti karakter kelanjutan baris Unix (\$1) dengan caret (^).

```
aws kendra batch-put-document \
   --index-id index-id \
   --documents '{"Id":"doc-id-1", "Blob":"Amazon.com is an online retailer.", "ContentType":"PLAIN_TEXT", "Title":"Information about Amazon.com"}'
```

------
#### [ Python ]

```
import boto3

kendra = boto3.client("kendra")

# Provide the index ID
index_id = "index-id"

# Provide the title and text
title = "Information about Amazon.com"
text = "Amazon.com is an online retailer."

document = {
    "Id": "1",
    "Blob": text,
    "ContentType": "PLAIN_TEXT",
    "Title": title
}

documents = [
    document
]

result = kendra.batch_put_document(
    IndexId = index_id,
    Documents = documents
)

print(result)
```

------
#### [ Java ]

```
package com.amazonaws.kendra;


import software.amazon.awssdk.core.SdkBytes;
import software.amazon.awssdk.services.kendra.KendraClient;
import software.amazon.awssdk.services.kendra.model.BatchPutDocumentRequest;
import software.amazon.awssdk.services.kendra.model.BatchPutDocumentResponse;
import software.amazon.awssdk.services.kendra.model.ContentType;
import software.amazon.awssdk.services.kendra.model.Document;

public class AddDocumentsViaAPIExample {
    public static void main(String[] args) {
        KendraClient kendra = KendraClient.builder().build();

        String indexId = "yourIndexId";

        Document testDoc = Document
            .builder()
            .title("The title of your document")
            .id("a_doc_id")
            .blob(SdkBytes.fromUtf8String("your text content"))
            .contentType(ContentType.PLAIN_TEXT)
            .build();

        BatchPutDocumentRequest batchPutDocumentRequest = BatchPutDocumentRequest
            .builder()
            .indexId(indexId)
            .documents(testDoc)
            .build();

        BatchPutDocumentResponse result = kendra.batchPutDocument(batchPutDocumentRequest);

        System.out.println(String.format("BatchPutDocument Result: %s", result));
    }
}
```

------

## Menambahkan dokumen dari bucket S3
<a name="in-adding-plain-text"></a>

Anda dapat menambahkan dokumen langsung ke indeks Anda dari Amazon S3 bucket menggunakan [BatchPutDocument](https://docs.aws.amazon.com/kendra/latest/APIReference/API_BatchPutDocument)API. Anda dapat menambahkan hingga 10 dokumen dalam panggilan yang sama. Saat menggunakan bucket S3, Anda harus memberikan IAM peran dengan izin untuk mengakses bucket yang berisi dokumen Anda. Anda menentukan peran dalam parameter `RoleArn`.

Menggunakan [BatchPutDocument](https://docs.aws.amazon.com/kendra/latest/APIReference/API_BatchPutDocument)API untuk menambahkan dokumen dari Amazon S3 bucket adalah operasi satu kali. Agar indeks tetap disinkronkan dengan isi bucket, buat sumber Amazon S3 data. Untuk informasi selengkapnya, lihat [sumber Amazon S3 data](https://docs.aws.amazon.com/kendra/latest/dg/data-source-s3.html).

Untuk contoh membuat indeks menggunakan AWS CLI dan SDKs, lihat [Membuat indeks](https://docs.aws.amazon.com/kendra/latest/dg/create-index.html). Untuk mengatur CLI dan SDKs, lihat [Menyiapkan](https://docs.aws.amazon.com/kendra/latest/dg/setup.html). Amazon Kendra Untuk informasi tentang membuat bucket S3, lihat [Amazon Simple Storage Service dokumentasi](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html).

Dalam contoh berikut, dua dokumen Microsoft Word ditambahkan ke indeks menggunakan `BatchPutDocument` API.

------
#### [ Python ]

```
import boto3

kendra = boto3.client("kendra")

# Provide the index ID
index_id = "index-id"
# Provide the IAM role ARN required to index documents in an S3 bucket
role_arn = "arn:aws:iam::${acccountID}:policy/${roleName}"

doc1_s3_file_data = {
    "Bucket": "bucket-name",
    "Key": "document1.docx"
}

doc1_document = {
    "S3Path": doc1_s3_file_data,
    "Title": "Document 1 title",
    "Id": "doc_1"
}

doc2_s3_file_data = {
    "Bucket": "bucket-name",
    "Key": "document2.docx"
}

doc2_document = {
    "S3Path": doc2_s3_file_data,
    "Title": "Document 2 title",
    "Id": "doc_2"
}

documents = [
    doc1_document,
    doc2_document
]

result = kendra.batch_put_document(
    Documents = documents,
    IndexId = index_id,
    RoleArn = role_arn
)

print(result)
```

------
#### [ Java ]

```
package com.amazonaws.kendra;

import software.amazon.awssdk.services.kendra.KendraClient;
import software.amazon.awssdk.services.kendra.model.BatchPutDocumentRequest;
import software.amazon.awssdk.services.kendra.model.BatchPutDocumentResponse;
import software.amazon.awssdk.services.kendra.model.Document;
import software.amazon.awssdk.services.kendra.model.S3Path;

public class AddFilesFromS3Example {
    public static void main(String[] args) {
        KendraClient kendra = KendraClient.builder().build();

        String indexId = "yourIndexId";
        String roleArn = "yourIndexRoleArn";

        Document pollyDoc = Document
            .builder()
            .s3Path(
                S3Path.builder()
                .bucket("amzn-s3-demo-bucket")
                .key("What is Amazon Polly.docx")
                .build())
            .title("What is Amazon Polly")
            .id("polly_doc_1")
            .build();

        Document rekognitionDoc = Document
            .builder()
            .s3Path(
                S3Path.builder()
                .bucket("amzn-s3-demo-bucket")
                .key("What is Amazon Rekognition.docx")
                .build())
            .title("What is Amazon rekognition")
            .id("rekognition_doc_1")
            .build();

        BatchPutDocumentRequest batchPutDocumentRequest = BatchPutDocumentRequest
            .builder()
            .indexId(indexId)
            .roleArn(roleArn)
            .documents(pollyDoc, rekognitionDoc)
            .build();

        BatchPutDocumentResponse result = kendra.batchPutDocument(batchPutDocumentRequest);

        System.out.println(String.format("BatchPutDocument result: %s", result));
    }
}
```

------

# Menambahkan pertanyaan yang sering diajukan (FAQs) ke indeks
<a name="in-creating-faq"></a>

**catatan**  
Dukungan fitur bervariasi menurut jenis indeks dan API pencarian yang digunakan. Untuk melihat apakah fitur ini didukung untuk jenis indeks dan API penelusuran yang Anda gunakan, lihat [Jenis indeks](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html).

Anda dapat menambahkan pertanyaan umum (FAQs) langsung ke indeks Anda menggunakan konsol atau [CreateFaq](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateFaq.html)API. FAQs Menambah indeks adalah operasi asinkron. Anda meletakkan data untuk FAQ dalam file yang Anda simpan dalam Amazon Simple Storage Service ember. Anda dapat menggunakan file CSV atau JSON sebagai masukan untuk FAQ Anda:
+ CSV dasar—File CSV di mana setiap baris berisi pertanyaan, jawaban, dan URI sumber opsional.
+ CSV kustom—File CSV yang berisi pertanyaan, jawaban, dan header untuk kustom fields/attributes yang dapat Anda gunakan untuk memfaksi, menampilkan, atau mengurutkan tanggapan FAQ. Anda juga dapat menentukan bidang kontrol akses untuk membatasi respons FAQ untuk pengguna dan grup tertentu yang diizinkan untuk melihat respons FAQ.
+ JSON—File JSON yang berisi pertanyaan, jawaban, dan kustom fields/attributes yang dapat Anda gunakan untuk memunculkan, menampilkan, atau mengurutkan tanggapan FAQ. Anda juga dapat menentukan bidang kontrol akses untuk membatasi respons FAQ untuk pengguna dan grup tertentu yang diizinkan untuk melihat respons FAQ.

Misalnya, berikut ini adalah file CSV dasar yang memberikan jawaban atas pertanyaan tentang klinik gratis di Spokane, Washington AS dan Mountain View, Missouri, AS.

```
How many free clinics are in Spokane WA?, 13
How many free clinics are there in Mountain View Missouri?, 7
```

**catatan**  
File FAQ harus berupa file yang dikodekan UTF-8.

**Topics**
+ [Membuat kolom indeks untuk file FAQ](#in-custom-fields-faq)
+ [File CSV dasar](#faq-basic-csv)
+ [File CSV kustom](#faq-custom-csv)
+ [File JSON](#faq-custom-json)
+ [Menggunakan file Pertanyaan yang Sering Diajukan](#using-faq-file)
+ [File FAQ dalam bahasa selain bahasa Inggris](#faq-languages)

## Membuat kolom indeks untuk file FAQ
<a name="in-custom-fields-faq"></a>

**catatan**  
Dukungan fitur bervariasi menurut jenis indeks dan API pencarian yang digunakan. Untuk melihat apakah fitur ini didukung untuk jenis indeks dan API penelusuran yang Anda gunakan, lihat [Jenis indeks](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html).

Saat Anda menggunakan file [CSV atau [JSON](https://docs.aws.amazon.com/kendra/latest/dg/in-creating-faq.html#faq-custom-json) khusus](https://docs.aws.amazon.com/kendra/latest/dg/in-creating-faq.html#faq-custom-csv) untuk masukan, Anda dapat mendeklarasikan bidang khusus untuk pertanyaan FAQ Anda. Misalnya, Anda dapat membuat bidang kustom yang menetapkan setiap pertanyaan FAQ departemen bisnis. Ketika FAQ dikembalikan sebagai tanggapan, Anda dapat menggunakan departemen sebagai aspek untuk mempersempit pencarian menjadi “SDM” atau “Keuangan” saja, misalnya.

Bidang kustom harus dipetakan ke bidang indeks. Di konsol, Anda menggunakan halaman **definisi Facet** untuk membuat bidang indeks. Saat menggunakan API, Anda harus terlebih dahulu membuat bidang indeks menggunakan [UpdateIndex](https://docs.aws.amazon.com/kendra/latest/APIReference/API_UpdateIndex.html)API.

 field/attribute Jenis dalam file FAQ harus cocok dengan jenis bidang indeks terkait. Misalnya, bidang “Departemen” adalah bidang `STRING_LIST` tipe. Jadi, Anda harus memberikan nilai untuk bidang departemen sebagai daftar string di file FAQ Anda. Anda dapat memeriksa jenis bidang indeks menggunakan halaman **definisi Facet** di konsol atau dengan menggunakan [DescribeIndex](https://docs.aws.amazon.com/kendra/latest/APIReference/API_DescribeIndex.html)API.

Ketika membuat bidang indeks yang dipetakan ke atribut kustom, Anda dapat menandainya sebagai dapat ditampilkan, dapat dibuat faset, atau dapat diurutkan. Anda tidak dapat menjadikan atribut kustom dapat dicari.

Selain atribut kustom, Anda juga dapat menggunakan bidang Amazon Kendra cadangan atau umum dalam file CSV atau JSON kustom. Untuk informasi selengkapnya, lihat [Atribut atau bidang dokumen](https://docs.aws.amazon.com/kendra/latest/dg/hiw-document-attributes.html).

## File CSV dasar
<a name="faq-basic-csv"></a>

Gunakan file CSV dasar saat Anda ingin menggunakan struktur sederhana untuk Anda FAQs. Dalam file CSV dasar, setiap baris memiliki dua atau tiga bidang: pertanyaan, jawaban, dan URI sumber opsional yang menunjuk ke dokumen dengan informasi lebih lanjut.

Isi file harus mengikuti [RFC 4180 Common Format dan MIME Type for Comma-Separated Values](https://tools.ietf.org/html/rfc4180) (CSV) File.

Berikut ini adalah file FAQ dalam format CSV dasar.

```
How many free clinics are in Spokane WA?, 13, https://s3.region.company.com/bucket-name/directory/faq.csv
How many free clinics are there in Mountain View Missouri?, 7, https://s3.region.company.com/bucket-name/directory/faq.csv
```

## File CSV kustom
<a name="faq-custom-csv"></a>

Gunakan file CSV khusus saat Anda ingin menambahkan kustom fields/attributes ke pertanyaan FAQ Anda. Untuk file CSV kustom, Anda menggunakan baris header dalam file CSV Anda untuk menentukan atribut tambahan.

File CSV harus berisi dua bidang wajib berikut:
+ `_question`Pertanyaan yang sering diajukan
+ `_answer`Jawaban atas pertanyaan yang sering diajukan

File CSV kustom Anda dapat berisi kedua bidang yang Amazon Kendra dicadangkan (kecuali`_faq_id`,, `_data_source_id``_document_title`, dan`_file_type`) dan bidang kustom apa pun. 

 Berikut ini adalah contoh file CSV kustom.

```
_question,_answer,_last_updated_at,custom_string
How many free clinics are in Spokane WA?, 13, 2012-03-25T12:30:10+01:00, Note: Some free clinics require you to meet certain criteria in order to use their services
How many free clinics are there in Mountain View Missouri?, 7, 2012-03-25T12:30:10+01:00, Note: Some free clinics require you to meet certain criteria in order to use their services
```

Isi file kustom harus mengikuti [RFC 4180 Common Format dan MIME Type for Comma-Separated Values](https://tools.ietf.org/html/rfc4180) (CSV) File.

Berikut ini mencantumkan jenis bidang kustom:
+ Tanggal — ISO 8601 yang dikodekan tanggal dan nilai waktu.

  Misalnya, 2012-03-25T 12:30:10 \$101:00 adalah format tanggal-waktu ISO 8601 untuk 25 Maret 2012, pukul 12:30 (ditambah 10 detik) di zona waktu Eropa Tengah.
+ Long—Angka, seperti. `1234`
+ Nilai string — String. Jika string Anda berisi koma, lampirkan seluruh nilai dalam tanda kutip ganda (“) (misalnya,). `"custom attribute, and more"`
+ Daftar String — daftar nilai string. Buat daftar nilai dalam daftar yang dipisahkan koma yang diapit tanda kutip (“) (misalnya,). `"item1, item2, item3"` Jika daftar hanya berisi satu entri, Anda dapat menghilangkan tanda kutip (misalnya,`item1`).

File CSV khusus dapat berisi bidang kontrol akses pengguna. Anda dapat menggunakan bidang ini untuk membatasi akses ke FAQ untuk pengguna dan grup tertentu. Untuk memfilter konteks pengguna, pengguna harus memberikan informasi pengguna dan grup dalam kueri. Jika tidak, semua yang FAQs relevan dikembalikan. Untuk informasi selengkapnya, lihat [Pemfilteran konteks pengguna](https://docs.aws.amazon.com/kendra/latest/dg/user-context-filter.html).

Berikut daftar filter konteks pengguna untuk FAQs:
+ `_acl_user_allow`—Pengguna dalam daftar izinkan dapat melihat FAQ dalam respons kueri. Pertanyaan yang Sering Diajukan tidak dikembalikan ke pengguna lain.
+ `_acl_user_deny`—Pengguna dalam daftar tolak tidak dapat melihat FAQ dalam respons kueri. FAQ dikembalikan ke semua pengguna lain jika relevan dengan kueri.
+ `_acl_group_allow`—Pengguna yang merupakan anggota grup yang diizinkan dapat melihat FAQ dalam respons kueri. Pertanyaan yang Sering Diajukan tidak dikembalikan ke pengguna yang merupakan anggota grup lain.
+ `_acl_group_deny`Pengguna yang merupakan anggota grup yang ditolak tidak dapat melihat FAQ dalam respons kueri. FAQ dikembalikan ke grup lain jika relevan dengan kueri.

Berikan nilai untuk daftar izinkan dan tolak dalam daftar yang dipisahkan koma yang diapit tanda kutip (misalnya,). `"user1,user2,user3"` Anda dapat menyertakan pengguna atau grup dalam daftar izinkan atau daftar penolakan, tetapi tidak keduanya di mana pengguna yang sama diizinkan secara individual tetapi juga grup ditolak. Jika menyertakan pengguna atau grup dalam keduanya, Anda akan menerima kesalahan.

Berikut ini adalah contoh file CSV kustom dengan informasi konteks pengguna.

```
_question, _answer, _acl_user_allow, _acl_user_deny, _acl_group_allow, _acl_group_deny
How many free clinics are in Spokane WA?, 13, "userID6201,userID7552", "userID1001,userID2020", groupBasicPlusRate, groupPremiumRate
```

## File JSON
<a name="faq-custom-json"></a>

Anda dapat menggunakan file JSON untuk memberikan pertanyaan, jawaban, dan bidang untuk indeks Anda. Anda dapat menambahkan salah satu bidang yang Amazon Kendra dicadangkan atau bidang khusus ke FAQ.

Berikut ini adalah skema untuk file JSON.

```
{
    "SchemaVersion": 1,
    "FaqDocuments": [
        {
            "Question": string,
            "Answer": string,
            "Attributes": {
                string: object
                additional attributes
            },
            "AccessControlList": [
               {
                   "Name": string,
                   "Type": enum( "GROUP" | "USER" ),
                   "Access": enum( "ALLOW" | "DENY" )
               },
               additional user context
            ]
        },
        additional FAQ documents
    ]
}
```

Contoh file JSON berikut menunjukkan dua dokumen FAQ. Salah satu dokumen hanya memiliki pertanyaan dan jawaban yang diperlukan. Dokumen lainnya juga mencakup bidang tambahan dan konteks pengguna atau informasi kontrol akses.

```
{
    "SchemaVersion": 1,
    "FaqDocuments": [
        {
            "Question": "How many free clinics are in Spokane WA?",
            "Answer": "13"
        },
        {
            "Question": "How many free clinics are there in Mountain View Missouri?",
            "Answer": "7",
            "Attributes": {
                "_source_uri": "https://s3.region.company.com/bucket-name/directory/faq.csv",
                "_category": "Charitable Clinics"
            },
            "AccessControlList": [
               {
                   "Name": "user@amazon.com",
                   "Type": "USER",
                   "Access": "ALLOW"
               },
               {
                   "Name": "Admin",
                   "Type": "GROUP",
                   "Access": "ALLOW"
               }
            ]
        }
    ]
}
```

Berikut ini mencantumkan jenis bidang kustom:
+ Tanggal — Nilai string JSON dengan nilai tanggal dan waktu yang dikodekan ISO 8601. Misalnya, 2012-03-25T 12:30:10 \$101:00 adalah format tanggal-waktu ISO 8601 untuk 25 Maret 2012, pukul 12:30 (ditambah 10 detik) di zona waktu Eropa Tengah.
+ Panjang — Nilai nomor JSON, seperti. `1234`
+ String—Nilai string JSON (misalnya,). `"custom attribute"`
+ Daftar String-sebuah array JSON dari nilai string (misalnya,). `["item1,item2,item3"]`

File JSON dapat berisi bidang kontrol akses pengguna. Anda dapat menggunakan bidang ini untuk membatasi akses ke FAQ untuk pengguna dan grup tertentu. Untuk memfilter konteks pengguna, pengguna harus memberikan informasi pengguna dan grup dalam kueri. Jika tidak, semua yang FAQs relevan dikembalikan. Untuk informasi selengkapnya, lihat [Pemfilteran konteks pengguna](https://docs.aws.amazon.com/kendra/latest/dg/user-context-filter.html).

Anda dapat menyertakan pengguna atau grup dalam daftar izinkan atau daftar penolakan, tetapi tidak keduanya di mana pengguna yang sama diizinkan secara individual tetapi juga grup ditolak. Jika menyertakan pengguna atau grup dalam keduanya, Anda akan menerima kesalahan.

Berikut ini adalah contoh termasuk kontrol akses pengguna ke FAQ JSON.

```
"AccessControlList": [
                {
                    "Name": "group or user name",
                    "Type": "GROUP | USER",
                    "Access": "ALLOW | DENY"
                },
                additional user context
            ]
```

## Menggunakan file Pertanyaan yang Sering Diajukan
<a name="using-faq-file"></a>

Setelah menyimpan file input FAQ Anda dalam bucket S3, Anda menggunakan konsol atau `CreateFaq` API untuk memasukkan pertanyaan dan jawaban ke dalam indeks Anda. Jika Anda ingin memperbarui FAQ, hapus FAQ dan buat lagi. Anda menggunakan `DeleteFaq` API untuk menghapus FAQ.

Anda harus memberikan IAM peran yang memiliki akses ke bucket S3 yang berisi file sumber Anda. Tentukan peran di konsol tersebut, atau di parameter `RoleArn`. Berikut ini adalah contoh menambahkan file FAQ ke indeks.

------
#### [ Python ]

```
import boto3

kendra = boto3.client("kendra")

# Provide the index ID
index_id = "index-id"
# Provide the IAM role ARN required to index documents in an S3 bucket
role_arn = "arn:aws:iam::${accountId}:role/${roleName}"

# Provide the S3 bucket path information to the FAQ file
faq_path = {
    "Bucket": "bucket-name",
    "Key": "FreeClinicsUSA.csv"
}

response = kendra.create_faq(
    S3Path =  faq_path,
    Name = "FreeClinicsUSA",
    IndexId = index_id,
    RoleArn = role_arn
)

print(response)
```

------
#### [ Java ]

```
package com.amazonaws.kendra;

import software.amazon.awssdk.services.kendra.KendraClient;
import software.amazon.awssdk.services.kendra.model.CreateFaqRequest;
import software.amazon.awssdk.services.kendra.model.CreateFaqResponse;
import software.amazon.awssdk.services.kendra.model.S3Path;

public class AddFaqExample {
    public static void main(String[] args) {
        KendraClient kendra = KendraClient.builder().build();

        String indexId = "yourIndexId";
        String roleArn = "your role for accessing S3 files";

        CreateFaqRequest createFaqRequest = CreateFaqRequest
            .builder()
            .indexId(indexId)
            .name("FreeClinicsUSA")
            .roleArn(roleArn)
            .s3Path(
                S3Path
                    .builder()
                    .bucket("amzn-s3-demo-bucket")
                    .key("FreeClinicsUSA.csv")
                    .build())
            .build();

        CreateFaqResponse response = kendra.createFaq(createFaqRequest);

        System.out.println(String.format("The result of creating FAQ: %s", response));

    }
}
```

------

## File FAQ dalam bahasa selain bahasa Inggris
<a name="faq-languages"></a>

Anda dapat mengindeks FAQ dalam bahasa yang didukung. Amazon Kendra indeks FAQs dalam bahasa Inggris secara default jika Anda tidak menentukan bahasa. Anda menentukan kode bahasa ketika Anda memanggil [CreateFaq](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateFaq.html)operasi atau Anda dapat menyertakan kode bahasa untuk FAQ dalam metadata FAQ sebagai bidang. Jika FAQ tidak memiliki kode bahasa dalam metadatanya yang ditentukan dalam bidang metadata, FAQ diindeks menggunakan kode bahasa yang ditentukan saat Anda memanggil operasi. `CreateFAQ` Untuk mengindeks dokumen FAQ dalam bahasa yang didukung di konsol, buka **FAQs**dan pilih **Tambahkan FAQ**. **Anda memilih bahasa dari Bahasa dropdown.**

# Membuat bidang dokumen kustom
<a name="custom-attributes"></a>

**catatan**  
Dukungan fitur bervariasi menurut jenis indeks dan API pencarian yang digunakan. Untuk melihat apakah fitur ini didukung untuk jenis indeks dan API penelusuran yang Anda gunakan, lihat [Mencari indeks](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index.html#index-searching).

Anda dapat membuat atribut atau bidang khusus untuk dokumen Anda di indeks Amazon Kendra Anda. Misalnya, Anda dapat membuat bidang atau atribut khusus yang disebut “Departemen” dengan nilai “HR”, “Penjualan”, dan “Manufaktur”. Jika Anda memetakan bidang atau atribut khusus ini ke indeks Amazon Kendra Anda, Anda dapat menggunakannya untuk memfilter hasil pencarian untuk menyertakan dokumen dengan atribut departemen “HR”, misalnya.

Sebelum Anda dapat menggunakan bidang atau atribut khusus, Anda harus terlebih dahulu membuat bidang dalam indeks. Gunakan konsol untuk mengedit pemetaan bidang sumber data untuk menambahkan bidang khusus atau menggunakan [UpdateIndex](https://docs.aws.amazon.com/kendra/latest/APIReference/API_UpdateIndex.html)API untuk membuat bidang indeks. Anda tidak dapat mengubah tipe data bidang setelah Anda membuat bidang.

Untuk sebagian besar sumber data, Anda memetakan bidang di sumber data eksternal ke bidang yang sesuai Amazon Kendra. Untuk informasi lebih lanjut, lihat [Memetakan bidang sumber data](https://docs.aws.amazon.com/kendra/latest/dg/field-mapping.html). Untuk sumber data S3, Anda dapat membuat bidang atau atribut khusus menggunakan file metadata JSON.

Anda dapat membuat hingga 500 bidang atau atribut khusus.

Anda juga dapat menggunakan bidang yang Amazon Kendra dipesan atau umum. Untuk informasi selengkapnya, lihat [Atribut atau bidang dokumen](https://docs.aws.amazon.com/kendra/latest/dg/hiw-document-attributes.html).

**Topics**
+ [Memperbarui bidang dokumen kustom](#update-attributes)

## Memperbarui bidang dokumen kustom
<a name="update-attributes"></a>

Dengan `UpdateIndex` API, Anda menambahkan bidang atau atribut khusus menggunakan `DocumentMetadataConfigurationUpdates` parameter.

Contoh JSON berikut digunakan `DocumentMetadataConfigurationUpdates` untuk menambahkan bidang yang disebut “Departemen” ke indeks.

```
"DocumentmetadataConfigurationUpdates": [
   {
       "Name": "Department",
       "Type": "STRING_VALUE"
   }
]
```

Bagian berikut mencakup contoh untuk menambahkan atribut atau bidang khusus menggunakan [BatchPutDocument](https://docs.aws.amazon.com/kendra/latest/APIReference/API_BatchPutDocument.html)dan untuk sumber data Amazon S3.

**Topics**
+ [Menambahkan atribut atau bidang khusus dengan BatchPutDocument API](#custom-attributes-batch)
+ [Menambahkan atribut atau bidang khusus ke sumber Amazon S3 data](#custom-attributes-s3)

### Menambahkan atribut atau bidang khusus dengan BatchPutDocument API
<a name="custom-attributes-batch"></a>

Saat Anda menggunakan [BatchPutDocument](https://docs.aws.amazon.com/kendra/latest/APIReference/API_BatchPutDocument.html)API untuk menambahkan dokumen ke indeks, Anda menentukan bidang atau atribut khusus sebagai bagian dari`Attributes`. Anda dapat menambahkan beberapa bidang atau atribut saat memanggil API. Anda dapat membuat hingga 500 bidang atau atribut khusus. Contoh berikut adalah bidang atau atribut khusus yang menambahkan “Departemen” ke dokumen.

```
"Attributes": 
    {
        "Department": "HR",
        "_category": "Vacation policy"
    }
```

### Menambahkan atribut atau bidang khusus ke sumber Amazon S3 data
<a name="custom-attributes-s3"></a>

Saat Anda menggunakan bucket S3 sebagai sumber data untuk indeks Anda, Anda menambahkan metadata ke dokumen dengan file metadata pendamping. Letakkan file JSON metadata dalam struktur direktori yang paralel dengan dokumen Anda. Untuk informasi selengkapnya, lihat [metadata dokumen S3](https://docs.aws.amazon.com/kendra/latest/dg/s3-metadata.html).

Anda menentukan bidang kustom atau atribut dalam struktur `Attributes` JSON. Anda dapat membuat hingga 500 bidang atau atribut khusus. Misalnya, contoh berikut digunakan `Attributes` untuk menentukan tiga bidang atau atribut khusus dan satu bidang cadangan.

```
"Attributes": {
        "brand": "Amazon Basics",
        "price": 1595,
        "_category": "sports",
        "subcategories": ["outdoors", "electronics"]
    }
```

Langkah-langkah berikut memandu Anda untuk menambahkan atribut khusus ke sumber data Amazon S3.

**Topics**
+ [Langkah 1: Buat indeks Amazon Kendra](#custom-attributes-s3-1)
+ [Langkah 2: Perbarui indeks untuk menambahkan bidang dokumen khusus](#custom-attributes-s3-2)
+ [Langkah 3: Buat sumber data Amazon S3 dan petakan bidang sumber data ke atribut khusus](#custom-attributes-s3-3)

#### Langkah 1: Buat indeks Amazon Kendra
<a name="custom-attributes-s3-1"></a>

Ikuti langkah-langkah [Membuat Indeks](create-index.md) untuk membuat indeks Amazon Kendra Anda.

#### Langkah 2: Perbarui indeks untuk menambahkan bidang dokumen khusus
<a name="custom-attributes-s3-2"></a>

Setelah membuat indeks, Anda menambahkan bidang ke dalamnya. Prosedur berikut menunjukkan cara menambahkan bidang ke indeks menggunakan konsol dan CLI.

------
#### [ Console ]

**Untuk membuat bidang indeks**

1. Pastikan Anda telah [membuat indeks](https://docs.aws.amazon.com/kendra/latest/dg/create-index.html).

1. Kemudian, dari menu navigasi kiri, dari **Manajemen data**, pilih **Definisi Facet**.

1. Di **Panduan pengaturan bidang Indeks**, dari **bidang Indeks**, pilih **Tambahkan bidang** untuk menambahkan bidang khusus.

1. Dalam kotak dialog **Add index field**, lakukan hal berikut:
   + **Nama bidang** - Tambahkan nama bidang.
   + **Tipe data** - Pilih tipe data, apakah **String**, **daftar String**, atau **Tanggal**.
   + **Jenis penggunaan** **— Pilih jenis penggunaan, apakah **Facetable, Searchable****, **Displayable****, dan Sortable.**

     Kemudian, pilih **Tambahkan**.

   Ulangi langkah terakhir untuk bidang lain yang ingin Anda petakan.

------
#### [ CLI ]

```
aws kendra update-index  \
--region $region \
--endpoint-url $endpoint \
--application-id $applicationId \
--index-id $indexId  \
--document-metadata-configuration-updates \
"[
    {
        "Name": "string",
        "Type": "STRING_VALUE"|"STRING_LIST_VALUE"|"LONG_VALUE"|"DATE_VALUE",
        "Relevance": {
            "Freshness": true|false,
            "Importance": integer,
            "Duration": "string",
            "RankOrder": "ASCENDING"|"DESCENDING",
            "ValueImportanceMap": {"string": integer
            ...}
    },
    "Search": {
        "Facetable": true|false,
        "Searchable": true|false,
        "Displayable": true|false,
        "Sortable": true|false
        }
    }
...
]"
```

------

#### Langkah 3: Buat sumber data Amazon S3 dan petakan bidang sumber data ke atribut khusus
<a name="custom-attributes-s3-3"></a>

Untuk membuat sumber data Amazon S3 dan memetakan bidang ke sana, ikuti petunjuk di. [Amazon S3](data-source-s3.md)

Jika Anda menggunakan API, gunakan `fieldMappings` atribut di bawah `configuration` saat Anda menggunakan [CreateDataSource](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateDataSource.html)API.

Untuk gambaran umum tentang cara bidang sumber data dipetakan, lihat[Memetakan bidang sumber data](field-mapping.md).

# Mengontrol akses pengguna ke dokumen dengan token
<a name="create-index-access-control"></a>

**catatan**  
Dukungan fitur bervariasi menurut jenis indeks dan API pencarian yang digunakan. Untuk melihat apakah fitur ini didukung untuk jenis indeks dan API penelusuran yang Anda gunakan, lihat [Jenis indeks](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index-types.html).

**penting**  
Indeks Amazon Kendra GenAI Enterprise Edition tidak mendukung kontrol akses pengguna berbasis token.

Anda dapat mengontrol pengguna atau grup mana yang dapat mengakses dokumen tertentu dalam indeks Anda atau melihat dokumen tertentu di hasil pencarian mereka. Ini disebut penyaringan konteks pengguna. Ini adalah semacam pencarian yang dipersonalisasi dengan manfaat mengendalikan akses ke dokumen. Misalnya, tidak semua tim yang mencari informasi di portal perusahaan harus mengakses dokumen perusahaan yang sangat rahasia, juga dokumen ini tidak relevan untuk semua pengguna. Hanya pengguna atau grup tim tertentu yang diberi akses ke dokumen rahasia yang harus melihat dokumen-dokumen ini di hasil pencarian mereka.

Amazon Kendra Indeks Perusahaan dan Pengembang mendukung kontrol akses pengguna berbasis token menggunakan jenis token berikut:
+ ID terbuka
+ JWT dengan rahasia bersama
+ JWT dengan kunci publik
+ JSON

Amazon Kendra dapat digunakan untuk memberikan pencarian perusahaan yang aman untuk aplikasi pengambilan dan pencarian Anda. Selama kueri dan pengambilan, Amazon Kendra filter hasil pencarian berdasarkan `AttributeFilters` dan `UserContext` disediakan dalam permintaan. Amazon Kendra membaca daftar kontrol akses dokumen (ACLs) yang dikumpulkan oleh konektornya selama perayapan dan konsumsi. Hasil pengambilan dan pencarian kembali URLs menunjuk kembali ke repositori dokumen asli ditambah kutipan singkat. Akses ke dokumen lengkap masih diberlakukan oleh repositori asli.

**Topics**
+ [Menggunakan OpenID](create-index-access-control-tokens-openid.md)
+ [Menggunakan JSON Web Token (JWT) dengan rahasia bersama](create-index-access-control-tokens-jwtshared.md)
+ [Menggunakan JSON Web Token (JWT) dengan kunci publik](create-index-access-control-tokens-jwtpublic.md)
+ [Menggunakan JSON](create-index-access-control-tokens-json.md)

# Menggunakan OpenID
<a name="create-index-access-control-tokens-openid"></a>

Untuk mengonfigurasi Amazon Kendra indeks untuk menggunakan token OpenID untuk kontrol akses, Anda memerlukan URL JWKS (JSON Web Key Set) dari penyedia OpenID. Dalam kebanyakan kasus, URL JWKS dalam format berikut (jika mereka mengikuti penemuan OpenID). `https://domain-name/.well_known/jwks.json` 

Contoh berikut menunjukkan cara menggunakan token OpenID untuk kontrol akses pengguna saat Anda membuat indeks.

------
#### [ Console ]

1. Pilih **Buat indeks** untuk mulai membuat indeks baru.

1. Pada **Tentukan detail indeks**, beri indeks Anda nama dan deskripsi. 

1. Untuk **IAM peran**, pilih peran atau pilih **Buat peran baru** dan tentukan nama peran untuk membuat peran baru. Peran IAM akan memiliki awalan "AmazonKendra-”. 

1. Biarkan bidang lain dengan defaultnya. Pilih **Berikutnya**.

1. Di halaman **Konfigurasikan kontrol akses pengguna**, di bawah **Pengaturan kontrol akses**, pilih **Ya** untuk menggunakan token untuk kontrol akses. 

1. Di bawah **Konfigurasi token**, pilih **OpenID** sebagai **Jenis token**. 

1. Menentukan **URL kunci penandatanganan**. URL harus mengarah ke satu set kunci web JSON. 

1. *Opsional* Pada **Konfigurasi lanjutan**: 

   1. Tentukan **Nama pengguna** untuk digunakan dalam pemeriksaan ACL. 

   1. Tentukan satu atau lebih **Grup** untuk digunakan dalam pemeriksaan ACL. 

   1. Tentukan **Penerbit** yang akan memvalidasi penerbit token. 

   1. Tentukan **Id Klien**. Anda harus menentukan ekspresi reguler yang sesuai dengan audiens di JWT.

1. Di halaman **Detail penyediaan**, pilih **Edisi Developer**.

1. Pilih **Buat** untuk membuat indeks Anda.

1. Tunggu indeks Anda dibuat. Amazon Kendra menyediakan perangkat keras untuk indeks Anda. Operasi ini dapat memakan waktu lama.

------
#### [ CLI ]

Untuk membuat indeks dengan AWS CLI menggunakan file input JSON, pertama buat file JSON dengan parameter yang Anda inginkan:

```
{
    "Name": "user-context",
    "Edition": "ENTERPRISE_EDITION",
    "RoleArn": "arn:aws:iam::account-id:role:/my-role",
    "UserTokenConfigurations": [
        {
            "JwtTokenTypeConfiguration": {
                "KeyLocation": "URL",
                "Issuer": "optional: specify the issuer url",
                "ClaimRegex": "optional: regex to validate claims in the token",
                "UserNameAttributeField": "optional: user",
                "GroupAttributeField": "optional: group",
                "URL": "https://example.com/.well-known/jwks.json"
            }
        }
    ],
    "UserContextPolicy": "USER_TOKEN"
}
```

Anda dapat mengganti nama bidang pengguna dan grup default. Nilai default untuk `UserNameAttributeField` adalah "user". Nilai default untuk `GroupAttributeField` adalah "groups". 

Selanjutnya, panggil `create-index` menggunakan file input. Misalnya, jika nama file JSON Anda adalah `create-index-openid.json`, Anda dapat menggunakan yang berikut ini: 

```
aws kendra create-index --cli-input-json file://create-index-openid.json
```

------
#### [ Python ]

```
response = kendra.create_index(
    Name='user-context',
    Edition='ENTERPRISE_EDITION',
    RoleArn='arn:aws:iam::account-id:role:/my-role',
    UserTokenConfigurations=[
        {
            "JwtTokenTypeConfiguration": {
                "KeyLocation": "URL",
                "Issuer": "optional: specify the issuer url",
                "ClaimRegex": "optional: regex to validate claims in the token",
                "UserNameAttributeField": "optional: user",
                "GroupAttributeField": "optional: group",
                "URL": "https://example.com/.well-known/jwks.json"
            }
        }
    ],
    UserContextPolicy='USER_TOKEN'
)
```

------

# Menggunakan JSON Web Token (JWT) dengan rahasia bersama
<a name="create-index-access-control-tokens-jwtshared"></a>

Contoh berikut menunjukkan cara menggunakan JSON Web Token (JWT) dengan token rahasia bersama untuk kontrol akses pengguna saat Anda membuat indeks. 

------
#### [ Console ]

1. Pilih **Buat indeks** untuk mulai membuat indeks baru.

1. Pada **Tentukan detail indeks**, beri indeks Anda nama dan deskripsi.

1. Untuk **IAM role**, pilih peran atau pilih **Buat peran baru** dan tentukan nama peran untuk membuat peran baru. IAM Peran akan memiliki awalan "AmazonKendra-”.

1. Biarkan bidang lain dengan defaultnya. Pilih **Berikutnya**.

1. Di halaman **Konfigurasikan kontrol akses pengguna**, di bawah **Pengaturan kontrol akses**, pilih **Ya** untuk menggunakan token untuk kontrol akses.

1. Di bawah **Konfigurasi token**, pilih **JWT dengan rahasia bersama** sebagai **Jenis token**.

1. Di bawah **Parameter untuk menandatangani rahasia bersama**, pilih **Jenis rahasia**. Anda dapat menggunakan rahasia bersama AWS Secrets Manager atau membuat rahasia bersama baru.

   Untuk membuat rahasia bersama baru, pilih **Baru**, lalu ikuti langkah-langkah ini:

   1. Di bawah ** AWS Secrets Manager Rahasia baru**, tentukan **nama Rahasia**. Awalan `AmazonKendra-` akan ditambahkan saat Anda menyimpan kunci publik.

   1. Tentukan **ID kunci**. Kunci tersebut adalah petunjuk yang menunjukkan kunci yang digunakan untuk mengamankan tanda tangan web JSON (JWS) token.

   1. Pilih **Algoritme** penandatanganan untuk token. Ini adalah algoritme kriptografi yang digunakan untuk mengamankan token ID. Untuk informasi selengkapnya tentang RSA, lihat [Kriptografi RSA](https://tools.ietf.org/html/rfc3447).

   1. Tentukan **rahasia Bersama dengan memasukkan rahasia** yang dikodekan URL base64. Anda juga dapat memilih **Hasilkan rahasia** untuk membuat rahasia untuk Anda. Anda harus memastikan rahasianya adalah rahasia yang dikodekan URL base64.

   1. (*Opsional*) Tentukan kapan rahasia bersama valid. Anda dapat menentukan tanggal dan waktu berlaku atau berakhirnya rahasia, atau keduanya. Rahasia akan berlaku dalam interval yang ditentukan.

   1. Pilih **Simpan rahasia** untuk menyimpan rahasia baru.

1. (*Opsional*) Di bawah **Konfigurasi lanjutan**:

   1. Tentukan **Nama pengguna** untuk digunakan dalam pemeriksaan ACL.

   1. Tentukan satu atau lebih **Grup** untuk digunakan dalam pemeriksaan ACL.

   1. Tentukan **Penerbit** yang akan memvalidasi penerbit token.

   1. Tentukan **ID Klaim**. Anda harus menentukan ekspresi reguler yang cocok dengan audiens di JWT.

1. Di halaman **Detail penyediaan**, pilih **Edisi Developer**.

1. Pilih **Buat** untuk membuat indeks Anda.

1. Tunggu indeks Anda dibuat. Amazon Kendra menyediakan perangkat keras untuk indeks Anda. Operasi ini dapat memakan waktu lama.

------
#### [ CLI ]

Anda dapat menggunakan token JWT dengan rahasia bersama di dalamnya. AWS Secrets Manager Rahasianya harus berupa rahasia yang dikodekan URL base64. Anda memerlukan Secrets Manager ARN, dan Amazon Kendra peran Anda harus memiliki akses ke sumber `GetSecretValue` daya. Secrets Manager Jika Anda mengenkripsi Secrets Manager sumber daya dengan AWS KMS, peran juga harus memiliki akses ke tindakan dekripsi.

Untuk membuat indeks dengan AWS CLI menggunakan file input JSON, pertama buat file JSON dengan parameter yang Anda inginkan: 

```
{
    "Name": "user-context",
    "Edition": "ENTERPRISE_EDITION",
    "RoleArn": "arn:aws:iam::account-id:role:/my-role",
    "UserTokenConfigurations": [
        {
            "JwtTokenTypeConfiguration": {
                "KeyLocation": "SECRET_MANAGER",
                "Issuer": "optional: specify the issuer url",
                "ClaimRegex": "optional: regex to validate claims in the token",
                "UserNameAttributeField": "optional: user",
                "GroupAttributeField": "optional: group",
                "SecretManagerArn": "arn:aws:secretsmanager:us-west-2:account id:secret:/my-user-context-secret
            }
        }
    ],    
    "UserContextPolicy": "USER_TOKEN"
}
```

Anda dapat mengganti nama bidang pengguna dan grup default. Nilai default untuk `UserNameAttributeField` adalah "user". Nilai default untuk `GroupAttributeField` adalah "groups". 

Selanjutnya, panggil `create-index` menggunakan file input. Misalnya, jika nama file JSON Anda adalah `create-index-openid.json`, Anda dapat menggunakan yang berikut ini: 

```
aws kendra create-index --cli-input-json file://create-index-openid.json
```

Rahasianya harus memiliki format berikut di AWS Secrets Manager:

```
{
  "keys": [
    {
      "kid": "key_id",
      "alg": "HS256|HS384|HS512",
      "kty": "OCT", 
      "use": "sig", //this value can be sig only for now
      "k": "secret",
      "nbf":"ISO1806 date format"
      "exp":"ISO1806 date format"
    }
  ]
}
```

Untuk informasi selengkapnya tentang JWT, lihat [jwt.io](http://jwt.io).

------
#### [ Python ]

Anda dapat menggunakan token JWT dengan rahasia bersama di dalamnya. AWS Secrets Manager Rahasianya harus berupa rahasia yang dikodekan URL base64. Anda memerlukan Secrets Manager ARN, dan Amazon Kendra peran Anda harus memiliki akses ke sumber `GetSecretValue` daya. Secrets Manager Jika Anda mengenkripsi Secrets Manager sumber daya dengan AWS KMS, peran juga harus memiliki akses ke tindakan dekripsi.

```
response = kendra.create_index(
    Name='user-context',
    Edition='ENTERPRISE_EDITION',
    RoleArn='arn:aws:iam::account-id:role:/my-role',
    UserTokenConfigurations=[
        {
            "JwtTokenTypeConfiguration": {
                "KeyLocation": "URL",
                "Issuer": "optional: specify the issuer url",
                "ClaimRegex": "optional: regex to validate claims in the token",
                "UserNameAttributeField": "optional: user",
                "GroupAttributeField": "optional: group",
                "SecretManagerArn": "arn:aws:secretsmanager:us-west-2:account id:secret:/my-user-context-secret"
            }
        }
    ],
    UserContextPolicy='USER_TOKEN'
)
```

------

# Menggunakan JSON Web Token (JWT) dengan kunci publik
<a name="create-index-access-control-tokens-jwtpublic"></a>

Contoh berikut menunjukkan cara menggunakan JSON Web Token (JWT) dengan kunci publik untuk kontrol akses pengguna saat Anda membuat indeks. Untuk informasi selengkapnya tentang JWT, lihat [jwt.io](http://jwt.io).

------
#### [ Console ]

1. Pilih **Buat indeks** untuk mulai membuat indeks baru.

1. Pada **Tentukan detail indeks**, beri indeks Anda nama dan deskripsi. 

1. Untuk **IAM role**, pilih peran atau pilih **Buat peran baru** dan tentukan nama peran untuk membuat peran baru. IAM Peran akan memiliki awalan "AmazonKendra-”.

1. Biarkan bidang lain dengan defaultnya. Pilih **Berikutnya**.

1. Di halaman **Konfigurasikan kontrol akses pengguna**, di bawah **Pengaturan kontrol akses**, pilih **Ya** untuk menggunakan token untuk kontrol akses.

1. Pada **Konfigurasi token**, pilih **JWT dengan kunci publik** sebagai **Jenis token**.

1. Di bawah **Parameter untuk menandatangani kunci publik**, pilih **Jenis rahasia**. Anda dapat menggunakan rahasia AWS Secrets Manager yang ada atau membuat rahasia bersama baru.

   Untuk membuat rahasia baru, pilih **Baru**, lalu ikuti langkah-langkah ini:

   1. Di bawah ** AWS Secrets Manager Rahasia baru**, tentukan **nama Rahasia**. Awalan `AmazonKendra-` akan ditambahkan saat Anda menyimpan kunci publik.

   1. Tentukan **ID kunci**. Kunci tersebut adalah petunjuk yang menunjukkan kunci yang digunakan untuk mengamankan tanda tangan web JSON (JWS) token.

   1. Pilih **Algoritme** penandatanganan untuk token. Ini adalah algoritme kriptografi yang digunakan untuk mengamankan token ID. Untuk informasi selengkapnya tentang RSA, lihat [Kriptografi RSA](https://tools.ietf.org/html/rfc3447).

   1. Pada **Atribut sertifikat**, tentukan **Rangkaian sertifikat** *opsional*. Rangkaian sertifikat terdiri dari daftar beberapa sertifikat. Rangkaian ini dimulai dengan sertifikat server dan berakhir dengan sertifikat akar.

   1. *Opsional* Tentukan **Sidik jari jempol atau sidik jari**. Ini harus berupa hash sertifikat, dikomputasi atas semua data sertifikat dan tanda tangannya.

   1. Tentukan **Eksponen**. Ini adalah nilai eksponen untuk kunci publik RSA. Hal ini direpresentasikan sebagai nilai base64Url UInt -encoded.

   1. Tentukan **Modulus**. Ini adalah nilai eksponen untuk kunci publik RSA. Hal ini direpresentasikan sebagai nilai base64Url UInt -encoded.

   1. Pilih **Simpan kunci** untuk menyimpan kunci baru.

1. *Opsional* Pada **Konfigurasi lanjutan**:

   1. Tentukan **Nama pengguna** untuk digunakan dalam pemeriksaan ACL.

   1. Tentukan satu atau lebih **Grup** untuk digunakan dalam pemeriksaan ACL.

   1. Tentukan **Penerbit** yang akan memvalidasi penerbit token.

   1. Tentukan **Id Klien**. Anda harus menentukan ekspresi reguler yang sesuai dengan audiens di JWT.

1. Di halaman **Detail penyediaan**, pilih **Edisi Developer**.

1. Pilih **Buat** untuk membuat indeks Anda.

1. Tunggu indeks Anda dibuat. Amazon Kendra menyediakan perangkat keras untuk indeks Anda. Operasi ini dapat memakan waktu lama.

------
#### [ CLI ]

Anda dapat menggunakan JWT dengan kunci publik di dalam AWS Secrets Manager. Anda memerlukan Secrets Manager ARN, dan Amazon Kendra peran Anda harus memiliki akses ke sumber `GetSecretValue` daya. Secrets Manager Jika Anda mengenkripsi Secrets Manager sumber daya dengan AWS KMS, peran juga harus memiliki akses ke tindakan dekripsi.

Untuk membuat indeks dengan AWS CLI menggunakan file input JSON, pertama buat file JSON dengan parameter yang Anda inginkan:

```
{
    "Name": "user-context",
    "Edition": "ENTERPRISE_EDITION",
    "RoleArn": "arn:aws:iam::account id:role:/my-role",
    "UserTokenConfigurationList": [
        {
            "JwtTokenTypeConfiguration": {
                "KeyLocation": "SECRET_MANAGER",
                "Issuer": "optional: specify the issuer url",
                "ClaimRegex": "optional: regex to validate claims in the token",
                "UserNameAttributeField": "optional: user",
                "GroupAttributeField": "optional: group",
                "SecretManagerArn": "arn:aws:secretsmanager:us-west-2:account id:secret:/my-user-context-secret
            }
        }
    ],    "UserContextPolicy": "USER_TOKEN"
}
```

Anda dapat mengganti nama bidang pengguna dan grup default. Nilai default untuk `UserNameAttributeField` adalah "user". Nilai default untuk `GroupAttributeField` adalah "groups".

Selanjutnya, panggil `create-index` menggunakan file input. Misalnya, jika nama file JSON Anda adalah `create-index-openid.json`, Anda dapat menggunakan yang berikut ini:

```
aws kendra create-index --cli-input-json file://create-index-openid.json
```

Rahasianya harus memiliki format berikut di Secrets Manager:

```
{
  "keys": [
    {
      "alg": "RS256|RS384|RS512",
      "kty": "RSA", //this can be RSA only for now
      "use": "sig", //this value can be sig only for now
      "n": "modulus of standard pem",
      "e": "exponent of standard pem",
      "kid": "key_id",
      "x5t": "certificate thumprint for x.509 cert",
      "x5c": [
        "certificate chain"
      ]
    }
  ]
}
```

Untuk informasi selengkapnya tentang JWT, lihat [jwt.io](http://jwt.io).

------
#### [ Python ]

```
response = kendra.create_index(
    Name='user-context',
    Edition='ENTERPRISE_EDITION',
    RoleArn='arn:aws:iam::account id:role:/my-role',
    UserTokenConfigurationList=[
        {
            "JwtTokenTypeConfiguration": {
                "KeyLocation": "URL",
                "Issuer": "optional: specify the issuer url",
                "ClaimRegex": "optional: regex to validate claims in the token",
                "UserNameAttributeField": "optional: user",
                "GroupAttributeField": "optional: group",
                "SecretManagerArn": "arn:aws:secretsmanager:us-west-2:account id:secret:/my-user-context-secret"
            }
        }
    ],
    UserContextPolicy='USER_TOKEN'
)
```

------

# Menggunakan JSON
<a name="create-index-access-control-tokens-json"></a>

Contoh berikut menunjukkan cara menggunakan JSON untuk kontrol akses pengguna saat Anda membuat indeks.

**Awas**  
Token JSON adalah muatan yang tidak divalidasi. Ini hanya boleh digunakan ketika permintaan Amazon Kendra datang dari server tepercaya dan tidak pernah dari browser. 

------
#### [ Console ]

1. Pilih **Buat indeks** untuk mulai membuat indeks baru.

1. Pada **Tentukan detail indeks**, beri indeks Anda nama dan deskripsi. 

1. Untuk **IAM peran**, pilih peran atau pilih **Buat peran baru** dan tentukan nama peran untuk membuat peran baru. IAM Peran akan memiliki awalan "AmazonKendra-”. 

1. Biarkan bidang lain dengan defaultnya. Pilih **Berikutnya**.

1. Di halaman **Konfigurasikan kontrol akses pengguna**, di bawah **Pengaturan kontrol akses**, pilih **Ya** untuk menggunakan token untuk kontrol akses. 

1. Di bawah **Konfigurasi token**, pilih **JSON** sebagai **Jenis token**. 

1. Tentukan **nama Pengguna** yang akan digunakan dalam pemeriksaan ACL.

1. Tentukan satu atau lebih **Grup** untuk digunakan dalam pemeriksaan ACL.

1. Pilih **Berikutnya**.

1. Di halaman **Detail penyediaan**, pilih **Edisi Developer**.

1. Pilih **Buat** untuk membuat indeks Anda.

1. Tunggu indeks Anda dibuat. Amazon Kendra menyediakan perangkat keras untuk indeks Anda. Operasi ini dapat memakan waktu lama.

------
#### [ CLI ]

Untuk membuat indeks dengan AWS CLI menggunakan file input JSON, pertama buat file JSON dengan parameter yang Anda inginkan:

```
{
    "Name": "user-context",
    "Edition": "ENTERPRISE_EDITION",
    "RoleArn": "arn:aws:iam::account-id:role:/my-role",
    "UserTokenConfigurations": [
        {
            "JsonTokenTypeConfiguration": {
                "UserNameAttributeField": "user",
                "GroupAttributeField": "group"
            }
        }
    ],
    "UserContextPolicy": "USER_TOKEN"
}
```

Selanjutnya, panggil `create-index` menggunakan file input. Misalnya, jika nama file JSON Anda adalah `create-index-openid.json`, Anda dapat menggunakan yang berikut ini: 

```
aws kendra create-index --cli-input-json file://create-index-openid.json
```

Jika Anda tidak menggunakan Open ID untuk AWS IAM Identity Center, Anda dapat mengirimkan token dalam format JSON kepada kami. Jika demikian, Anda harus menentukan bidang mana dalam token JSON yang berisi nama pengguna dan bidang mana yang berisi grup. Nilai bidang grup harus berupa array string JSON. Misalnya, jika menggunakan SAML, token Anda akan seperti berikut:

```
{
     "username" : "user1", 
     "groups": [
        "group1", 
        "group2"
     ]
}
```

`TokenConfiguration` akan menentukan nama pengguna dan nama bidang grup:

```
{
    "UserNameAttributeField":"username",
    "GroupAttributeField":"groups"
}
```

------
#### [ Python ]

```
response = kendra.create_index(
    Name='user-context',
    Edition='ENTERPRISE_EDITION',
    RoleArn='arn:aws:iam::account-id:role:/my-role',
    UserTokenConfigurations=[
        {
            "JwtTokenTypeConfiguration": {
                "UserNameAttributeField": "user",
                "GroupAttributeField": "group",
            }
        }
    ],
    UserContextPolicy='USER_TOKEN'
)
```

------