

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# インデックスの作成
<a name="create-index"></a>

コンソールを使用して、または [CreateIndex](https://docs.aws.amazon.com/kendra/latest/APIReference/API_CreateIndex.html) API を呼び出して、インデックスを作成できます。API で AWS Command Line Interface (AWS CLI) または SDK を使用できます。インデックスを作成したら、ドキュメントをインデックスに直接追加したり、データソースからドキュメントを追加したりできます。

インデックスを作成するには、インデックスがアクセスする () ロールの Amazon リソースネーム AWS Identity and Access Management (ARN IAM) を指定する必要があります CloudWatch。詳細については、「[IAM roles for indexes](https://docs.aws.amazon.com/kendra/latest/dg/iam-roles.html#iam-roles-index)」を参照してください。

以下のタブでは、 を使用してインデックスを作成する手順と AWS マネジメントコンソール、、Python AWS CLIおよび Java SDKs を使用するためのコード例を示します。

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

**インデックスを作成するには**

1.  AWS マネジメントコンソールにサインインし、[https://console.aws.amazon.com/kendra/](https://console.aws.amazon.com/kendra/) で Amazon Kendra コンソールを開きます。

1. **[インデックス]** セクションで、**[インデックスの作成]** を選択します。

1. **[インデックスの詳細の指定]** で、インデックスに名前と説明を付けます。

1. **IAM ロール**で IAM ロールを指定します。ロールを見つけるには、「kendra」という単語を含むアカウントでロールから選択するか、別のロールの名前を入力します。ロールが必要とするアクセス許可の詳細については、「[IAM roles for indexes](https://docs.aws.amazon.com/kendra/latest/dg/iam-roles.html#iam-roles-index)」を参照してください。

1. **[次へ]** を選択します。

1. **[ユーザーアクセスコントロールの設定]** ページで、**[次へ]** をクリックします。インデックスを作成した後、アクセス制御にトークンを使用するようにインデックスを更新できます。詳細については、「[Controlling access to documents](https://docs.aws.amazon.com/kendra/latest/dg/create-index-access-control.html)」を参照してください。

1. **[プロビジョニングの詳細]** ページで、**[作成]** を選択します。

1. インデックスが作成されるまでにしばらく時間がかかることがあります。インデックスのリストをチェックして、インデックスの作成の進行状況を確認します。インデックスのステータスが `ACTIVE` になると、インデックスが使用可能になります。

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

**インデックスを作成するには**

1. 以下のコマンドを使用してインデックスを作成します。は、 Amazon Kendra アクションを実行できる IAM ロールの Amazon リソースネーム (ARN) `role-arn`である必要があります。詳細については、「[IAM roles](https://docs.aws.amazon.com/kendra/latest/dg/iam-roles.html)」を参照してください。

   次のコマンドは、Linux と macOS 用にフォーマットされています。Windows を使用している場合、Unix 行連結記号 (\\) をキャレット (^) に置き換えます。

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

1. インデックスが作成されるまでにしばらく時間がかかることがあります。インデックスの状態をチェックするには、以下のコマンドで `create-index` によって返されるインデックス ID を使用します。インデックスのステータスが `ACTIVE` になると、インデックスが使用可能になります。

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

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

**インデックスを作成するには**
+ 以下に示すコード例で、次の変数の値を指定します。
  + `description` - 作成するインデックスの説明。これはオプションです。
  + `index_name` - 作成するインデックスの名前。
  + `role_arn`— Amazon Kendra APIs を実行できるロールの Amazon リソースネーム (ARN)。詳細については、「[IAM roles](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 ]

**インデックスを作成するには**
+ 以下に示すコード例で、次の変数の値を指定します。
  + `description` - 作成するインデックスの説明。これはオプションです。
  + `index_name` - 作成するインデックスの名前。
  + `role_arn`— Amazon Kendra APIs を実行できるロールの Amazon リソースネーム (ARN)。詳細については、「[IAM roles](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.");
      }
  }
  ```

------

インデックスを作成したら、そのインデックスにドキュメントを追加します。これらは直接追加することも、定期的にインデックスを更新するデータソースを作成することもできます。

**Topics**
+ [バッチアップロードを使用したドキュメントのインデックスへの直接追加](in-adding-documents.md)
+ [よくある質問 (FAQ) のインデックスへの追加](in-creating-faq.md)
+ [カスタムドキュメントフィールドの作成](custom-attributes.md)
+ [トークンによるドキュメントへのアクセスの制御　](create-index-access-control.md)