

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 일괄 업로드를 사용하여 인덱스에 직접 문서 추가
<a name="in-adding-documents"></a>

[BatchPutDocument](https://docs.aws.amazon.com/kendra/latest/APIReference/API_BatchPutDocument.html) API를 사용하여 인덱스에 직접 문서를 추가할 수 있습니다. 콘솔을 사용하여 문서를 직접 추가할 수 없습니다. 콘솔을 사용하는 경우 데이터 소스에 연결하여 인덱스에 문서를 추가합니다. 문서는 S3 버킷에서 추가하거나 이진 데이터로 제공할 수 있습니다. 에서 지원하는 문서 유형 목록은 문서 유형을 Amazon Kendra 참조하세요. [https://docs.aws.amazon.com/kendra/latest/dg/index-document-types.html](https://docs.aws.amazon.com/kendra/latest/dg/index-document-types.html) 

`BatchPutDocument`를 사용하여 인덱스에 문서를 추가하는 것은 비동기식 작업입니다. `BatchPutDocument` API를 호출한 후에는 [BatchGetDocumentStatus](https://docs.aws.amazon.com/kendra/latest/APIReference/API_BatchGetDocumentStatus) API를 사용하여 문서 인덱싱 진행 상황을 모니터링합니다. 문서 ID 목록을 사용하여 `BatchGetDocumentStatus` API를 호출하면 문서 상태가 반환됩니다. 문서 상태가 `INDEXED` 또는 `FAILED`이면 문서 처리가 완료된 것입니다. 상태가 `FAILED`인 경우 `BatchGetDocumentStatus` API는 문서를 인덱싱할 수 없는 이유를 반환합니다.

문서 수집 프로세스 중에 콘텐츠와 문서 메타데이터나 필드 또는 속성을 변경하려면 [Amazon Kendra 사용자 지정 문서 보강](https://docs.aws.amazon.com/kendra/latest/dg/custom-document-enrichment.html)을 참조하세요. 사용자 지정 데이터 소스를 사용하려는 경우 `BatchPutDocument` API를 사용하여 제출하는 각 문서에는 데이터 소스 ID와 실행 ID가 속성 또는 필드로 필요합니다. 자세한 내용은 [사용자 지정 데이터 소스의 필수 속성](https://docs.aws.amazon.com/kendra/latest/dg/data-source-custom.html#custom-required-attributes)을 참조하세요.

**참고**  
각 문서 ID는 인덱스별로 고유해야 합니다. 고유한 ID로 문서를 인덱싱하는 데이터 소스를 만든 다음 `BatchPutDocument` API를 사용하여 동일한 문서를 인덱싱할 수 없으며 그 반대의 경우도 마찬가지입니다. 데이터 소스를 삭제한 다음 `BatchPutDocument` API를 사용하여 동일한 문서를 인덱싱하거나 그 반대로 할 수 있습니다. 동일한 문서 세트에 `BatchPutDocument` 및 `BatchDeleteDocument` API를 Amazon Kendra 데이터 소스 커넥터와 함께 사용하면 데이터와 일치하지 않을 수 있습니다. 대신, [Amazon Kendra 사용자 지정 데이터 소스 커넥터](https://docs.aws.amazon.com/kendra/latest/dg/data-source-custom.html)를 사용하는 것이 좋습니다.

다음 개발자 가이드 문서는 문서를 인덱스에 직접 추가하는 방법을 보여줍니다.

**Topics**
+ [BatchPutDocument API를 사용하여 문서 추가](#in-adding-binary-doc)
+ [S3 버킷에서 문서 추가](#in-adding-plain-text)

## BatchPutDocument API를 사용하여 문서 추가
<a name="in-adding-binary-doc"></a>

다음 예제에서는 [BatchPutDocument](https://docs.aws.amazon.com/kendra/latest/APIReference/API_BatchPutDocument)를 호출하여 인덱스에 텍스트 blob을 추가합니다. `BatchPutDocument` API를 사용하여 인덱스에 문서를 직접 추가할 수 있습니다. 에서 지원하는 문서 유형 목록은 문서 유형을 Amazon Kendra 참조하세요. [https://docs.aws.amazon.com/kendra/latest/dg/index-document-types.html](https://docs.aws.amazon.com/kendra/latest/dg/index-document-types.html) 

 AWS CLI 및 SDKs. [https://docs.aws.amazon.com/kendra/latest/dg/create-index.html](https://docs.aws.amazon.com/kendra/latest/dg/create-index.html) CLI 및 SDK를 설정하려면 [Amazon Kendra설정](https://docs.aws.amazon.com/kendra/latest/dg/setup.html)을 참조하세요.

**참고**  
인덱스에 추가된 파일은 UTF-8 인코딩된 바이트 스트림에 있어야 합니다.

다음 예제에서는 UTF-8 인코딩 형식의 텍스트가 인덱스에 추가됩니다.

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

에서 다음 명령을 AWS Command Line Interface사용합니다. 이 명령은 Linux 및 macOS용으로 형식이 지정됩니다. Windows를 사용하는 경우 Unix 줄 연속 문자(\\)를 캐럿(^)으로 바꿉니다.

```
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));
    }
}
```

------

## S3 버킷에서 문서 추가
<a name="in-adding-plain-text"></a>

[BatchPutDocument](https://docs.aws.amazon.com/kendra/latest/APIReference/API_BatchPutDocument) API를 사용하여 Amazon S3 버킷에서 인덱스에 직접 문서를 추가할 수 있습니다. 동일한 호출에 문서를 10개까지 추가할 수 있습니다. S3 버킷을 사용하는 경우 문서에 포함된 버킷에 액세스할 수 있는 권한을 IAM 역할에 제공해야 합니다. `RoleArn` 파라미터에 역할을 지정합니다.

[BatchPutDocument](https://docs.aws.amazon.com/kendra/latest/APIReference/API_BatchPutDocument) API를 사용하여 Amazon S3 버킷에서 문서를 추가하는 작업은 일회성 작업입니다. 인덱스를 버킷의 콘텐츠와 동기화된 상태로 유지하려면 Amazon S3 데이터 소스를 생성합니다. 자세한 내용은 [Amazon S3 데이터 소스](https://docs.aws.amazon.com/kendra/latest/dg/data-source-s3.html)를 참조하세요.

 AWS CLI 및 SDKs. [https://docs.aws.amazon.com/kendra/latest/dg/create-index.html](https://docs.aws.amazon.com/kendra/latest/dg/create-index.html) CLI 및 SDK를 설정하려면 [Amazon Kendra설정](https://docs.aws.amazon.com/kendra/latest/dg/setup.html)을 참조하세요. S3 버킷 생성에 대한 자세한 내용은 [Amazon Simple Storage Service 설명서](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)를 참조하세요.

다음 예제에서는 `BatchPutDocument` API를 사용하여 두 개의 Microsoft Word 문서를 인덱스에 추가합니다.

------
#### [ 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));
    }
}
```

------