

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

# 자습서: Amazon Kendra를 사용하여 메타데이터가 풍부한 지능형 검색 솔루션 구축
<a name="tutorial-search-metadata"></a>

이 자습서에서는 [Amazon Kendra](https://aws.amazon.com/kendra/), [Amazon Comprehend](https://aws.amazon.com/comprehend/), [Amazon Simple Storage Service](https://aws.amazon.com/s3/) (S3), [AWS CloudShell](https://aws.amazon.com/cloudshell/)를 사용하여 엔터프라이즈 데이터를 위한 메타데이터가 풍부한 자연어 기반의 지능형 검색 솔루션을 구축하는 방법을 보여줍니다.

Amazon Kendra는 비정형 자연어 데이터 리포지토리에 대한 검색 인덱스를 구축할 수 있는 지능형 검색 서비스입니다. 고객이 관련 답변을 더 쉽게 찾고 필터링할 수 있도록 Amazon Comprehend를 사용하여 데이터에서 메타데이터를 추출하고 이를 Amazon Kendra 검색 인덱스로 수집할 수 있습니다.

Amazon Comprehend는 개체에 대한 식별이 가능한 자연어 처리(NLP) 서비스입니다. 개체는 데이터에 있는 사람, 장소, 위치, 조직 및 객체에 대한 참조입니다.

이 자습서에서는 뉴스 기사의 샘플 데이터 세트를 사용하여 항목을 추출하고 메타데이터로 변환한 다음 Amazon Kendra 인덱스로 수집하여 검색을 실행합니다. 추가된 메타데이터를 사용하면 이러한 개체의 하위 집합을 사용하여 검색 결과를 필터링하여 검색 정확도를 높일 수 있습니다. 이 자습서를 따라하면 특별한 기계 학습 지식 없이도 엔터프라이즈 데이터를 위한 검색 솔루션을 만드는 방법을 배울 수 있습니다.

**이 자습서에서는 다음 단계를 사용하여 검색 솔루션을 구축하는 방법을 보여줍니다.**

1. Amazon S3에 뉴스 기사의 샘플 데이터 세트를 저장합니다.

1. Amazon Comprehend를 사용하여 데이터에서 개체를 추출합니다.

1. Python 3 스크립트를 실행하여 개체를 Amazon Kendra 인덱스 메타데이터 형식으로 변환하고 이 메타데이터를 S3에 저장합니다.

1. Amazon Kendra 검색 인덱스를 생성하고 데이터와 메타데이터를 수집합니다.

1. 검색 인덱스를 쿼리합니다.

**다음 다이어그램은 워크플로를 보여줍니다.**

![\[자습서에 나와 있는 절차의 워크플로 다이어그램.\]](http://docs.aws.amazon.com/ko_kr/kendra/latest/dg/images/tutorial-workflow.png)


**이 자습서를 완료하는 데 걸리는 예상 시간:** 1시간

**예상 비용:**이 자습서의 일부 작업에는 AWS 계정에 요금이 부과됩니다. 각 서비스의 비용에 대한 자세한 내용은 [Amazon S3](https://aws.amazon.com/s3/pricing/), [Amazon Comprehend](https://aws.amazon.com/comprehend/pricing/), [AWS CloudShell](https://aws.amazon.com/cloudshell/pricing/), [Amazon Kendra](https://aws.amazon.com/kendra/pricing/)의 요금 페이지를 참조하세요.

**Topics**
+ [사전 조건](#tutorial-search-metadata-prereqs)
+ [1단계: Amazon S3에 문서 추가](tutorial-search-metadata-add-documents.md)
+ [2단계: Amazon Comprehend에서 개체 분석 작업 실행](tutorial-search-metadata-entities-analysis.md)
+ [3단계: 개체 분석 출력을 Amazon Kendra 메타데이터로 형식 지정](tutorial-search-metadata-format-output.md)
+ [4단계: Amazon Kendra 인덱스를 생성하고 메타데이터를 수집](tutorial-search-metadata-create-index-ingest.md)
+ [5단계: Amazon Kendra 인덱스 쿼리](tutorial-search-metadata-query-kendra.md)
+ [6단계: 정리](tutorial-search-metadata-cleanup.md)

## 사전 조건
<a name="tutorial-search-metadata-prereqs"></a>

이 자습서를 완료하려면 다음 리소스가 필요합니다.
+  AWS 계정. AWS 계정이 없는 경우 [Amazon Kendra 설정](https://docs.aws.amazon.com/kendra/latest/dg/setup.html#aws-kendra-set-up-aws-account)의 단계에 따라 AWS 계정을 설정합니다.
+ Windows, macOS 또는 Linux를 실행하며 AWS Management Console에 액세스할 수 있는 개발 컴퓨터. 자세한 내용은 [AWS 관리 콘솔 구성을 참조하세요](https://docs.aws.amazon.com/awsconsolehelpdocs/latest/gsg/working-with-console.html).
+ [AWS Identity and Access Management](https://aws.amazon.com/iam/) (IAM) 사용자. 계정에 IAM 사용자 및 그룹을 설정하는 방법을 알아보려면 *IAM 사용 설명서*의 [시작하기](https://docs.aws.amazon.com/IAM/latest/UserGuide/getting-started.html) 섹션을 참조하세요.

  를 사용하는 경우 다음 정책을 IAM 사용자에게 연결하여이 자습서를 완료하는 데 필요한 기본 권한을 부여 AWS Command Line Interface해야 합니다.

  

  

### (AWS CLI 만 해당) IAM 권한 정책
<a name="permissions-policy"></a>

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "iam:GetUserPolicy",
          "iam:DeletePolicy",
          "iam:CreateRole",
          "iam:AttachRolePolicy",
          "iam:DetachRolePolicy",
          "iam:AttachUserPolicy",
          "iam:DeleteRole",
          "iam:CreatePolicy",
          "iam:GetRolePolicy",
          "s3:CreateBucket",
          "s3:ListBucket",
          "s3:DeleteObject",
          "s3:DeleteBucket",
          "s3:PutObject",
          "s3:GetObject",
          "s3:ListAllMyBuckets",
          "comprehend:StartEntitiesDetectionJob",
          "comprehend:BatchDetectEntities",
          "comprehend:ListEntitiesDetectionJobs",
          "comprehend:DescribeEntitiesDetectionJob",
          "comprehend:StopEntitiesDetectionJob",
          "comprehend:DetectEntities",
          "kendra:Query",
          "kendra:StopDataSourceSyncJob",
          "kendra:CreateDataSource",
          "kendra:BatchPutDocument",
          "kendra:DeleteIndex",
          "kendra:StartDataSourceSyncJob",
          "kendra:CreateIndex",
          "kendra:ListDataSources",
          "kendra:UpdateIndex",
          "kendra:DescribeIndex",
          "kendra:DeleteDataSource",
          "kendra:ListIndices",
          "kendra:ListDataSourceSyncJobs",
          "kendra:DescribeDataSource",
          "kendra:BatchDeleteDocument"
        ],
        "Resource": "*"
      },
      {
        "Sid": "iamPassRole",
        "Effect": "Allow",
        "Action": "iam:PassRole",
        "Resource": "*",
        "Condition": {
          "StringEquals": {
            "iam:PassedToService": [
              "s3.amazonaws.com",
              "comprehend.amazonaws.com",
              "kendra.amazonaws.com"
            ]
          }
        }
      }
    ]
  }
  ```

------

  자세한 정보는 [IAM 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) 및 [IAM 자격 증명 권한 추가 및 제거](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-attach-detach.html) 섹션을 참조하세요.
+ [AWS 리전 서비스 목록](https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/). 지연 시간을 줄이려면 Amazon Comprehend와 Amazon Kendra에서 모두 지원하는 지리적 위치와 가장 가까운 AWS 리전을 선택해야 합니다.
+ (선택 사항) [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/overview.html). 이 자습서에서는 암호화를 사용하지 않지만 특정 사용 사례에 맞는 암호화 모범 사례를 사용하는 것이 좋습니다.
+ (선택 사항) [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html). 이 자습서에서는 VPC를 사용하지 않지만 VPC 모범 사례를 사용하여 특정 사용 사례의 데이터 보안을 보장하는 것이 좋습니다.

# 1단계: Amazon S3에 문서 추가
<a name="tutorial-search-metadata-add-documents"></a>

데이터 세트에 대해 Amazon Comprehend 개체 분석 작업을 실행하기 전에 데이터, 메타데이터 및 Amazon Comprehend 개체 분석 출력을 호스팅할 Amazon S3 버킷을 생성합니다.

**Topics**
+ [샘플 데이터 세트 다운로드](#tutorial-search-metadata-add-documents-download-extract)
+ [Amazon S3 버킷 생성](#tutorial-search-metadata-add-documents-create-bucket)
+ [S3 버킷에 데이터 및 메타데이터 폴더 생성](#tutorial-search-metadata-add-documents-data-metadata)
+ [입력 데이터 로드](#tutorial-search-metadata-add-documents-upload-data)

## 샘플 데이터 세트 다운로드
<a name="tutorial-search-metadata-add-documents-download-extract"></a>

Amazon Comprehend가 데이터에 대한 개체 분석 작업을 실행하려면 먼저 데이터 세트를 다운로드하고 추출한 다음 S3 버킷에 업로드해야 합니다.

### 데이터 세트를 다운로드하고 추출하려면 (콘솔)
<a name="tutorial-search-metadata-download-extract-console"></a>

1. 디바이스에 [tutorial-dataset.zip](https://docs.aws.amazon.com/kendra/latest/dg/samples/tutorial-dataset.zip) 폴더를 다운로드합니다.

1. `tutorial-dataset` 폴더를 추출하여 `data` 폴더에 접근합니다.

### 데이터 세트를 다운로드하고 추출하려면 (터미널)
<a name="tutorial-search-metadata-download-extract-cli"></a>

1. `tutorial-dataset`를 다운로드하려면 터미널 창에서 다음 명령을 실행합니다.

------
#### [ Linux ]

   ```
   curl -o path/tutorial-dataset.zip https://docs.aws.amazon.com/kendra/latest/dg/samples/tutorial-dataset.zip
   ```

   위치:
   + *path/*는 zip 폴더를 저장하려는 위치의 로컬 파일 경로입니다.

------
#### [ macOS ]

   ```
   curl -o path/tutorial-dataset.zip https://docs.aws.amazon.com/kendra/latest/dg/samples/tutorial-dataset.zip
   ```

   위치:
   + *path/*는 zip 폴더를 저장하려는 위치의 로컬 파일 경로입니다.

------
#### [ Windows ]

   ```
   curl -o path/tutorial-dataset.zip https://docs.aws.amazon.com/kendra/latest/dg/samples/tutorial-dataset.zip
   ```

   위치:
   + *path/*는 zip 폴더를 저장하려는 위치의 로컬 파일 경로입니다.

------

1. zip 폴더에서 데이터를 추출하려면 터미널 창에서 다음 명령을 실행합니다.

------
#### [ Linux ]

   ```
   unzip path/tutorial-dataset.zip -d path/
   ```

   위치:
   + *path/*는 저장된 zip 폴더의 로컬 파일 경로입니다.

------
#### [ macOS ]

   ```
   unzip path/tutorial-dataset.zip -d path/
   ```

   위치:
   + *path/*는 저장된 zip 폴더의 로컬 파일 경로입니다.

------
#### [ Windows ]

   ```
   tar -xf path/tutorial-dataset.zip -C path/
   ```

   위치:
   + *path/*는 저장된 zip 폴더의 로컬 파일 경로입니다.

------

이 단계가 끝나면 압축을 푼 파일을 `tutorial-dataset`라는 이름의 압축 해제 폴더에 저장해야 합니다. 이 폴더에는 Apache 2.0 오픈 소스 속성이 있는 `README` 파일과 이 자습서의 데이터 세트가 들어 있는 `data` 폴더가 포함되어 있습니다. 데이터 세트는 `.story` 확장자를 가진 100개의 파일로 구성되어 있습니다.

## Amazon S3 버킷 생성
<a name="tutorial-search-metadata-add-documents-create-bucket"></a>

샘플 데이터 폴더를 다운로드하고 추출한 후 Amazon S3 버킷에 저장합니다.

**중요**  
Amazon S3 버킷의 이름은 모든 AWS에 대해 고유해야 합니다.

### Amazon S3 버킷 생성(콘솔)
<a name="tutorial-search-metadata-create-bucket-console"></a>

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/) Amazon S3 콘솔을 엽니다.

1. **버킷**에서 **버킷 생성**을 선택합니다.

1. [**버킷 이름(Bucket name)**]에 고유한 이름을 입력합니다.

1. **리전**에서 버킷을 생성할 AWS 리전을 선택합니다.
**참고**  
Amazon Comprehend와 Amazon Kendra를 모두 지원하는 리전을 선택해야 합니다. 버킷을 생성한 후에는 버킷의 리전을 변경할 수 없습니다.

1. **이 버킷의 퍼블릭 액세스 차단 설정**, **버킷 버전 관리** 및 **태그**의 기본 설정을 유지하세요.

1. **기본 암호화**의 경우, **비활성화**를 선택합니다.

1. **고급 설정**의 기본 설정을 유지합니다.

1. 버킷 구성을 검토한 다음 **버킷 생성**을 선택합니다.

### S3 버킷을 생성하려면 (AWS CLI)
<a name="tutorial-search-metadata-create-bucket-cli"></a>

1. S3 버킷을 생성하려면 AWS CLI에서 [create-bucket](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3control/create-bucket.html) 명령을 사용합니다.

------
#### [ Linux ]

   ```
   aws s3api create-bucket \
           --bucket amzn-s3-demo-bucket \
           --region aws-region \
           --create-bucket-configuration LocationConstraint=aws-region
   ```

   위치:
   + 버킷의 이름은 amzn-s3-demo-bucket입니다.
   + *aws-region*은 버킷을 생성하려는 리전입니다.

------
#### [ macOS ]

   ```
   aws s3api create-bucket \
           --bucket amzn-s3-demo-bucket \
           --region aws-region \
           --create-bucket-configuration LocationConstraint=aws-region
   ```

   위치:
   + 버킷의 이름은 amzn-s3-demo-bucket입니다.
   + *aws-region*은 버킷을 생성하려는 리전입니다.

------
#### [ Windows ]

   ```
   aws s3api create-bucket ^
           --bucket amzn-s3-demo-bucket ^
           --region aws-region ^
           --create-bucket-configuration LocationConstraint=aws-region
   ```

   위치:
   + 버킷의 이름은 amzn-s3-demo-bucket입니다.
   + *aws-region*은 버킷을 생성하려는 리전입니다.

------
**참고**  
Amazon Comprehend와 Amazon Kendra를 모두 지원하는 리전을 선택해야 합니다. 버킷을 생성한 후에는 버킷의 리전을 변경할 수 없습니다.

1. 버킷이 성공적으로 생성되었는지 확인하려면 [list](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/ls.html) 명령을 사용하세요.

------
#### [ Linux ]

   ```
   aws s3 ls
   ```

------
#### [ macOS ]

   ```
   aws s3 ls
   ```

------
#### [ Windows ]

   ```
   aws s3 ls
   ```

------

## S3 버킷에 데이터 및 메타데이터 폴더 생성
<a name="tutorial-search-metadata-add-documents-data-metadata"></a>

S3 버킷을 생성한 후 그 안에 데이터 및 메타데이터 폴더를 생성합니다.

### S3 버킷에서 폴더 생성(콘솔)
<a name="tutorial-search-metadata-create-folders-console"></a>

1. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

1. **버킷**에서 버킷 목록에서 해당하는 버킷의 이름을 클릭합니다.

1. **객체** 탭에서 **폴더 생성**을 선택합니다.

1. 새 폴더 이름으로 **data**을 입력합니다.

1. 암호화 설정에서 **비활성화**를 선택합니다.

1. **폴더 생성**을 선택합니다.

1. 3\$16단계를 반복하여 Amazon Kendra 메타데이터를 저장할 다른 폴더를 생성하고 4단계에서 생성한 폴더의 이름을 **metadata**로 지정합니다.

### S3 버킷에서 폴더 생성(AWS CLI)
<a name="tutorial-search-metadata-create-folders-cli"></a>

1. S3 버킷에 `data` 폴더를 생성하려면 AWS CLI에서 [put-object](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object.html) 명령을 사용합니다.

------
#### [ Linux ]

   ```
   aws s3api put-object \
           --bucket amzn-s3-demo-bucket \
           --key data/
   ```

   위치:
   + 버킷의 이름은 amzn-s3-demo-bucket입니다.

------
#### [ macOS ]

   ```
   aws s3api put-object \
           --bucket amzn-s3-demo-bucket \
           --key data/
   ```

   위치:
   + 버킷의 이름은 amzn-s3-demo-bucket입니다.

------
#### [ Windows ]

   ```
   aws s3api put-object ^
           --bucket amzn-s3-demo-bucket ^
           --key data/
   ```

   위치:
   + 버킷의 이름은 amzn-s3-demo-bucket입니다.

------

1. S3 버킷에 `metadata` 폴더를 생성하려면 AWS CLI에서 [put-object](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3api/put-object.html) 명령을 사용합니다.

------
#### [ Linux ]

   ```
   aws s3api put-object \
           --bucket amzn-s3-demo-bucket \
           --key metadata/
   ```

   위치:
   + 버킷의 이름은 amzn-s3-demo-bucket입니다.

------
#### [ macOS ]

   ```
   aws s3api put-object \
           --bucket amzn-s3-demo-bucket \
           --key metadata/
   ```

   위치:
   + 버킷의 이름은 amzn-s3-demo-bucket입니다.

------
#### [ Windows ]

   ```
   aws s3api put-object ^
           --bucket amzn-s3-demo-bucket ^
           --key metadata/
   ```

   위치:
   + 버킷의 이름은 amzn-s3-demo-bucket입니다.

------

1. 폴더가 성공적으로 생성되었는지 확인하려면 [list](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/ls.html) 명령어를 사용하여 버킷의 콘텐츠를 확인하세요.

------
#### [ Linux ]

   ```
   aws s3 ls s3://amzn-s3-demo-bucket/
   ```

   위치:
   + 버킷의 이름은 amzn-s3-demo-bucket입니다.

------
#### [ macOS ]

   ```
   aws s3 ls s3://amzn-s3-demo-bucket/
   ```

   위치:
   + 버킷의 이름은 amzn-s3-demo-bucket입니다.

------
#### [ Windows ]

   ```
   aws s3 ls s3://amzn-s3-demo-bucket/
   ```

   위치:
   + 버킷의 이름은 amzn-s3-demo-bucket입니다.

------

## 입력 데이터 로드
<a name="tutorial-search-metadata-add-documents-upload-data"></a>

데이터 및 메타데이터 폴더를 만든 후 샘플 데이터 세트를 `data` 폴더에 업로드합니다.

### 샘플 데이터 세트를 데이터 폴더에 업로드하려면 (콘솔)
<a name="tutorial-search-metadata-upload-data-console"></a>

1. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

1. **버킷**에서 버킷 목록에서 버킷의 이름을 클릭한 다음 `data`를 클릭합니다.

1. **업로드**를 선택한 후 **파일 추가**를 선택합니다.

1. 대화 상자에서 로컬 디바이스의 `tutorial-dataset` 폴더 내 `data` 폴더로 이동하여 모든 파일을 선택한 다음 **열기**를 선택합니다.

1. **대상**, **권한** 및 **속성**에 대한 기본 설정을 유지합니다.

1. **업로드**를 선택합니다.

### 샘플 데이터 세트를 데이터 폴더에 업로드하려면 (AWS CLI)
<a name="tutorial-search-metadata-upload-data-cli"></a>

1. 샘플 데이터를 `data` 폴더에 업로드하려면 AWS CLI에서 [copy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/cp.html) 명령어를 사용하세요.

------
#### [ Linux ]

   ```
   aws s3 cp path/tutorial-dataset/data s3://amzn-s3-demo-bucket/data/ --recursive
   ```

   위치:
   + *path/*는 디바이스에 있는 `tutorial-dataset` 폴더의 파일 경로입니다.
   + 버킷의 이름은 amzn-s3-demo-bucket입니다.

------
#### [ macOS ]

   ```
   aws s3 cp path/tutorial-dataset/data s3://amzn-s3-demo-bucket/data/ --recursive
   ```

   위치:
   + *path/*는 디바이스에 있는 `tutorial-dataset` 폴더의 파일 경로입니다.
   + 버킷의 이름은 amzn-s3-demo-bucket입니다.

------
#### [ Windows ]

   ```
   aws s3 cp path/tutorial-dataset/data s3://amzn-s3-demo-bucket/data/ --recursive
   ```

   위치:
   + *path/*는 디바이스에 있는 `tutorial-dataset` 폴더의 파일 경로입니다.
   + 버킷의 이름은 amzn-s3-demo-bucket입니다.

------

1. 데이터 세트 파일이 `data` 폴더에 성공적으로 업로드되었는지 확인하려면 AWS CLI에서 [list](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/ls.html) 명령어를 사용하세요.

------
#### [ Linux ]

   ```
   aws s3 ls s3://amzn-s3-demo-bucket/data/
   ```

   위치:
   + S3 버킷의 이름은 amzn-s3-demo-bucket입니다.

------
#### [ macOS ]

   ```
   aws s3 ls s3://amzn-s3-demo-bucket/data/
   ```

   위치:
   + S3 버킷의 이름은 amzn-s3-demo-bucket입니다.

------
#### [ Windows ]

   ```
   aws s3 ls s3://amzn-s3-demo-bucket/data/
   ```

   위치:
   + S3 버킷의 이름은 amzn-s3-demo-bucket입니다.

------

이 단계가 끝나면 `data` 폴더 내에 데이터 세트가 저장된 S3 버킷과 Amazon Kendra 메타데이터를 저장할 빈 `metadata` 폴더가 생깁니다.

# 2단계: Amazon Comprehend에서 개체 분석 작업 실행
<a name="tutorial-search-metadata-entities-analysis"></a>

샘플 데이터 세트를 S3 버킷에 저장한 후 Amazon Comprehend 개체 분석 작업을 실행하여 문서에서 개체를 추출합니다. 이러한 개체는 Amazon Kendra 사용자 지정 속성을 형성하고 인덱스에서 검색 결과를 필터링하는 데 도움이 됩니다. 자세한 내용은 [개체 감지](https://docs.aws.amazon.com/comprehend/latest/dg/how-entities.html)를 참조하세요.

**Topics**
+ [Amazon Comprehend 개체 분석 작업 실행](#tutorial-search-metadata-entities-analysis-job)

## Amazon Comprehend 개체 분석 작업 실행
<a name="tutorial-search-metadata-entities-analysis-job"></a>

데이터 세트에서 개체를 추출하려면 Amazon Comprehend 개체 분석 작업을 실행합니다.

이 단계에서 AWS CLI를 사용하는 경우 먼저 Amazon Comprehend에 대한 AWS IAM 역할 및 정책을 생성하고 연결한 다음 엔터티 분석 작업을 실행합니다. 샘플 데이터에서 개체 분석 작업을 실행하려면 Amazon Comprehend에 다음이 필요합니다.
+ 신뢰할 수 있는 엔터티로 인식하는 AWS Identity and Access Management (IAM) 역할
+ S3 버킷에 액세스할 수 있는 권한을 부여하는 AWS IAM 역할에 연결된 IAM 정책

자세한 내용은 [Amazon Comprehend에서 IAM을 사용하는 방법](https://docs.aws.amazon.com/comprehend/latest/dg/security_iam_service-with-iam.html) 및 [Amazon Comprehend의 자격 증명 기반 정책](https://docs.aws.amazon.com/comprehend/latest/dg/security_iam_id-based-policy-examples.html)을 참조하세요.

### Amazon Comprehend 개체 분석 작업을 실행하려면 (콘솔)
<a name="tutorial-search-metadata-entities-analysis-console"></a>

1. [https://console.aws.amazon.com/comprehend/](https://console.aws.amazon.com/comprehend/)에서 Amazon Comprehend 콘솔을 엽니다.
**중요**  
Amazon S3 버킷을 생성한 리전과 동일한 리전에 있는지 확인합니다. 다른 리전에 있는 경우 상단 탐색 모음의 AWS 리전 선택기에서 S3 버킷을 생성한 리전을 선택합니다. **** 

1. **Amazon Comprehend 시작**을 선택합니다.

1.  왼쪽 탐색 창에서 **분석 작업**을 선택합니다.

1.  **작업 생성**을 선택합니다.

1. **작업 설정** 섹션에서 다음을 수행합니다.

   1.  **이름**에 **data-entities-analysis**를 입력합니다.

   1. **분석 유형**에서 **개체**를 선택합니다.

   1. **언어**에서 **영어**를 선택합니다.

   1. **작업 암호화**를 끈 상태로 둡니다.

1. **입력 데이터** 섹션에서 다음을 수행합니다.

   1. **데이터 소스**로 **내 문서**를 선택합니다.

   1. **S3 위치**의 경우 **S3 찾아보기**를 선택합니다.

   1. **리소스 선택**의 경우, 버킷 목록에서 해당하는 버킷의 이름을 클릭합니다.

   1. **객체**의 경우 `data` 옵션 버튼을 선택하고 **선택**을 선택합니다.

   1. **입력 형식**으로 **파일 하나에 문서 하나** 선택합니다.

1. **출력 데이터** 섹션에서 다음을 수행합니다.

   1. **S3 위치**에서 **S3 찾아보기**를 선택한 다음 버킷 목록에서 버킷에 대한 옵션 상자를 선택하고 **선택**을 선택합니다.

   1. **암호화**를 끈 상태로 둡니다.

1. **권한 연결** 섹션에서 다음을 수행합니다.

   1. **IAM 역할**에서 **IAM 역할 생성**을 선택합니다.

   1. **액세스 권한**은 **입력 및 출력 S3 버킷**을 선택합니다.

   1. **이름 접미사**에 **comprehend-role**을 입력합니다. 이 역할은 Amazon S3 버킷에 대한 액세스를 제공합니다.

1. 기본 **VPC 설정**을 유지합니다.

1. **작업 생성**을 선택합니다.

### Amazon Comprehend 개체 분석 작업을 실행하려면 (AWS CLI)
<a name="tutorial-search-metadata-entities-analysis-cli"></a>

1. 신뢰할 수 있는 개체로 인식되는 Amazon Comprehend용 IAM 역할을 생성하고 연결하려면 다음을 수행하세요.

   1. 다음 신뢰 정책을 로컬 디바이스의 텍스트 편집기에서 `comprehend-trust-policy.json`이라는 JSON 파일로 저장합니다.

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
              "Service": "comprehend.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
          }
        ]
      }
      ```

------

   1. `comprehend-role`라는 IAM 역할을 생성하고 저장된 `comprehend-trust-policy.json` 파일을 첨부하려면 [create-role](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-role.html) 명령을 사용합니다.

------
#### [ Linux ]

      ```
      aws iam create-role \
                --role-name comprehend-role \
                --assume-role-policy-document file://path/comprehend-trust-policy.json
      ```

      위치:
      + *path/*는 로컬 디바이스에 있는 `comprehend-trust-policy.json`의 파일 경로입니다.

------
#### [ macOS ]

      ```
      aws iam create-role \
                --role-name comprehend-role \
                --assume-role-policy-document file://path/comprehend-trust-policy.json
      ```

      위치:
      + *path/*는 로컬 디바이스에 있는 `comprehend-trust-policy.json`의 파일 경로입니다.

------
#### [ Windows ]

      ```
      aws iam create-role ^
                --role-name comprehend-role ^
                --assume-role-policy-document file://path/comprehend-trust-policy.json
      ```

      위치:
      + *path/*는 로컬 디바이스에 있는 `comprehend-trust-policy.json`의 파일 경로입니다.

------

   1. Amazon 리소스 이름(ARN)을 텍스트 편집기에 복사하고 로컬에 `comprehend-role-arn`로 저장합니다.
**참고**  
ARN 형식은 *arn:aws:iam::123456789012:role/comprehend-role*과 비슷합니다. Amazon Comprehend 분석 작업을 실행하려면 `comprehend-role-arn`로 저장한 ARN이 필요합니다.

1. S3 버킷에 액세스할 권한을 부여하는 IAM 정책을 생성하여 IAM 역할에 연결하려면 다음을 수행하세요.

   1. 다음 신뢰 정책을 로컬 디바이스의 텍스트 편집기에서 `comprehend-S3-access-policy.json`이라는 JSON 파일로 저장합니다.

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Action": [
                      "s3:GetObject"
                  ],
                  "Resource": [
                      "arn:aws:s3:::amzn-s3-demo-bucket/*"
                  ],
                  "Effect": "Allow"
              },
              {
                  "Action": [
                      "s3:ListBucket"
                  ],
                  "Resource": [
                      "arn:aws:s3:::amzn-s3-demo-bucket"
                  ],
                  "Effect": "Allow"
              },
              {
                  "Action": [
                      "s3:PutObject"
                  ],
                  "Resource": [
                      "arn:aws:s3:::amzn-s3-demo-bucket/*"
                  ],
                  "Effect": "Allow"
              }
          ]
      }
      ```

------

   1. S3 버킷에 액세스하기 위해 `comprehend-S3-access-policy`라는 IAM 정책을 생성하려면 [create-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-policy.html) 명령을 사용하세요.

------
#### [ Linux ]

      ```
      aws iam create-policy \
                --policy-name comprehend-S3-access-policy \
                --policy-document file://path/comprehend-S3-access-policy.json
      ```

      위치:
      + *path/*는 로컬 디바이스에 있는 `comprehend-S3-access-policy.json`의 파일 경로입니다.

------
#### [ macOS ]

      ```
      aws iam create-policy \
                --policy-name comprehend-S3-access-policy \
                --policy-document file://path/comprehend-S3-access-policy.json
      ```

      위치:
      + *path/*는 로컬 디바이스에 있는 `comprehend-S3-access-policy.json`의 파일 경로입니다.

------
#### [ Windows ]

      ```
      aws iam create-policy ^
                --policy-name comprehend-S3-access-policy ^
                --policy-document file://path/comprehend-S3-access-policy.json
      ```

      위치:
      + *path/*는 로컬 디바이스에 있는 `comprehend-S3-access-policy.json`의 파일 경로입니다.

------

   1. Amazon 리소스 이름(ARN)을 텍스트 편집기에 복사하고 로컬에 `comprehend-S3-access-arn`로 저장합니다.
**참고**  
ARN 형식은 *arn:aws:iam::123456789012:role/comprehend-S3-access-policy*와 비슷합니다. IAM 역할에 `comprehend-S3-access-policy`를 연결하려면 `comprehend-S3-access-arn`로 저장한 ARN이 필요합니다.

   1. `comprehend-S3-access-policy`을 IAM 역할에 연결하려면 [attach-role-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/attach-role-policy.html) 명령을 사용합니다.

------
#### [ Linux ]

      ```
      aws iam attach-role-policy \
                --policy-arn policy-arn \
                --role-name comprehend-role
      ```

      위치:
      + *policy-arn*은 `comprehend-S3-access-arn`로 저장한 ARN입니다.

------
#### [ macOS ]

      ```
      aws iam attach-role-policy \
                --policy-arn policy-arn \
                --role-name comprehend-role
      ```

      위치:
      + *policy-arn*은 `comprehend-S3-access-arn`로 저장한 ARN입니다.

------
#### [ Windows ]

      ```
      aws iam attach-role-policy ^
                --policy-arn policy-arn ^
                --role-name comprehend-role
      ```

      위치:
      + *policy-arn*은 `comprehend-S3-access-arn`로 저장한 ARN입니다.

------

1. Amazon Comprehend 개체 분석 작업을 실행하려면 [start-entities-detection-job](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/comprehend/start-entities-detection-job.html) 명령을 사용하세요.

------
#### [ Linux ]

   ```
   aws comprehend start-entities-detection-job \
           --input-data-config S3Uri=s3://amzn-s3-demo-bucket/data/,InputFormat=ONE_DOC_PER_FILE \
           --output-data-config S3Uri=s3://amzn-s3-demo-bucket/ \
           --data-access-role-arn role-arn \
           --job-name data-entities-analysis \
           --language-code en \
           --region aws-region
   ```

   위치:
   + S3 버킷의 이름은 amzn-s3-demo-bucket입니다.
   + *role-arn*은 `comprehend-role-arn`로 저장한 ARN입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ macOS ]

   ```
   aws comprehend start-entities-detection-job \
           --input-data-config S3Uri=s3://amzn-s3-demo-bucket/data/,InputFormat=ONE_DOC_PER_FILE \
           --output-data-config S3Uri=s3://amzn-s3-demo-bucket/ \
           --data-access-role-arn role-arn \
           --job-name data-entities-analysis \
           --language-code en \
           --region aws-region
   ```

   위치:
   + S3 버킷의 이름은 amzn-s3-demo-bucket입니다.
   + *role-arn*은 `comprehend-role-arn`로 저장한 ARN입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ Windows ]

   ```
   aws comprehend start-entities-detection-job ^
           --input-data-config S3Uri=s3://amzn-s3-demo-bucket/data/,InputFormat=ONE_DOC_PER_FILE ^
           --output-data-config S3Uri=s3://amzn-s3-demo-bucket/ ^
           --data-access-role-arn role-arn ^
           --job-name data-entities-analysis ^
           --language-code en ^
           --region aws-region
   ```

   위치:
   + S3 버킷의 이름은 amzn-s3-demo-bucket입니다.
   + *role-arn*은 `comprehend-role-arn`로 저장한 ARN입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------

1. 개체 분석 `JobId`를 복사하여 텍스트 편집기에 `comprehend-job-id`로 저장합니다. `JobId`는 개체 분석 작업의 상태를 추적하는 데 도움이 됩니다.

1. 개체 분석 작업의 진행 상황을 추적하려면 [describe-entities-detection-job](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/comprehend/describe-entities-detection-job.html) 명령을 사용하세요.

------
#### [ Linux ]

   ```
   aws comprehend describe-entities-detection-job \
           --job-id entities-job-id \
           --region aws-region
   ```

   위치:
   + *entities-job-id*는 사용자의 저장한 `comprehend-job-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ macOS ]

   ```
   aws comprehend describe-entities-detection-job \
           --job-id entities-job-id \
           --region aws-region
   ```

   위치:
   + *entities-job-id*는 사용자의 저장한 `comprehend-job-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ Windows ]

   ```
   aws comprehend describe-entities-detection-job ^
           --job-id entities-job-id ^
           --region aws-region
   ```

   위치:
   + *entities-job-id*는 사용자의 저장한 `comprehend-job-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------

`JobStatus`가 `COMPLETED`로 변경되는 데 몇 분 정도 걸릴 수 있습니다.

이 단계가 끝나면 Amazon Comprehend는 개체 분석 결과를 S3 버킷의 자동 생성 폴더 내 `output`폴더에 압축된 `output.tar.gz` 파일로 저장합니다. 다음 단계로 넘어가기 전에 분석 작업 상태가 완료되었는지 확인합니다.

# 3단계: 개체 분석 출력을 Amazon Kendra 메타데이터로 형식 지정
<a name="tutorial-search-metadata-format-output"></a>

Amazon Comprehend에서 추출한 개체를 Amazon Kendra 인덱스에 필요한 메타데이터 형식으로 변환하려면 Python 3 스크립트를 실행합니다. 변환 결과는 Amazon S3 버킷의 `metadata` 폴더에 저장됩니다.

Amazon Kendra 메타데이터 형식 및 구조에 대한 자세한 내용은 [S3 문서 메타데이터](https://docs.aws.amazon.com/kendra/latest/dg/s3-metadata.html)를 참조하세요.

**Topics**
+ [Amazon Comprehend 출력 다운로드 및 추출](#tutorial-search-metadata-format-output-download-extract)
+ [출력을 S3 버킷에 업로드](#tutorial-search-metadata-format-output-upload)
+ [출력을 Amazon Kendra 메타데이터 형식으로 변환](#tutorial-search-metadata-format-output-script)
+ [Amazon S3 버킷 정리](#tutorial-search-metadata-format-output-cleanup)

## Amazon Comprehend 출력 다운로드 및 추출
<a name="tutorial-search-metadata-format-output-download-extract"></a>

Amazon Comprehend 개체 분석 출력의 형식을 지정하려면 먼저 Amazon Comprehend 개체 분석 `output.tar.gz` 아카이브를 다운로드하고 개체 분석 파일을 추출해야 합니다.

### 출력 파일을 다운로드하려면(콘솔)
<a name="tutorial-search-metadata-download-extract-console"></a>

1. Amazon Comprehend 콘솔의 탐색 창에서 **분석 작업**으로 이동합니다.

1. 개체 분석 작업 `data-entities-analysis`를 선택합니다.

1. **출력**에서 **출력 데이터 위치** 옆에 표시된 링크를 선택합니다. 그러면 S3 버킷의 `output.tar.gz` 아카이브로 리디렉션됩니다.

1. **개요** 탭에서 **다운로드**를 선택합니다.
**작은 정보**  
모든 Amazon Comprehend 분석 작업의 출력 이름은 동일합니다. 아카이브 이름을 변경하면 아카이브를 더 쉽게 추적할 수 있습니다.

1. 디바이스에 다운로드한 Amazon Comprehend 파일의 압축을 풀고 추출합니다.

### 출력 파일을 다운로드하려면(AWS CLI)
<a name="tutorial-search-metadata-download-extract-cli"></a>

1. 개체 분석 작업의 결과를 포함하는 S3 버킷의 Amazon Comprehend 자동 생성 폴더 이름에 액세스하려면 [describe-entities-detection-job](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/comprehend/describe-entities-detection-job.html) 명령을 사용하세요.

------
#### [ Linux ]

   ```
   aws comprehend describe-entities-detection-job \
             --job-id entities-job-id \
             --region aws-region
   ```

   위치:
   + *entities-job-id*는 [2단계: Amazon Comprehend에서 개체 분석 작업 실행](tutorial-search-metadata-entities-analysis.md)에서 저장한 `comprehend-job-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ macOS ]

   ```
   aws comprehend describe-entities-detection-job \
             --job-id entities-job-id \
             --region aws-region
   ```

   위치:
   + *entities-job-id*는 [2단계: Amazon Comprehend에서 개체 분석 작업 실행](tutorial-search-metadata-entities-analysis.md)에서 저장한 `comprehend-job-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ Windows ]

   ```
   aws comprehend describe-entities-detection-job ^
             --job-id entities-job-id ^
             --region aws-region
   ```

   위치:
   + *entities-job-id*는 [2단계: Amazon Comprehend에서 개체 분석 작업 실행](tutorial-search-metadata-entities-analysis.md)에서 저장한 `comprehend-job-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------

1. 개체 작업 설명의 `OutputDataConfig` 객체에서 `S3Uri` 값을 복사하고 텍스트 편집기에 `comprehend-S3uri`로 저장합니다.
**참고**  
`S3Uri` 값의 형식은 *s3://amzn-s3-demo-bucket/.../output/output.tar.gz*와 비슷합니다.

1. 개체 출력 아카이브를 다운로드하려면 [copy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/cp.html) 명령을 사용합니다.

------
#### [ Linux ]

   ```
   aws s3 cp s3://amzn-s3-demo-bucket/.../output/output.tar.gz path/output.tar.gz
   ```

   위치:
   + *s3://amzn-s3-demo-bucket/.../output/output.tar.gz*는 `comprehend-S3uri`로 저장한 `S3Uri` 값입니다.
   + *path/*는 출력을 저장하려는 로컬 디렉터리입니다.

------
#### [ macOS ]

   ```
   aws s3 cp s3://amzn-s3-demo-bucket/.../output/output.tar.gz path/output.tar.gz
   ```

   위치:
   + *s3://amzn-s3-demo-bucket/.../output/output.tar.gz*는 `comprehend-S3uri`로 저장한 `S3Uri` 값입니다.
   + *path/*는 출력을 저장하려는 로컬 디렉터리입니다.

------
#### [ Windows ]

   ```
   aws s3 cp s3://amzn-s3-demo-bucket/.../output/output.tar.gz path/output.tar.gz
   ```

   위치:
   + *s3://amzn-s3-demo-bucket/.../output/output.tar.gz*는 `comprehend-S3uri`로 저장한 `S3Uri` 값입니다.
   + *path/*는 출력을 저장하려는 로컬 디렉터리입니다.

------

1. 개체 출력을 추출하려면 터미널 창에서 다음 명령을 실행합니다.

------
#### [ Linux ]

   ```
   tar -xf path/output.tar.gz -C path/
   ```

   위치:
   + *path/*는 로컬 디바이스에 다운로드한 `output.tar.gz` 아카이브의 파일 경로입니다.

------
#### [ macOS ]

   ```
   tar -xf path/output.tar.gz -C path/
   ```

   위치:
   + *path/*는 로컬 디바이스에 다운로드한 `output.tar.gz` 아카이브의 파일 경로입니다.

------
#### [ Windows ]

   ```
   tar -xf path/output.tar.gz -C path/
   ```

   위치:
   + *path/*는 로컬 디바이스에 다운로드한 `output.tar.gz` 아카이브의 파일 경로입니다.

------

이 단계가 끝나면 Amazon Comprehend에서 식별한 개체 목록이 포함된 `output`라는 파일이 디바이스에 생성되어야 합니다.

## 출력을 S3 버킷에 업로드
<a name="tutorial-search-metadata-format-output-upload"></a>

Amazon Comprehend 개체 분석 파일을 다운로드하고 추출한 후 추출한 `output` 파일을 Amazon S3 버킷에 업로드합니다.

### 추출한 Amazon Comprehend 출력 파일 업로드(콘솔)
<a name="tutorial-search-metadata-upload-output-console"></a>

1. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

1. **버킷**에서 버킷 이름을 선택한 다음 **업로드**를 선택합니다.

1. **파일 및 폴더**에서 **파일 추가**를 선택합니다.

1. 대화 상자에서 디바이스의 추출된 `output` 파일을 찾아 선택한 다음 **열기**를 선택합니다.

1. **대상**, **권한** 및 **속성**에 대한 기본 설정을 유지합니다.

1. **업로드**를 선택합니다.

### 추출한 Amazon Comprehend 출력 파일 업로드(AWS CLI)
<a name="tutorial-search-metadata-upload-output-cli"></a>

1. 추출된 `output` 파일을 버킷에 업로드하려면 [copy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/cp.html) 명령을 사용합니다.

------
#### [ Linux ]

   ```
   aws s3 cp path/output s3://amzn-s3-demo-bucket/output
   ```

   위치:
   + *path/*는 추출된 `output` 파일의 로컬 파일 경로입니다.
   + S3 버킷의 이름은 amzn-s3-demo-bucket입니다.

------
#### [ macOS ]

   ```
   aws s3 cp path/output s3://amzn-s3-demo-bucket/output
   ```

   위치:
   + *path/*는 추출된 `output` 파일의 로컬 파일 경로입니다.
   + S3 버킷의 이름은 amzn-s3-demo-bucket입니다.

------
#### [ Windows ]

   ```
   aws s3 cp path/output s3://amzn-s3-demo-bucket/output
   ```

   위치:
   + *path/*는 추출된 `output` 파일의 로컬 파일 경로입니다.
   + S3 버킷의 이름은 amzn-s3-demo-bucket입니다.

------

1. `output` 파일이 S3 버킷에 성공적으로 업로드되었는지 확인하려면 [list](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/ls.html) 명령을 사용하여 파일의 내용을 확인하세요.

------
#### [ Linux ]

   ```
   aws s3 ls s3://amzn-s3-demo-bucket/
   ```

   위치:
   + S3 버킷의 이름은 amzn-s3-demo-bucket입니다.

------
#### [ macOS ]

   ```
   aws s3 ls s3://amzn-s3-demo-bucket/
   ```

   위치:
   + S3 버킷의 이름은 amzn-s3-demo-bucket입니다.

------
#### [ Windows ]

   ```
   aws s3 ls s3://amzn-s3-demo-bucket/
   ```

   위치:
   + S3 버킷의 이름은 amzn-s3-demo-bucket입니다.

------

## 출력을 Amazon Kendra 메타데이터 형식으로 변환
<a name="tutorial-search-metadata-format-output-script"></a>

Amazon Comprehend 출력을 Amazon Kendra 메타데이터로 변환하려면 Python 3 스크립트를 실행합니다. 콘솔을 사용하는 경우이 단계에서 AWS CloudShell 를 사용합니다.

### Python 3 스크립트를 실행하려면 (콘솔)
<a name="tutorial-search-metadata-format-output-console"></a>

1. [converter.py.zip](https://docs.aws.amazon.com/kendra/latest/dg/samples/converter.py.zip) 파일을 디바이스에 다운로드합니다.

1. Python 3 파일 `converter.py`를 추출합니다.

1. [AWS Management Console](https://aws.amazon.com/console/)에 로그인하고 AWS 리전이 S3 버킷 및 Amazon Comprehend 분석 작업과 동일한 리전으로 설정되어 있는지 확인합니다.

1. **AWS CloudShell 아이콘**을 선택하거나 상단 탐색 모음의 **검색** 상자에 **AWS CloudShell**을 입력하여 환경을 시작합니다.
**참고**  
가 새 브라우저 창에서 처음 AWS CloudShell 시작되면 시작 패널이 표시되고 주요 기능이 나열됩니다. 이 패널을 닫고 명령 프롬프트가 표시되면 쉘이 상호 작용할 준비가 된 것입니다.

1. 터미널이 준비되면 탐색 창에서 **작업**을 선택한 다음 메뉴에서 **파일 업로드**를 선택합니다.

1. 이때 열리는 대화 상자에서 **파일 선택** 을 선택한 후 디바이스에서 다운로드한 Python 3 파일 `converter.py`를 선택합니다. **업로드**를 선택합니다.

1.  AWS CloudShell 환경에서 다음 명령을 입력합니다.

   ```
   python3 converter.py
   ```

1. 쉘 인터페이스에서 **S3 버킷 이름을 입력**하라는 메시지가 표시되면 S3 버킷의 이름을 입력하고 Enter 키를 누릅니다.

1. 쉘 인터페이스에서 **Comprehend 출력 파일의 전체 파일 경로를 입력**하라는 메시지가 표시되면 **output**를 입력하고 Enter 키를 누릅니다.

1. 쉘 인터페이스에서 **메타데이터 폴더의 전체 파일 경로를 입력**하라는 메시지가 표시되면 **metadata/**를 입력하고 Enter 키를 누릅니다.

**중요**  
메타데이터의 형식을 올바르게 지정하려면 8-10단계의 입력 값이 정확해야 합니다.

### Python 3 스크립트를 실행하려면 (AWS CLI)
<a name="tutorial-search-metadata-format-output-cli"></a>

1. Python 3 파일 `converter.py`를 다운로드하려면 터미널 창에서 다음 명령을 실행합니다.

------
#### [ Linux ]

   ```
   curl -o path/converter.py.zip https://docs.aws.amazon.com/kendra/latest/dg/samples/converter.py.zip
   ```

   위치:
   + *path/*는 압축된 파일을 저장하려는 위치의 파일 경로입니다.

------
#### [ macOS ]

   ```
   curl -o path/converter.py.zip https://docs.aws.amazon.com/kendra/latest/dg/samples/converter.py.zip
   ```

   위치:
   + *path/*는 압축된 파일을 저장하려는 위치의 파일 경로입니다.

------
#### [ Windows ]

   ```
   curl -o path/converter.py.zip https://docs.aws.amazon.com/kendra/latest/dg/samples/converter.py.zip
   ```

   위치:
   + *path/*는 압축된 파일을 저장하려는 위치의 파일 경로입니다.

------

1. Python 3 파일을 추출하려면 터미널 창에서 다음 명령을 실행합니다.

------
#### [ Linux ]

   ```
   unzip path/converter.py.zip -d path/
   ```

   위치:
   + *path/*는 저장한 `converter.py.zip`의 파일 경로입니다.

------
#### [ macOS ]

   ```
   unzip path/converter.py.zip -d path/
   ```

   위치:
   + *path/*는 저장한 `converter.py.zip`의 파일 경로입니다.

------
#### [ Windows ]

   ```
   tar -xf path/converter.py.zip -C path/
   ```

   위치:
   + *path/*는 저장한 `converter.py.zip`의 파일 경로입니다.

------

1. 다음 명령을 실행하여 Boto3가 디바이스에 설치되어 있는지 확인합니다.

------
#### [ Linux ]

   ```
   pip3 show boto3
   ```

------
#### [ macOS ]

   ```
   pip3 show boto3
   ```

------
#### [ Windows ]

   ```
   pip3 show boto3
   ```

------
**참고**  
Boto3가 설치되어 있지 않은 경우 `pip3 install boto3`를 실행하여 설치합니다.

1. Python 3 스크립트를 실행하여 `output` 파일을 변환하려면 다음 명령을 실행합니다.

------
#### [ Linux ]

   ```
   python path/converter.py
   ```

   위치:
   + *path/*는 저장한 `converter.py.zip`의 파일 경로입니다.

------
#### [ macOS ]

   ```
   python path/converter.py
   ```

   위치:
   + *path/*는 저장한 `converter.py.zip`의 파일 경로입니다.

------
#### [ Windows ]

   ```
   python path/converter.py
   ```

   위치:
   + *path/*는 저장한 `converter.py.zip`의 파일 경로입니다.

------

1. 에 라는 AWS CLI 메시지가 표시되면 S3 버킷의 이름을 `Enter the name of your S3 bucket`입력하고 Enter 키를 누릅니다.

1. 에 AWS CLI 메시지가 표시되면를 `Enter the full filepath to your Comprehend output file` **output** 입력하고 Enter 키를 누릅니다.

1. 에 AWS CLI 메시지가 표시되면를 `Enter the full filepath to your metadata folder` **metadata/** 입력하고 Enter 키를 누릅니다.

**중요**  
메타데이터의 형식을 올바르게 지정하려면 5-7단계의 입력 값이 정확해야 합니다.

이 단계가 끝나면 형식이 지정된 메타데이터가 S3 버킷의 `metadata` 폴더 내에 보관됩니다.

## Amazon S3 버킷 정리
<a name="tutorial-search-metadata-format-output-cleanup"></a>

Amazon Kendra 인덱스는 버킷에 저장된 모든 파일을 동기화하므로 검색 결과가 중복되지 않도록 Amazon S3 버킷을 정리하는 것이 좋습니다.

### Amazon S3 버킷을 정리하려면 (콘솔)
<a name="tutorial-search-metadata-cleanup-bucket-console"></a>

1. [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)에서 S3 콘솔을 엽니다.

1. **버킷**에서 버킷을 선택한 다음 Amazon Comprehend 개체 분석 출력 폴더, Amazon Comprehend 개체 분석 `.temp` 파일 및 추출된 Amazon Comprehend `output` 파일을 선택합니다.

1. **개요** 탭에서 **삭제**를 선택합니다.

1. **객체 삭제**에서 **객체를 영구적으로 삭제하시겠습니까?**를 선택하고 텍스트 입력 필드에 **permanently delete**를 입력합니다.

1. **객체 삭제**를 선택합니다.

### Amazon S3 버킷 정리(AWS CLI)
<a name="tutorial-search-metadata-cleanup-bucket-cli"></a>

1. `data` 및 `metadata` 폴더를 제외한 S3 버킷의 모든 파일 및 폴더를 삭제하려면 AWS CLI에서 [remove](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/rm.html) 명령을 사용합니다.

------
#### [ Linux ]

   ```
   aws s3 rm s3://amzn-s3-demo-bucket/ --recursive --exclude "data/*" --exclude "metadata/*"
   ```

   위치:
   + S3 버킷의 이름은 amzn-s3-demo-bucket입니다.

------
#### [ macOS ]

   ```
   aws s3 rm s3://amzn-s3-demo-bucket/ --recursive --exclude "data/*" --exclude "metadata/*"
   ```

   위치:
   + S3 버킷의 이름은 amzn-s3-demo-bucket입니다.

------
#### [ Windows ]

   ```
   aws s3 rm s3://amzn-s3-demo-bucket/ --recursive --exclude "data/*" --exclude "metadata/*"
   ```

   위치:
   + S3 버킷의 이름은 amzn-s3-demo-bucket입니다.

------

1. 객체가 S3 버킷에서 성공적으로 삭제되었는지 확인하려면 [list](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/ls.html) 명령을 사용하여 해당 콘텐츠를 확인하세요.

------
#### [ Linux ]

   ```
   aws s3 ls s3://amzn-s3-demo-bucket/
   ```

   위치:
   + S3 버킷의 이름은 amzn-s3-demo-bucket입니다.

------
#### [ macOS ]

   ```
   aws s3 ls s3://amzn-s3-demo-bucket/
   ```

   위치:
   + S3 버킷의 이름은 amzn-s3-demo-bucket입니다.

------
#### [ Windows ]

   ```
   aws s3 ls s3://amzn-s3-demo-bucket/
   ```

   위치:
   + S3 버킷의 이름은 amzn-s3-demo-bucket입니다.

------

이 단계가 끝나면 Amazon Comprehend 개체 분석 출력을 Amazon Kendra 메타데이터로 변환하게 됩니다. 이제 Amazon Kendra 인덱스를 생성할 준비가 완료되었습니다.

# 4단계: Amazon Kendra 인덱스를 생성하고 메타데이터를 수집
<a name="tutorial-search-metadata-create-index-ingest"></a>

지능형 검색 솔루션을 구현하려면 Amazon Kendra 인덱스를 생성하고 이 인덱스에 S3 데이터 및 메타데이터를 수집해야 합니다.

Amazon Kendra 인덱스에 메타데이터를 추가하기 전에 사용자 지정 문서 속성에 해당하는 사용자 지정 인덱스 필드를 생성합니다. 그러면 Amazon Comprehend 개체 유형과 맞게 됩니다. Amazon Kendra는 사용자가 생성한 인덱스 필드와 사용자 지정 문서 속성을 사용하여 문서를 검색하고 필터링합니다.

자세한 내용은 [인덱싱](https://docs.aws.amazon.com/kendra/latest/dg/hiw-index.html) 및 [사용자 지정 문서 속성 생성](https://docs.aws.amazon.com/kendra/latest/dg/custom-attributes.html)을 참조하세요.

**Topics**
+ [Amazon Kendra 인덱스를 생성합니다.](#tutorial-search-metadata-create-index)
+ [Amazon S3 액세스를 위한 IAM 역할 업데이트](#tutorial-search-metadata-create-index-update-IAM)
+ [Amazon Kendra 사용자 지정 검색 인덱스 필드 생성](#tutorial-search-metadata-create-index-custom-fields)
+ [Amazon S3 버킷을 인덱스의 데이터 소스로 추가](#tutorial-search-metadata-create-index-connect-data)
+ [Amazon Kendra 인덱스 동기화](#tutorial-search-metadata-create-index-sync)

## Amazon Kendra 인덱스를 생성합니다.
<a name="tutorial-search-metadata-create-index"></a>

소스 문서를 쿼리하려면 Amazon Kendra 인덱스를 생성해야 합니다.

이 단계에서 AWS CLI 를 사용하는 경우 인덱스를 생성하기 전에 Amazon Kendra가 CloudWatch 로그에 액세스할 수 있도록 허용하는 AWS IAM 역할 및 정책을 생성하고 연결합니다. 자세한 내용은 [사전 조건](https://docs.aws.amazon.com/kendra/latest/dg/gs-prerequisites.html)을 참조하세요.

### Amazon Kendra 인덱스를 생성하려면 (콘솔)
<a name="tutorial-search-metadata-create-index-console"></a>

1. [https://console.aws.amazon.com/kendra/](https://console.aws.amazon.com/kendra/)에서 Amazon Kendra 콘솔을 엽니다.
**중요**  
Amazon Comprehend 개체 분석 작업, Amazon S3 버킷을 생성한 리전과 동일한 리전에 있는지 확인하세요. 다른 리전에 있는 경우 상단 탐색 모음의 AWS 리전 선택기에서 Amazon S3 버킷을 생성한 리전을 선택합니다. **** 

1. **인덱스 생성**을 선택합니다.

1. **인덱스 세부 정보 지정** 페이지의 **인덱스 세부 정보**에 대해 다음을 수행하세요.

   1. **인덱스 이름**에 **kendra-index**를 입력합니다.

   1. **설명** 필드는 비워 두세요.

   1. **IAM 역할**에서 **새 역할 생성**을 선택합니다. 이 역할은 Amazon S3 버킷에 대한 액세스를 제공합니다.

   1. **역할 이름**에 **kendra-role**를 입력합니다. IAM 역할에는 `AmazonKendra-` 접두사가 붙습니다.

   1. **암호화** 및 **태그**의 기본 설정을 유지하고 **다음**을 선택합니다.

1. **사용자 액세스 제어 구성** 페이지의 **액세스 제어 설정**에서 **아니오**를 선택한 후 **다음**을 선택합니다.

1. **프로비저닝 세부 정보** 페이지에 있는 **프로비저닝 에디션**의 경우 **Developer Edition**을 선택하고 **생성**을 선택합니다.

### Amazon Kendra 인덱스를 생성하려면 (AWS CLI)
<a name="tutorial-search-metadata-create-index-cli"></a>

1. 신뢰할 수 있는 개체로 인식되는 Amazon Kendra용 IAM 역할을 생성하고 연결하려면 다음을 수행하세요.

   1. 다음 신뢰 정책을 로컬 디바이스의 텍스트 편집기에서 `kendra-trust-policy.json`이라는 JSON 파일로 저장합니다.

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": {
              "Effect": "Allow",
              "Principal": {
                  "Service": "kendra.amazonaws.com"
              },
              "Action": "sts:AssumeRole"
          }
      }
      ```

------

   1. `kendra-role`라는 IAM 역할을 생성하고 저장된 `kendra-trust-policy.json` 파일을 첨부하려면 [create-role](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-role.html) 명령을 사용합니다.

------
#### [ Linux ]

      ```
      aws iam create-role \
                --role-name kendra-role \
                --assume-role-policy-document file://path/kendra-trust-policy.json
      ```

      위치:
      + *path/*는 로컬 디바이스에 있는 `kendra-trust-policy.json`의 파일 경로입니다.

------
#### [ macOS ]

      ```
      aws iam create-role \
                --role-name kendra-role \
                --assume-role-policy-document file://path/kendra-trust-policy.json
      ```

      위치:
      + *path/*는 로컬 디바이스에 있는 `kendra-trust-policy.json`의 파일 경로입니다.

------
#### [ Windows ]

      ```
      aws iam create-role ^
                --role-name kendra-role ^
                --assume-role-policy-document file://path/kendra-trust-policy.json
      ```

      위치:
      + *path/*는 로컬 디바이스에 있는 `kendra-trust-policy.json`의 파일 경로입니다.

------

   1. Amazon 리소스 이름(ARN)을 텍스트 편집기에 복사하고 로컬에 `kendra-role-arn`로 저장합니다.
**참고**  
ARN 형식은 *arn:aws:iam::123456789012:role/kendra-role*과 비슷합니다. Amazon Kendra 작업을 실행하려면 `kendra-role-arn`로 저장한 ARN이 필요합니다.

1. 인덱스를 생성하기 전에 CloudWatch Logs에 기록할 수 있는 권한을 `kendra-role`에 제공해야 합니다. 이렇게 하려면 다음 단계를 완료하세요.

   1. 다음 신뢰 정책을 로컬 디바이스의 텍스트 편집기에서 `kendra-cloudwatch-policy.json`이라는 JSON 파일로 저장합니다.

      *aws-region*을 해당 AWS 리전으로 바꾸고 *aws-account-id*를 12자리 AWS 계정 ID로 바꿉니다.

   1. CloudWatch Logs에 액세스할 수 있는 IAM 정책을 생성하려면 [create-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-policy.html) 명령을 사용하세요.

------
#### [ Linux ]

      ```
      aws iam create-policy \
                --policy-name kendra-cloudwatch-policy \
                --policy-document file://path/kendra-cloudwatch-policy.json
      ```

      위치:
      + *path/*는 로컬 디바이스에 있는 `kendra-cloudwatch-policy.json`의 파일 경로입니다.

------
#### [ macOS ]

      ```
      aws iam create-policy \
                --policy-name kendra-cloudwatch-policy \
                --policy-document file://path/kendra-cloudwatch-policy.json
      ```

      위치:
      + *path/*는 로컬 디바이스에 있는 `kendra-cloudwatch-policy.json`의 파일 경로입니다.

------
#### [ Windows ]

      ```
      aws iam create-policy ^
                --policy-name kendra-cloudwatch-policy ^
                --policy-document file://path/kendra-cloudwatch-policy.json
      ```

      위치:
      + *path/*는 로컬 디바이스에 있는 `kendra-cloudwatch-policy.json`의 파일 경로입니다.

------

   1. Amazon 리소스 이름(ARN)을 텍스트 편집기에 복사하고 로컬에 `kendra-cloudwatch-arn`로 저장합니다.
**참고**  
ARN의 형식은 *arn:aws:iam::123456789012:role/kendra-cloudwatch-policy*와 비슷합니다. IAM 역할에 `kendra-cloudwatch-policy`를 연결하려면 `kendra-cloudwatch-arn`로 저장한 ARN이 필요합니다.

   1. `kendra-cloudwatch-policy`을 IAM 역할에 연결하려면 [attach-role-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/attach-role-policy.html) 명령을 사용합니다.

------
#### [ Linux ]

      ```
      aws iam attach-role-policy \
                --policy-arn policy-arn \
                --role-name kendra-role
      ```

      위치:
      + *policy-arn*은 저장한 `kendra-cloudwatch-arn`입니다.

------
#### [ macOS ]

      ```
      aws iam attach-role-policy \
                --policy-arn policy-arn \
                --role-name kendra-role
      ```

      위치:
      + *policy-arn*은 저장한 `kendra-cloudwatch-arn`입니다.

------
#### [ Windows ]

      ```
      aws iam attach-role-policy ^
                --policy-arn policy-arn ^
                --role-name kendra-role
      ```

      위치:
      + *policy-arn*은 저장한 `kendra-cloudwatch-arn`입니다.

------

1. 인덱스를 만들려면 [create-index](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kendra/create-index.html) 명령을 사용하세요.

------
#### [ Linux ]

   ```
   aws kendra create-index \
           --name kendra-index \
           --edition DEVELOPER_EDITION \
           --role-arn role-arn \
           --region aws-region
   ```

   위치:
   + *role-arn*은 저장한 `kendra-role-arn`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ macOS ]

   ```
   aws kendra create-index \
           --name kendra-index \
           --edition DEVELOPER_EDITION \
           --role-arn role-arn \
           --region aws-region
   ```

   위치:
   + *role-arn*은 저장한 `kendra-role-arn`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ Windows ]

   ```
   aws kendra create-index ^
           --name kendra-index ^
           --edition DEVELOPER_EDITION ^
           --role-arn role-arn ^
           --region aws-region
   ```

   위치:
   + *role-arn*은 저장한 `kendra-role-arn`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------

1. 인덱스 `Id`를 복사하여 텍스트 편집기에 `kendra-index-id`로 저장합니다. `Id`는 인덱스 생성 상태를 추적하는 데 도움이 됩니다.

1. 인덱스 생성 작업의 진행률을 추적하려면 [describe-index](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kendra/describe-index.html) 명령을 사용하세요.

------
#### [ Linux ]

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

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ macOS ]

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

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ Windows ]

   ```
   aws kendra describe-index ^
           --id kendra-index-id ^
           --region aws-region
   ```

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------

인덱스 생성 프로세스는 평균 15분이 소요되지만 더 오래 걸릴 수 있습니다. 인덱스 상태가 활성 상태이면 인덱스를 사용할 준비가 된 것입니다. 인덱스가 생성되는 동안 다음 단계를 시작할 수 있습니다.

이 단계에서를 사용하는 경우 인덱스에 S3 버킷 AWS CLI 에 액세스할 수 있는 권한을 부여하는 IAM 정책을 생성하고 Amazon Kendra IAM 역할에 연결합니다.

## Amazon S3 액세스를 위한 IAM 역할 업데이트
<a name="tutorial-search-metadata-create-index-update-IAM"></a>

인덱스를 생성하는 동안 Amazon Kendra IAM 역할을 업데이트하여 생성한 인덱스가 Amazon S3 버킷에서 데이터를 읽을 수 있도록 합니다. 자세한 내용을 알아보려면 [Amazon Kendra의 IAM 액세스 역할](https://docs.aws.amazon.com/kendra/latest/dg/iam-roles.html)을 참조하세요.

### IAM 역할을 업데이트하려면 (콘솔)
<a name="tutorial-search-metadata-update-role-console"></a>

1. IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 엽니다.

1. 왼쪽 탐색 창에서 **역할**을 선택하고 **역할 이름** 위의 **검색** 상자에 **kendra-role**를 입력합니다.

1. 제안된 옵션 중에서 `kendra-role`를 클릭합니다.

1. **요약**에서 **정책 연결**을 선택합니다.

1. **권한 연결**의 **검색** 상자에 권장 옵션 중 **AmazonS3ReadOnlyAccess** 정책 옆의 확인란을 선택하고 **S3**를 입력합니다.

1. **정책 연결**을 선택합니다. 이제 **요약** 페이지에서 IAM 역할에 연결된 두 개의 정책을 볼 수 있습니다.

1. [https://console.aws.amazon.com/kendra/](https://console.aws.amazon.com/kendra/)에서 Amazon Kendra 콘솔로 돌아가 인덱스 상태가 **생성 중**에서 **활성**으로 변경될 때까지 기다린 후 다음 단계로 진행하세요.

### IAM 역할을 업데이트하려면 (AWS CLI)
<a name="tutorial-search-metadata-update-role-cli"></a>

1. 다음 텍스트를 로컬 디바이스의 텍스트 편집기에서 `kendra-S3-access-policy.json`이라는 JSON 파일로 저장합니다.

   amzn-s3-demo-bucket은 S3 버킷 이름으로, *aws-region*은 사용 중인 AWS 리전으로, *aws-account-id*는 12자리 AWS 계정 ID로, *kendra-index-id*는 저장된 `kendra-index-id`로 바꿉니다.

1. S3 버킷에 액세스하기 위한 IAM 정책을 생성하려면 [create-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/create-policy.html) 명령을 사용하세요.

------
#### [ Linux ]

   ```
   aws iam create-policy \
             --policy-name kendra-S3-access-policy \
             --policy-document file://path/kendra-S3-access-policy.json
   ```

   위치:
   + *path/*는 로컬 디바이스에 있는 `kendra-S3-access-policy.json`의 파일 경로입니다.

------
#### [ macOS ]

   ```
   aws iam create-policy \
             --policy-name kendra-S3-access-policy \
             --policy-document file://path/kendra-S3-access-policy.json
   ```

   위치:
   + *path/*는 로컬 디바이스에 있는 `kendra-S3-access-policy.json`의 파일 경로입니다.

------
#### [ Windows ]

   ```
   aws iam create-policy ^
             --policy-name kendra-S3-access-policy ^
             --policy-document file://path/kendra-S3-access-policy.json
   ```

   위치:
   + *path/*는 로컬 디바이스에 있는 `kendra-S3-access-policy.json`의 파일 경로입니다.

------

1. Amazon 리소스 이름(ARN)을 텍스트 편집기에 복사하고 로컬에 `kendra-S3-access-arn`로 저장합니다.
**참고**  
ARN의 형식은 *arn:aws:iam::123456789012:role/kendra-S3-access-policy*와 비슷한 형식입니다. IAM 역할에 `kendra-S3-access-policy`를 연결하려면 `kendra-S3-access-arn`로 저장한 ARN이 필요합니다.

1. `kendra-S3-access-policy`을 Amazon Kendra IAM 역할에 연결하려면 [attach-role-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iam/attach-role-policy.html) 명령을 사용합니다.

------
#### [ Linux ]

   ```
   aws iam attach-role-policy \
             --policy-arn policy-arn \
             --role-name kendra-role
   ```

   위치:
   + *policy-arn*은 저장한 `kendra-S3-access-arn`입니다.

------
#### [ macOS ]

   ```
   aws iam attach-role-policy \
             --policy-arn policy-arn \
             --role-name kendra-role
   ```

   위치:
   + *policy-arn*은 저장한 `kendra-S3-access-arn`입니다.

------
#### [ Windows ]

   ```
   aws iam attach-role-policy ^
             --policy-arn policy-arn ^
             --role-name kendra-role
   ```

   위치:
   + *policy-arn*은 저장한 `kendra-S3-access-arn`입니다.

------

## Amazon Kendra 사용자 지정 검색 인덱스 필드 생성
<a name="tutorial-search-metadata-create-index-custom-fields"></a>

Amazon Kendra가 메타데이터를 사용자 지정 문서 속성으로 인식하도록 준비하려면 Amazon Comprehend 개체 유형에 해당하는 사용자 지정 필드를 생성합니다. 다음 9개의 Amazon Comprehend 개체 유형을 사용자 지정 필드로 입력합니다.
+ 상업\$1품목
+ DATE
+ 이벤트
+ 위치
+ 조직
+ 기타
+ 개인
+ 수량
+ 제목

**중요**  
철자가 틀린 개체 유형은 인덱스에서 인식되지 않습니다.

### Amazon Kendra 인덱스를 위한 사용자 지정 필드를 만들려면 (콘솔)
<a name="tutorial-search-metadata-create-attributes-console"></a>

1. [https://console.aws.amazon.com/kendra/](https://console.aws.amazon.com/kendra/)에서 Amazon Kendra 콘솔을 엽니다.

1. **인덱스** 목록에서 `kendra-index`를 클릭합니다.

1. 왼쪽 탐색 패널의 **데이터 관리**에서 **패싯 정의**를 선택합니다.

1. **인덱스 필드** 메뉴에서 **필드 추가**를 선택합니다.

1. **인덱스 필드 추가** 대화 상자에서 다음을 수행합니다.

   1. **필드 이름**에 **COMMERCIAL\$1ITEM**을 입력합니다.

   1. **데이터 유형**에서 **문자열 목록**을 선택합니다.

   1. **사용 유형**에서 **패싯 가능**, **검색 가능**, **표시 가능**을 선택한 다음 **추가**를 선택합니다.

   1. 각 Amazon Comprehend 개체 유형(상업\$1품목, 날짜, 이벤트, 위치, 조직, 기타, 개인, 수량, 제목)에 대해 a단계부터 c단계까지 반복합니다.

콘솔에는 필드 추가 성공 메시지가 표시됩니다. 다음 단계를 진행하기 전에 닫도록 선택할 수 있습니다.

### Amazon Kendra 인덱스를 위한 사용자 지정 필드를 만들려면 (AWS CLI)
<a name="tutorial-search-metadata-create-attributes-cli"></a>

1. 다음 텍스트를 로컬 디바이스의 텍스트 편집기에서 `custom-attributes.json`이라는 JSON 파일로 저장합니다.

   ```
   [
      {
          "Name": "COMMERCIAL_ITEM",
          "Type": "STRING_LIST_VALUE",
          "Search": {
              "Facetable": true,
              "Searchable": true,
              "Displayable": true
          }
      },
      {
          "Name": "DATE",
          "Type": "STRING_LIST_VALUE",
          "Search": {
              "Facetable": true,
              "Searchable": true,
              "Displayable": true
          }
      },
      {
          "Name": "EVENT",
          "Type": "STRING_LIST_VALUE",
          "Search": {
              "Facetable": true,
              "Searchable": true,
              "Displayable": true
          }
      },
      {
          "Name": "LOCATION",
          "Type": "STRING_LIST_VALUE",
          "Search": {
              "Facetable": true,
              "Searchable": true,
              "Displayable": true
          }
      },
      {
          "Name": "ORGANIZATION",
          "Type": "STRING_LIST_VALUE",
          "Search": {
              "Facetable": true,
              "Searchable": true,
              "Displayable": true
          }
      },
      {
          "Name": "OTHER",
          "Type": "STRING_LIST_VALUE",
          "Search": {
              "Facetable": true,
              "Searchable": true,
              "Displayable": true
          }
      },
      {
          "Name": "PERSON",
          "Type": "STRING_LIST_VALUE",
          "Search": {
              "Facetable": true,
              "Searchable": true,
              "Displayable": true
          }
      },
      {
          "Name": "QUANTITY",
          "Type": "STRING_LIST_VALUE",
          "Search": {
              "Facetable": true,
              "Searchable": true,
              "Displayable": true
          }
      },
      {
          "Name": "TITLE",
          "Type": "STRING_LIST_VALUE",
          "Search": {
              "Facetable": true,
              "Searchable": true,
              "Displayable": true
          }
      }
   ]
   ```

1. 인덱스에 사용자 지정 필드를 만들려면 [update-index](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kendra/update-index.html) 명령어를 사용하세요.

------
#### [ Linux ]

   ```
   aws kendra update-index \
           --id kendra-index-id \
           --document-metadata-configuration-updates file://path/custom-attributes.json \
           --region aws-region
   ```

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *path/*는 로컬 디바이스에 있는 `custom-attributes.json`의 파일 경로입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ macOS ]

   ```
   aws kendra update-index \
           --id kendra-index-id \
           --document-metadata-configuration-updates file://path/custom-attributes.json \
           --region aws-region
   ```

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *path/*는 로컬 디바이스에 있는 `custom-attributes.json`의 파일 경로입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ Windows ]

   ```
   aws kendra update-index ^
           --id kendra-index-id ^
           --document-metadata-configuration-updates file://path/custom-attributes.json ^
           --region aws-region
   ```

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *path/*는 로컬 디바이스에 있는 `custom-attributes.json`의 파일 경로입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------

1. 사용자 지정 속성이 인덱스에 추가되었는지 확인하려면 [describe-index](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kendra/describe-index.html) 명령을 사용하세요.

------
#### [ Linux ]

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

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ macOS ]

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

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ Windows ]

   ```
   aws kendra describe-index ^
           --id kendra-index-id ^
           --region aws-region
   ```

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------

## Amazon S3 버킷을 인덱스의 데이터 소스로 추가
<a name="tutorial-search-metadata-create-index-connect-data"></a>

인덱스를 동기화하려면 먼저 S3 데이터 소스를 인덱스에 연결해야 합니다.

### S3 버킷을 Amazon Kendra 인덱스에 연결하는 방법 (콘솔)
<a name="tutorial-search-metadata-connect-s3-console"></a>

1. [https://console.aws.amazon.com/kendra/](https://console.aws.amazon.com/kendra/)에서 Amazon Kendra 콘솔을 엽니다.

1. **인덱스** 목록에서 `kendra-index`를 클릭합니다.

1. 왼쪽 탐색 메뉴의 **데이터 관리**에서 **데이터 소스**를 선택합니다.

1. **데이터 소스 커넥터 유형 선택** 섹션에서 **Amazon S3**로 이동한 다음 **커넥터 추가**를 선택합니다.

1. **데이터 소스 세부 정보 지정** 페이지에서 다음 작업을 수행합니다.

   1. **이름 및 설명** 아래 **데이터 소스 이름**에 **S3-data-source**를 입력합니다.

   1. **설명** 섹션은 비워 두세요.

   1. **태그**의 기본 설정을 유지하세요.

   1. **다음**을 선택합니다.

1. **동기화 설정 구성** 페이지의 **동기화 범위** 섹션에서 다음을 수행합니다.

   1. **데이터 소스 위치 입력**에서 **S3 찾아보기**를 선택합니다.

   1. **리소스 선택**에서 S3 버킷을 선택한 다음 **선택**을 선택합니다.

   1. **메타데이터 파일 접두사 폴더 위치**에서 **S3 찾아보기**를 선택합니다.

   1. **리소스 선택**의 경우, 버킷 목록에서 해당하는 버킷의 이름을 클릭합니다.

   1. **객체**의 경우 `metadata` 옵션 상자를 선택하고 **선택**을 선택합니다. 이제 위치 필드에 `metadata/`라고 표시됩니다.

   1. **액세스 제어 목록 구성 파일 위치**, **해독 키 선택** 및 **추가 구성**에 대한 기본 설정을 유지합니다.

1. **IAM 역할**의 경우 **동기화 설정 구성** 페이지에서 `kendra-role`를 선택합니다.

1. **동기화 설정 구성** 페이지의 **동기화 실행 일정**에서 **빈도**에 대해 **요청 시 실행**을 선택한 후 **다음**을 선택합니다.

1. **검토 및 생성** 페이지에서 데이터 소스 세부 정보 선택 결과를 검토한 다음 **데이터 소스 추가**를 선택합니다.

### S3 버킷을 Amazon Kendra 인덱스에 연결하는 방법 (AWS CLI)
<a name="tutorial-search-metadata-connect-s3-cli"></a>

1. 다음 텍스트를 로컬 디바이스의 텍스트 편집기에서 `S3-data-connector.json`이라는 JSON 파일로 저장합니다.

   ```
   {
      "S3Configuration":{
         "BucketName":"amzn-s3-demo-bucket",
         "DocumentsMetadataConfiguration":{
            "S3Prefix":"metadata"
         }
      }
   }
   ```

   amzn-s3-demo-bucket을 S3 버킷 이름으로 바꿉니다.

1. S3 버킷을 인덱스에 연결하려면 [create-data-source](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kendra/create-data-source.html) 명령을 사용합니다.

------
#### [ Linux ]

   ```
   aws kendra create-data-source \
           --index-id kendra-index-id \
           --name S3-data-source \
           --type S3 \
           --configuration file://path/S3-data-connector.json \
           --role-arn role-arn \
           --region aws-region
   ```

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *path/*는 로컬 디바이스에 있는 `S3-data-connector.json`의 파일 경로입니다.
   + *role-arn*은 저장한 `kendra-role-arn`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ macOS ]

   ```
   aws kendra create-data-source \
           --index-id kendra-index-id \
           --name S3-data-source \
           --type S3 \
           --configuration file://path/S3-data-connector.json \
           --role-arn role-arn \
           --region aws-region
   ```

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *path/*는 로컬 디바이스에 있는 `S3-data-connector.json`의 파일 경로입니다.
   + *role-arn*은 저장한 `kendra-role-arn`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ Windows ]

   ```
   aws kendra create-data-source ^
           --index-id kendra-index-id ^
           --name S3-data-source ^
           --type S3 ^
           --configuration file://path/S3-data-connector.json ^
           --role-arn role-arn ^
           --region aws-region
   ```

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *path/*는 로컬 디바이스에 있는 `S3-data-connector.json`의 파일 경로입니다.
   + *role-arn*은 저장한 `kendra-role-arn`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------

1. 커넥터 `Id`를 복사하여 텍스트 편집기에 `S3-connector-id`로 저장합니다. `Id`는 데이터 연결 프로세스의 상태를 추적하는 데 도움이 됩니다.

1. S3 데이터 소스가 성공적으로 연결되었는지 확인하려면 [describe-data-source](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kendra/describe-data-source.html) 명령을 사용하세요.

------
#### [ Linux ]

   ```
   aws kendra describe-data-source \
           --id S3-connector-id \
           --index-id kendra-index-id \
           --region aws-region
   ```

   위치:
   + *S3-connector-id*는 저장한 `S3-connector-id`입니다.
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ macOS ]

   ```
   aws kendra describe-data-source \
           --id S3-connector-id \
           --index-id kendra-index-id \
           --region aws-region
   ```

   위치:
   + *S3-connector-id*는 저장한 `S3-connector-id`입니다.
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ Windows ]

   ```
   aws kendra describe-data-source ^
           --id S3-connector-id ^
           --index-id kendra-index-id ^
           --region aws-region
   ```

   위치:
   + *S3-connector-id*는 저장한 `S3-connector-id`입니다.
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------

이 단계가 끝나면 Amazon S3 데이터 소스가 인덱스에 연결됩니다.

## Amazon Kendra 인덱스 동기화
<a name="tutorial-search-metadata-create-index-sync"></a>

Amazon S3 데이터 소스가 추가되었으므로 이제 Amazon Kendra 인덱스를 여기에 동기화합니다.

### Amazon Kendra 인덱스를 동기화하려면 (콘솔)
<a name="tutorial-search-metadata-sync-index-console"></a>

1. [https://console.aws.amazon.com/kendra/](https://console.aws.amazon.com/kendra/)에서 Amazon Kendra 콘솔을 엽니다.

1. **인덱스** 목록에서 `kendra-index`를 클릭합니다.

1. 왼쪽 탐색 메뉴에서 **데이터 소스**를 선택합니다.

1. **데이터 소스**에서`S3-data-source`를 선택합니다.

1. 상단 탐색 모음에서 **지금 동기화**를 선택합니다.

### Amazon Kendra 인덱스를 동기화하려면 (AWS CLI)
<a name="tutorial-search-metadata-sync-index-cli"></a>

1. 인덱스를 동기화하려면 [start-data-source-sync-job](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kendra/start-data-source-sync-job.html) 명령을 사용하세요.

------
#### [ Linux ]

   ```
   aws kendra start-data-source-sync-job \
           --id S3-connector-id \
           --index-id kendra-index-id \
           --region aws-region
   ```

   위치:
   + *S3-connector-id*는 저장한 `S3-connector-id`입니다.
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ macOS ]

   ```
   aws kendra start-data-source-sync-job \
           --id S3-connector-id \
           --index-id kendra-index-id \
           --region aws-region
   ```

   위치:
   + *S3-connector-id*는 저장한 `S3-connector-id`입니다.
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ Windows ]

   ```
   aws kendra start-data-source-sync-job ^
           --id S3-connector-id ^
           --index-id kendra-index-id ^
           --region aws-region
   ```

   위치:
   + *S3-connector-id*는 저장한 `S3-connector-id`입니다.
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------

1. 인덱스 동기화 상태를 확인하려면 [list-data-source-sync-jobs](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kendra/list-data-source-sync-jobs.html) 명령을 사용하세요.

------
#### [ Linux ]

   ```
   aws kendra list-data-source-sync-jobs \
           --id S3-connector-id \
           --index-id kendra-index-id \
           --region aws-region
   ```

   위치:
   + *S3-connector-id*는 저장한 `S3-connector-id`입니다.
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ macOS ]

   ```
   aws kendra list-data-source-sync-jobs \
           --id S3-connector-id \
           --index-id kendra-index-id \
           --region aws-region
   ```

   위치:
   + *S3-connector-id*는 저장한 `S3-connector-id`입니다.
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ Windows ]

   ```
   aws kendra list-data-source-sync-jobs ^
           --id S3-connector-id ^
           --index-id kendra-index-id ^
           --region aws-region
   ```

   위치:
   + *S3-connector-id*는 저장한 `S3-connector-id`입니다.
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------

이 단계가 끝나면 데이터 세트에 대해 검색 및 필터링 가능한 Amazon Kendra 인덱스 생성이 완료됩니다.

# 5단계: Amazon Kendra 인덱스 쿼리
<a name="tutorial-search-metadata-query-kendra"></a>

이제 Amazon Kendra 인덱스를 자연어 쿼리에 사용할 준비가 되었습니다. 인덱스를 검색할 때 Amazon Kendra는 사용자가 제공한 모든 데이터와 메타데이터를 사용하여 검색 쿼리에 가장 정확한 답변을 제공합니다.

Amazon Kendra가 응답할 수 있는 쿼리에는 세 가지 종류가 있습니다.
+ 팩토이드 쿼리(“누가”, “무엇을”, “언제”, “어디에서” 질문)
+ 서술형 쿼리(“어떻게” 질문)
+ 키워드 검색(의도와 범위가 명확하지 않은 질문)

**Topics**
+ [Amazon Kendra 인덱스 쿼리](#tutorial-search-metadata-query-kendra-basic)
+ [검색 결과 필터링](#tutorial-search-metadata-query-kendra-filters)

## Amazon Kendra 인덱스 쿼리
<a name="tutorial-search-metadata-query-kendra-basic"></a>

Amazon Kendra가 지원하는 세 가지 쿼리 유형에 해당하는 질문을 사용하여 Amazon Kendra 인덱스를 쿼리할 수 있습니다. 자세한 내용은 [쿼리](https://docs.aws.amazon.com/kendra/latest/dg/searching-example.html)를 참조하세요.

이 섹션의 예제 질문은 샘플 데이터 세트를 기반으로 선택되었습니다.

### Amazon Kendra 인덱스를 쿼리하려면 (콘솔)
<a name="tutorial-search-metadata-query-index-console"></a>

1. [https://console.aws.amazon.com/kendra/](https://console.aws.amazon.com/kendra/)에서 Amazon Kendra 콘솔을 엽니다.

1. **인덱스** 목록에서 `kendra-index`를 클릭합니다.

1. 왼쪽 탐색 메뉴에서 인덱스 검색 옵션을 선택합니다.

1. 샘플 팩토이드 쿼리를 실행하려면 검색 상자에 **Who is Lewis Hamilton?**을 입력하고 Enter 키를 누릅니다.

   반환된 첫 번째 결과는 Amazon Kendra 제안 답변이며, 답변이 포함된 데이터 파일이 포함됩니다. 나머지 결과는 권장 문서 세트를 구성합니다.

   

     
![\[Search interface showing query "Who is Lewis Hamilton?" with Formula One driver information results.\]](http://docs.aws.amazon.com/ko_kr/kendra/latest/dg/images/tutorial-query1.png)

1. 서술적 쿼리를 실행하려면 검색 상자에 **How does Formula One work?**을 입력하고 Enter 키를 누릅니다.

   Amazon Kendra 콘솔에서 반환된 또 다른 결과를 확인할 수 있습니다. 이번에는 관련 문구가 강조 표시되어 있습니다.

   

     
![\[Search results for "How does Formula One work?" showing snippets about the racing series.\]](http://docs.aws.amazon.com/ko_kr/kendra/latest/dg/images/tutorial-query2.png)

1. 키워드 검색을 실행하려면 검색 상자에 **Formula One**을 입력하고 Enter 키를 누릅니다.

   Amazon Kendra 콘솔에서 반환한 또 다른 결과와 데이터 세트에 있는 해당 구문에 대한 다른 모든 언급의 결과가 표시됩니다.

   

     
![\[Search results for "Formula One" showing Amazon Kendra suggested answers with article snippets.\]](http://docs.aws.amazon.com/ko_kr/kendra/latest/dg/images/tutorial-query3.png)

### Amazon Kendra 인덱스를 쿼리하려면 (AWS CLI)
<a name="tutorial-search-metadata-query-index-cli"></a>

1. 샘플 팩토이드 쿼리를 실행하려면 [query](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kendra/query.html) 명령을 사용하세요.

------
#### [ Linux ]

   ```
   aws kendra query \
           --index-id kendra-index-id \
           --query-text "Who is Lewis Hamilton?" \
           --region aws-region
   ```

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ macOS ]

   ```
   aws kendra query \
           --index-id kendra-index-id \
           --query-text "Who is Lewis Hamilton?" \
           --region aws-region
   ```

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ Windows ]

   ```
   aws kendra query ^
           --index-id kendra-index-id ^
           --query-text "Who is Lewis Hamilton?" ^
           --region aws-region
   ```

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------

   에 쿼리 결과가 AWS CLI 표시됩니다.

1. 샘플 서술적 쿼리를 실행하려면 [query](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kendra/query.html) 명령을 사용하세요.

------
#### [ Linux ]

   ```
   aws kendra query \
           --index-id kendra-index-id \
           --query-text "How does Formula One work?" \
           --region aws-region
   ```

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ macOS ]

   ```
   aws kendra query \
           --index-id kendra-index-id \
           --query-text "How does Formula One work?" \
           --region aws-region
   ```

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ Windows ]

   ```
   aws kendra query ^
           --index-id kendra-index-id ^
           --query-text "How does Formula One work?" ^
           --region aws-region
   ```

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------

   는 쿼리에 결과를 AWS CLI 표시합니다.

1. 샘플 키워드 검색을 실행하려면 [query](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kendra/query.html) 명령을 사용하세요.

------
#### [ Linux ]

   ```
   aws kendra query \
           --index-id kendra-index-id \
           --query-text "Formula One" \
           --region aws-region
   ```

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ macOS ]

   ```
   aws kendra query \
           --index-id kendra-index-id \
           --query-text "Formula One" \
           --region aws-region
   ```

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ Windows ]

   ```
   aws kendra query ^
           --index-id kendra-index-id ^
           --query-text "Formula One" ^
           --region aws-region
   ```

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------

   에는 쿼리에 대해 반환된 답변이 AWS CLI 표시됩니다.

## 검색 결과 필터링
<a name="tutorial-search-metadata-query-kendra-filters"></a>

Amazon Kendra 콘솔에서 사용자 지정 문서 속성을 사용하여 검색 결과를 필터링하고 정렬할 수 있습니다. Amazon Kendra가 쿼리를 처리하는 방법에 대한 자세한 내용은 [쿼리 필터링](https://docs.aws.amazon.com/kendra/latest/dg/filtering.html)을 참조하세요.

### 검색 결과를 필터링하려면 (콘솔)
<a name="tutorial-search-metadata-filter-index-console"></a>

1. [https://console.aws.amazon.com/kendra/](https://console.aws.amazon.com/kendra/)에서 Amazon Kendra 콘솔을 엽니다.

1. **인덱스** 목록에서 `kendra-index`를 클릭합니다.

1. 왼쪽 탐색 메뉴에서 인덱스 검색 옵션을 선택합니다.

1. 검색 상자에 **Soccer matches**를 쿼리로 입력하고 Enter 키를 누릅니다.

1. 왼쪽 탐색 메뉴에서 **검색 결과 필터링**을 선택하면 검색을 필터링하는 데 사용할 수 있는 패싯 목록이 표시됩니다.

1. **이벤트** 부제목 아래의 “Champions League” 확인란을 선택하면 “Champions League”가 포함된 결과로만 필터링된 검색 결과를 볼 수 있습니다.

   

     
![\[Search interface for soccer matches with filters and Amazon Kendra suggested answers.\]](http://docs.aws.amazon.com/ko_kr/kendra/latest/dg/images/tutorial-filter.png)

### 검색 결과를 필터링하려면 (AWS CLI)
<a name="tutorial-search-metadata-filter-index-cli"></a>

1. 검색에 사용할 수 있는 특정 유형(예:`EVENT`)의 개체를 보려면 [query](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kendra/query.html) 명령어를 사용하세요.

------
#### [ Linux ]

   ```
   aws kendra query \
           --index-id kendra-index-id \
           --query-text "Soccer matches" \
           --facets '[{"DocumentAttributeKey":"EVENT"}]' \
           --region aws-region
   ```

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ macOS ]

   ```
   aws kendra query \
           --index-id kendra-index-id \
           --query-text "Soccer matches" \
           --facets '[{"DocumentAttributeKey":"EVENT"}]' \
           --region aws-region
   ```

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ Windows ]

   ```
   aws kendra query ^
           --index-id kendra-index-id ^
           --query-text "Soccer matches" ^
           --facets '[{"DocumentAttributeKey":"EVENT"}]' ^
           --region aws-region
   ```

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------

   에 검색 결과가 AWS CLI 표시됩니다. 유형의 패싯 목록을 가져오려면 AWS CLI 출력의 "FacetResults" 섹션으로 `EVENT`이동하여 필터링 가능한 패싯 목록과 해당 개수를 확인합니다. 예를 들어, 패싯 중 하나는 “Champions League”입니다.
**참고**  
`EVENT` 대신, `DocumentAttributeKey` 값에 대해 [Amazon Kendra 인덱스를 생성합니다.](tutorial-search-metadata-create-index-ingest.md#tutorial-search-metadata-create-index)에서 생성한 인덱스 필드 중 하나를 선택할 수 있습니다.

1. 동일한 검색을 실행하되 “Champions League”가 포함된 결과로만 필터링하려면 [query](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/kendra/query.html) 명령어를 사용하세요.

------
#### [ Linux ]

   ```
   aws kendra query \
           --index-id kendra-index-id \
           --query-text "Soccer matches" \
           --attribute-filter '{"ContainsAny":{"Key":"EVENT","Value":{"StringListValue":["Champions League"]}}}' \
           --region aws-region
   ```

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ macOS ]

   ```
   aws kendra query \
           --index-id kendra-index-id \
           --query-text "Soccer matches" \
           --attribute-filter '{"ContainsAny":{"Key":"EVENT","Value":{"StringListValue":["Champions League"]}}}' \
           --region aws-region
   ```

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------
#### [ Windows ]

   ```
   aws kendra query ^
           --index-id kendra-index-id ^
           --query-text "Soccer matches" ^
           --attribute-filter '{"ContainsAny":{"Key":"EVENT","Value":{"StringListValue":["Champions League"]}}}' ^
           --region aws-region
   ```

   위치:
   + *kendra-index-id*는 저장한 `kendra-index-id`입니다.
   + *aws-region*은 사용자의 AWS 리전입니다.

------

   에는 필터링된 검색 결과가 AWS CLI 표시됩니다.

# 6단계: 정리
<a name="tutorial-search-metadata-cleanup"></a>

## 파일 정리
<a name="tutorial-search-metadata-cleanup-delete"></a>

이 자습서를 완료한 후 AWS 계정에서 요금 발생을 중지하려면 다음 단계를 수행할 수 있습니다.

1. **Amazon S3 버킷 삭제**

   버킷 삭제에 대한 자세한 내용은 [버킷 삭제](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html)를 참조하세요.

1. **Amazon Kendra 인덱스 삭제**

   Amazon Kendra 인덱스 삭제에 대한 자세한 내용은 [인덱스 삭제](https://docs.aws.amazon.com/kendra/latest/dg/delete-index.html)를 참조하세요.

1. **`converter.py` 삭제**
   + **콘솔의 경우:** 로 이동하여 리전이 해당 AWS 리전으로 설정되어 있는지 [AWS CloudShell](https://console.aws.amazon.com/cloudshell/)확인합니다. bash 쉘이 로드되면 환경에 다음 명령을 입력하고 Enter 키를 누릅니다.

     ```
     rm converter.py
     ```
   + **For AWS CLI:** 터미널 창에서 다음 명령을 실행합니다.

------
#### [ Linux ]

     ```
     rm file/converter.py
     ```

     위치:
     + *file/*는 로컬 디바이스에 있는 `converter.py`의 파일 경로입니다.

------
#### [ macOS ]

     ```
     rm file/converter.py
     ```

     위치:
     + *file/*는 로컬 디바이스에 있는 `converter.py`의 파일 경로입니다.

------
#### [ Windows ]

     ```
     rm file/converter.py
     ```

     위치:
     + *file/*는 로컬 디바이스에 있는 `converter.py`의 파일 경로입니다.

------

## 자세히 알아보기
<a name="tutorial-search-metadata-cleanup-2-more"></a>

Amazon Kendra를 워크플로에 통합하는 방법에 대해 자세히 알아보려면 다음 블로그 게시물을 참조하세요.
+ [향상된 검색을 위한 콘텐츠 메타데이터 태깅](https://comprehend-immersionday.workshop.aws/lab8.html)
+ [자동화된 콘텐츠 보강 기능을 갖춘 지능형 검색 솔루션 구축](https://aws.amazon.com/blogs/machine-learning/build-an-intelligent-search-solution-with-automated-content-enrichment/)

Amazon Comprehend에 대한 자세한 내용은 [https://docs.aws.amazon.com/comprehend/index.html](https://docs.aws.amazon.com/comprehend/index.html)를 참조하세요.