

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

# OpenSearch Service에서 Amazon S3 데이터 직접 쿼리
<a name="direct-query-s3-overview"></a>

이 섹션에서는 Amazon S3에 저장된 데이터를 효율적으로 쿼리하고 분석할 수 있도록 Amazon OpenSearch Service에서 데이터 소스 통합을 생성하고 구성하는 프로세스를 안내합니다.

다음 페이지에서는 Amazon S3 직접 쿼리 데이터 소스를 설정하고, 필요한 사전 조건을 탐색하고, AWS Management Console 및 OpenSearch Service API를 모두 사용하여 단계별 절차를 수행하는 방법을 알아봅니다. 또한 OpenSearch Dashboards의 AWS Glue Data Catalog 역할 매핑 및 액세스 제어 구성을 비롯한 중요한 다음 단계도 다룹니다.

**Topics**
+ [

# OpenSearch Service에서 Amazon S3 데이터 소스 통합 생성
](direct-query-s3-creating.md)
+ [

# OpenSearch Dashboards에서 S3 데이터 소스 구성 및 쿼리
](direct-query-s3-configure.md)
+ [

## 가격 책정
](#direct-query-s3-pricing)
+ [

## 제한 사항
](#direct-query-s3-limitations)
+ [

## 권장 사항
](#direct-query-s3-recommendations)
+ [

## 할당량
](#direct-query-s3-quotas)
+ [

## 지원됨 AWS 리전
](#direct-query-s3-regions)

# OpenSearch Service에서 Amazon S3 데이터 소스 통합 생성
<a name="direct-query-s3-creating"></a>

 AWS Management Console 또는 API를 통해 OpenSearch Service에 대한 새 Amazon S3 직접 쿼리 데이터 소스를 생성할 수 있습니다. 각 새 데이터 소스는를 사용하여 Amazon S3 버킷 AWS Glue Data Catalog 을 나타내는 테이블을 관리합니다.

**Topics**
+ [

## 사전 조건
](#direct-query-s3-prereq)
+ [

## 절차
](#direct-query-s3-create)
+ [

## 다음 단계
](#direct-query-s3-next-steps)
+ [

## AWS Glue Data Catalog 역할 매핑
](#direct-query-s3-permissions)
+ [

## 추가 리소스
](#direct-query-s3-additional-resources)

## 사전 조건
<a name="direct-query-s3-prereq"></a>

시작하기 전에 다음 설명서를 참조하세요.
+ [제한 사항](direct-query-s3-overview.md#direct-query-s3-limitations)
+ [권장 사항](direct-query-s3-overview.md#direct-query-s3-recommendations)
+ [할당량](direct-query-s3-overview.md#direct-query-s3-quotas)

데이터 소스를 생성하려면 먼저에 AWS 계정다음 리소스가 있어야 합니다.
+ **버전 2.13 이상의 OpenSearch 도메인.** 직접 쿼리 통합을 설정하기 위한 기반입니다. 이를 설치하는 지침은 [OpenSearch Service 도메인 생성](createupdatedomains.md#createdomains) 섹션을 참조하세요.
+ **하나 이상의 S3 버킷.** 쿼리하려는 데이터가 포함된 버킷과 쿼리 체크포인트를 저장할 버킷을 지정해야 합니다. S3 버킷을 생성하는 데 대한 지침은 Amazon S3 사용 설명서의 [버킷 생성](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)을 참조하세요.
+ **(선택 사항) 하나 이상의 AWS Glue 테이블. ** Amazon S3에서 데이터를 쿼리하려면 S3 데이터를 가리키도록 AWS Glue Data Catalog 에 테이블을 설정해야 합니다. OpenSearch Query Workbench를 사용하여 테이블을 생성해야 합니다. 기존 Hive 테이블은 호환되지 않습니다.

  Amazon S3 데이터 소스를 처음 설정하는 경우 관리자 데이터 소스를 생성하여 모든 AWS Glue Data Catalog 테이블을 구성해야 합니다. OpenSearch 기본 제공 통합을 설치하거나 OpenSearch Query Workbench를 사용하여 고급 사용 사례를 위한 사용자 지정 SQL 테이블을 생성함으로써 이 작업을 수행할 수 있습니다. VPC, CloudTrail 및 AWS WAF 로그용 테이블 생성에 대한 예제는 [VPC](https://github.com/opensearch-project/opensearch-catalog/blob/main/integrations/observability/amazon_vpc_flow/assets/create_table_vpc_schema-1.0.0.sql), [CloudTrail](https://github.com/opensearch-project/opensearch-catalog/blob/main/integrations/observability/aws_cloudtrail/assets/create_table_cloud-trail-records-1.0.0.sql) 및 용 GitHub의 설명서를 참조하세요[AWS WAF](https://github.com/opensearch-project/opensearch-catalog/blob/main/integrations/observability/aws_waf/assets/create_table-1.0.0.sql). 테이블을 생성한 후 새 Amazon S3 데이터 소스를 생성하고 한정된 테이블로 액세스를 제한할 수 있습니다.
+ **(선택 사항) 수동으로 생성한 IAM 역할. ** 이 역할을 사용하여 데이터 소스에 대한 액세스를 관리할 수 있습니다. 또는 필요한 권한을 사용하여 OpenSearch Service가 자동으로 역할을 생성하도록 할 수도 있습니다. 수동으로 생성한 IAM 역할을 사용하도록 선택한 경우 [수동으로 생성한 IAM 역할에 필요한 권한](#direct-query-s3-additional-resources-required-permissions)의 지침을 따릅니다.

## 절차
<a name="direct-query-s3-create"></a>

 AWS Management Console 또는 OpenSearch Service API를 사용하여 도메인에 직접 쿼리 데이터 소스를 설정할 수 있습니다.

### 를 사용하여 데이터 소스를 설정하려면 AWS Management Console
<a name="creating-direct-query-s3-console-create"></a>

1. Amazon OpenSearch Service 콘솔([https://console.aws.amazon.com/aos/](https://console.aws.amazon.com/aos/))로 이동합니다.

1. 왼쪽 탐색 창에서 **Domains**(도메인)를 선택합니다.

1. 새 데이터 소스를 설정하려는 도메인을 선택합니다. 그러면 도메인 세부 정보 페이지가 열립니다.

1. 일반 도메인 세부 정보 아래에서 **연결** 탭을 선택하고 **직접 쿼리** 섹션을 찾습니다.

1. **데이터 소스 구성**을 선택합니다.

1. 새 데이터 소스의 이름과 설명(선택 사항)을 입력합니다.

1. **Amazon S3 with AWS Glue Data Catalog**를 선택합니다.

1. **IAM 권한 액세스 설정**에서 액세스 관리 방법을 선택합니다.

   1. 이 데이터 소스에 대한 역할을 자동으로 생성하려면 다음 단계를 따릅니다.

      1. **새 역할 생성**을 선택합니다.

      1. IAM 역할의 이름을 입력합니다.

      1. 쿼리하려는 데이터가 포함된 S3 버킷을 하나 이상 선택합니다.

      1. 쿼리 체크포인트를 저장할 체크포인트 S3 버킷을 선택합니다.

      1. 하나 이상의 AWS Glue 데이터베이스 또는 테이블을 선택하여 쿼리할 데이터를 정의합니다. 테이블이 아직 생성되지 않은 경우 기본 데이터베이스에 대한 액세스 권한을 제공합니다.

   1. 직접 관리하는 기존 역할을 사용하려면 다음 단계를 따릅니다.

      1. **기존 역할 사용**을 선택합니다.

      1. 드롭다운 메뉴에서 기존 역할을 선택합니다.
**참고**  
자체 역할을 사용하는 경우 IAM 콘솔에서 필요한 정책을 연결하여 필요한 권한이 모두 있는지 확인해야 합니다. 자세한 내용은 [수동으로 생성한 IAM 역할에 필요한 권한](#direct-query-s3-additional-resources-required-permissions)의 샘플 정책을 참조하세요.

1. **구성**을 선택합니다. 그러면 OpenSearch 대시보드 URL이 포함된 데이터 소스 세부 정보 화면이 열립니다. 이 URL로 이동하여 다음 단계를 완료할 수 있습니다.

### OpenSearch Service API
<a name="creating-direct-query-s3-api-create"></a>

[AddDataSource](https://docs.aws.amazon.com/opensearch-service/latest/APIReference/API_AddDataSource.html) API 작업을 사용하여 도메인에 새 데이터 소스를 생성합니다.

```
POST https://es.region.amazonaws.com/2021-01-01/opensearch/domain/domain-name/dataSource

{
   "DataSourceType": {
        "S3GlueDataCatalog": {
            "RoleArn": "arn:aws:iam::account-id:role/role-name"
        }
    }
   "Description": "data-source-description",
   "Name": "my-data-source"
}
```

## 다음 단계
<a name="direct-query-s3-next-steps"></a>

### OpenSearch Dashboards 방문
<a name="direct-query-s3-next-steps-dashboard"></a>

데이터 소스가 생성된 후 OpenSearch Service에서 OpenSearch Dashboards 링크를 제공합니다. 이 링크를 사용하여 액세스 제어를 구성하고, 테이블을 정의하고, 기본 제공 통합을 설치하고, 데이터를 쿼리할 수 있습니다.

자세한 내용은 [OpenSearch Dashboards에서 S3 데이터 소스 구성 및 쿼리](direct-query-s3-configure.md) 단원을 참조하십시오.

## AWS Glue Data Catalog 역할 매핑
<a name="direct-query-s3-permissions"></a>

데이터 소스를 생성한 후 [세분화된 액세스 제어를](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/fgac.html) 활성화한 경우 직접 쿼리를 실행하려면 관리자가 아닌 사용자를 AWS Glue Data Catalog 액세스 권한이 있는 IAM 역할에 매핑해야 합니다. IAM 역할에 매핑할 수 있는 백엔드 `glue_access` 역할을 수동으로 생성하려면 다음 단계를 수행합니다.

**참고**  
인덱스는 데이터 소스에 대한 모든 쿼리에 사용됩니다. 지정된 데이터 소스의 요청 인덱스에 대한 읽기 액세스 권한이 있는 사용자는 해당 데이터 소스에 대한 *모든* 쿼리를 읽을 수 있습니다. 결과 인덱스에 대한 읽기 액세스 권한이 있는 사용자는 해당 데이터 소스에 대한 **모든 쿼리의 결과를 읽을 수 있습니다.

1. OpenSearch 대시보드의 기본 메뉴에서 **보안**, **역할** 및 **역할 생성**을 선택합니다.

1. 역할 이름을 **glue\$1access**로 지정합니다.

1. **클러스터 권한**에서 `indices:data/write/bulk*`, `indices:data/read/scroll`, `indices:data/read/scroll/clear`를 선택합니다.

1. **인덱스**에는 역할 액세스 권한이 있는 사용자에게 부여하려는 다음과 같은 인덱스를 입력합니다.
   + `.query_execution_request_<name of data source>`
   + `query_execution_result_<name of data source>`
   + `.async-query-scheduler`
   + `flint_*`

1. **인덱스 권한**에서 `indices_all`을 선택합니다.

1. **생성(Create)**을 선택합니다.

1. **매핑된 사용자(Mapped users)**, **매핑 관리(Manage mapping)**를 차례로 선택합니다.

1. **백엔드 역할**에서 도메인 호출 권한이 필요한 AWS Glue 역할의 ARN을 추가합니다.

   ```
   arn:aws:iam::account-id:role/role-name
   ```

1. **맵**을 선택하고 **매핑된 사용자**에 역할이 나타나는지 확인합니다.

역할 매핑에 대한 자세한 내용은 [사용자에 역할 매핑](fgac.md#fgac-mapping) 섹션을 참조하십시오.

## 추가 리소스
<a name="direct-query-s3-additional-resources"></a>

### 수동으로 생성한 IAM 역할에 필요한 권한
<a name="direct-query-s3-additional-resources-required-permissions"></a>

 도메인에 대한 데이터 소스를 생성할 때 데이터에 대한 액세스를 관리할 IAM 역할을 선택합니다. 여기에는 두 가지 옵션이 있습니다.

1. 자동으로 새 IAM 역할 생성

1. 수동으로 생성한 기존 IAM 역할을 사용합니다.

수동으로 생성한 역할을 사용하는 경우 역할에 올바른 권한을 연결해야 합니다. 역할의 권한이 특정 데이터 소스에 대한 액세스를 허용하고 OpenSearch Service가 해당 역할을 맡을 수 있도록 해야 합니다. 이렇게 해야만 OpenSearch Service가 데이터에 안전하게 액세스하고 데이터와 상호 작용할 수 있습니다.

다음 샘플 정책은 데이터 소스를 생성하고 관리하는 데 필요한 최소 권한을 보여줍니다. `s3:*` 또는 `AdminstratorAccess` 정책과 같이 더 광범위한 권한이 있는 경우 이러한 권한에는 샘플 정책의 최소 권한 권한이 포함된다는 점에 유의하시기 바랍니다.

다음 샘플 정책에서는 각 *자리 표시자 텍스트*를 자신의 정보로 바꿉니다.

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

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"HttpActionsForOpenSearchDomain",
         "Effect":"Allow",
         "Action":"es:ESHttp*",
"Resource":"arn:aws:es:us-east-1:111122223333:domain/example.com/*"
      },
      {
         "Sid":"AmazonOpenSearchS3GlueDirectQueryReadAllS3Buckets",
         "Effect":"Allow",
         "Action":[
            "s3:GetObject",
            "s3:GetObjectVersion",
            "s3:ListBucket"
         ],
         "Condition":{
            "StringEquals":{
               "aws:ResourceAccount":"111122223333"
            }
         },
         "Resource":"*"
      },
      {
         "Sid":"AmazonOpenSearchDirectQueryGlueCreateAccess",
         "Effect":"Allow",
         "Action":[
            "glue:CreateDatabase",
            "glue:CreatePartition",
            "glue:CreateTable",
            "glue:BatchCreatePartition"
         ],
         "Resource":"*"
      },
      {
         "Sid":"AmazonOpenSearchS3GlueDirectQueryModifyAllGlueResources",
         "Effect":"Allow",
         "Action":[
            "glue:DeleteDatabase",
            "glue:DeletePartition",
            "glue:DeleteTable",
            "glue:GetDatabase",
            "glue:GetDatabases",
            "glue:GetPartition",
            "glue:GetPartitions",
            "glue:GetTable",
            "glue:GetTableVersions",
            "glue:GetTables",
            "glue:UpdateDatabase",
            "glue:UpdatePartition",
            "glue:UpdateTable",
            "glue:BatchGetPartition",
            "glue:BatchDeletePartition",
            "glue:BatchDeleteTable"
         ],
         "Resource":[
            "arn:aws:glue:us-east-1:111122223333:table/*",
            "arn:aws:glue:us-east-1:111122223333:database/*",
            "arn:aws:glue:us-east-1:111122223333:catalog",
            "arn:aws:es:us-east-1:111122223333:domain/domain_name"
         ],
         "Condition":{
            "StringEquals":{
               "aws:ResourceAccount":"111122223333"
            }
         }
      },
      {
         "Sid":"ReadAndWriteActionsForS3CheckpointBucket",
         "Effect":"Allow",
         "Action":[
            "s3:ListMultipartUploadParts",
            "s3:DeleteObject",
            "s3:GetObject",
            "s3:PutObject",
            "s3:GetBucketLocation",
            "s3:ListBucket"
         ],
         "Condition":{
            "StringEquals":{
               "aws:ResourceAccount":"111122223333"
            }
         },
         "Resource":[
            "arn:aws:s3:::amzn-s3-demo-bucket",
            "arn:aws:s3:::amzn-s3-demo-bucket/*"
         ]
      }
   ]
}
```

------

다른 계정의 Amazon S3 버킷을 지원하려면 Amazon S3 정책에 조건을 포함하고 적절한 계정을 추가해야 합니다.

다음 샘플 조건에서는 각 *자리 표시자 텍스트*를 자신의 정보로 바꿉니다.

```
"Condition": {
                "StringEquals": {
                    "aws:ResourceAccount": "{{accountId}}"
                }
```

역할에는 대상 ID를 지정하는 다음과 같은 신뢰 정책도 있어야 합니다.

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

****  

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

------

역할을 생성하기 위한 지침은 [사용자 지정 신뢰 정책을 사용하여 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-custom.html)을 참조하세요.

OpenSearch Service에서 세분화된 액세스 제어를 활성화한 경우 데이터 소스에 대해 새 OpenSearch 세분화된 액세스 제어 역할이 자동으로 생성됩니다. 새 세분화된 액세스 제어 역할의 이름은 `AWS OpenSearchDirectQuery <name of data source>`입니다.

기본적으로 역할에는 직접 쿼리 데이터 소스 인덱스에 대한 액세스만 있습니다. 데이터 소스에 대한 액세스 권한을 제한하거나 부여하도록 역할을 구성할 수 있지만 이 역할의 액세스 권한을 조정하지 않는 것이 좋습니다. **데이터 소스를 삭제하면 이 역할이 삭제됩니다**. 조정할 경우 다른 사용자가 역할에 매핑된 경우 다른 사용자의 액세스 권한이 제거됩니다.

# OpenSearch Dashboards에서 S3 데이터 소스 구성 및 쿼리
<a name="direct-query-s3-configure"></a>

이제 데이터 소스를 생성했으므로 보안 설정을 구성하거나, Amazon S3 테이블을 정의하거나, 가속화된 데이터 인덱싱을 설정할 수 있습니다. 실제로 데이터를 쿼리하기 전에, 이 섹션에서 OpenSearch 대시보드의 다양한 데이터 소스 사용 사례를 살펴보겠습니다.

다음 섹션을 구성하려면 먼저 OpenSearch 대시보드에서 데이터 소스로 이동해야 합니다. 왼쪽 탐색에서 **데이터 관리** 아래에 있는 **데이터 소스**를 선택합니다. **데이터 소스 관리**에서 콘솔에서 생성한 데이터 소스의 이름을 선택합니다.

## 쿼리 워크벤치를 사용하여 Spark 테이블 생성
<a name="direct-query-s3-configure-tables"></a>

OpenSearch Service에서 Amazon S3로의 직접 쿼리는 AWS Glue Data Catalog내의 Spark 테이블을 사용합니다. OpenSearch 대시보드를 종료하지 않고도 쿼리 워크벤치 내에서 테이블을 생성할 수 있습니다.

데이터 소스의 기존 데이터베이스 및 테이블을 관리하거나 직접 쿼리를 사용할 새 테이블을 생성하려면 왼쪽 탐색에서 **쿼리 워크벤치**를 선택하고 데이터 소스 드롭다운에서 Amazon S3 데이터 소스를 선택합니다.

S3에 Parquet 형식으로 저장된 VPC 흐름 로그에 대한 테이블을 설정하려면 다음 쿼리를 실행합니다.

```
CREATE TABLE 
datasourcename.gluedatabasename.vpclogstable (version INT, account_id STRING, interface_id STRING, 
srcaddr STRING, dstaddr STRING, srcport INT, dstport INT, protocol INT, packets BIGINT, 
bytes BIGINT, start BIGINT, end BIGINT, action STRING, log_status STRING, 
`aws-account-id` STRING, `aws-service` STRING, `aws-region` STRING, year STRING, 
month STRING, day STRING, hour STRING) 

USING parquet PARTITIONED BY (aws-account-id, aws-service, aws-region, year, month, 
day, hour) 

LOCATION "s3://accountnum-vpcflow/AWSLogs"
```

테이블을 생성한 후 다음 쿼리를 실행하여 직접 쿼리와 호환되는지 확인합니다.

```
MSCK REPAIR TABLE  datasourcename.databasename.vpclogstable
```

## 널리 사용되는 AWS 로그 유형에 대한 통합 설정
<a name="direct-query-s3-setup-integration"></a>

Amazon S3에 저장된 AWS 로그 유형을 OpenSearch Service와 통합할 수 있습니다. OpenSearch 대시보드를 사용하여 AWS Glue Data Catalog 테이블, 저장된 쿼리 및 대시보드를 생성하는 통합을 설치합니다. 이러한 통합은 인덱싱된 뷰를 사용하여 대시보드를 최신 상태로 유지합니다.

통합 설치 지침은 OpenSearch 설명서의 [통합 자산 설치](https://opensearch.org/docs/latest/integrations/#installing-an-integration-asset)를 참조하세요.

통합을 선택할 때 `S3 Glue` 태그가 있는지 확인합니다.

통합을 설정할 때 연결 유형에서 **S3 연결**을 지정합니다. 그런 다음 통합을 위한 데이터 소스, 데이터의 Amazon S3 위치, 가속 인덱싱을 관리할 체크포인트, 사용 사례에 필요한 자산을 선택합니다.

**참고**  
체크포인트의 S3 버킷에 체크포인트 위치에 대한 쓰기 권한이 있는지 확인합니다. 이 권한이 없으면 통합의 가속화가 실패합니다.

## 액세스 제어 설정
<a name="direct-query-s3-configure-ac"></a>

데이터 소스의 세부 정보 페이지에서 **액세스 제어** 섹션을 찾아 **편집**을 선택합니다. 도메인에 세분화된 액세스 제어가 활성화된 경우 **제한됨**을 선택하고 새 데이터 소스에 대한 액세스 권한을 제공할 역할을 선택합니다. 관리자만 데이터 소스에 액세스하도록 하려는 경우 **관리자 전용**을 선택할 수도 있습니다.

**중요**  
인덱스는 데이터 소스에 대한 모든 쿼리에 사용됩니다. 지정된 데이터 소스의 요청 인덱스에 대한 읽기 액세스 권한이 있는 사용자는 해당 데이터 소스에 대한 *모든* 쿼리를 읽을 수 있습니다. 결과 인덱스에 대한 읽기 액세스 권한이 있는 사용자는 해당 데이터 소스에 대한 **모든 쿼리의 결과를 읽을 수 있습니다.

## OpenSearch Discover에서 S3 데이터 쿼리
<a name="direct-querying-s3-query"></a>

테이블을 설정하고 원하는 선택적 쿼리 가속화를 구성한 후에는 데이터 분석을 시작할 수 있습니다. 데이터를 쿼리하려면 드롭다운 메뉴에서 데이터 소스를 선택합니다. Amazon S3 및 OpenSearch Dashboards를 사용하는 경우 Discover로 이동하여 데이터 소스 이름을 선택합니다.

건너뛰기 인덱스를 사용하고 있거나 아직 인덱스를 생성하지 않은 경우 SQL 또는 PPL을 사용하여 데이터를 쿼리할 수 있습니다. 구체화된 뷰 또는 커버링 인덱스를 구성한 경우에는 이미 인덱스가 있으므로 대시보드 전체에서 대시보드 쿼리 언어(DQL)를 사용할 수 있습니다. 관찰성 플러그인과 함께 PPL을 사용하고 쿼리 워크벤치 플러그인과 함께 SQL을 사용할 수도 있습니다. 현재는 관찰성 플러그인과 쿼리 워크벤치 플러그인만 PPL 및 SQL을 지원합니다. OpenSearch Service API를 사용하여 데이터를 쿼리하려면 [async API 설명서](https://github.com/opensearch-project/sql/blob/main/docs/user/interfaces/asyncqueryinterface.rst)를 참조하세요.

**참고**  
일부 SQL 및 PPL 문과 함수는 지원되지 않습니다. 지원되는 명령 목록은 [지원되는 SQL 및 PPL 명령](direct-query-supported-commands.md) 섹션을 참조하세요.  
구체화된 뷰 또는 커버링 인덱스를 생성한 경우에는 DQL을 사용하여 데이터를 인덱싱한 경우에 한해 데이터를 쿼리할 수 있습니다.

## 문제 해결
<a name="s3-troubleshooting"></a>

결과가 예상대로 반환되지 않는 경우가 있을 수 있습니다. 문제가 발생하는 경우를 [권장 사항](direct-query-s3-overview.md#direct-query-s3-recommendations)의 지침을 따르고 있는지 확인합니다.

## 가격 책정
<a name="direct-query-s3-pricing"></a>

Amazon OpenSearch Service는 Amazon S3 다이렉트 쿼리에 대해 OpenSearch 컴퓨팅 유닛(OCU) 요금을 제공합니다. 직접 쿼리를 실행하면 청구서에 DirectQuery OCUs 사용 유형으로 나열된 시간당 OCU 요금이 발생합니다. 또한 데이터 스토리지에 대해 Amazon S3와 별도의 요금이 발생합니다.

직접 쿼리는 대화형 보기 쿼리와 인덱싱된 뷰 쿼리의 두 가지 유형이 있습니다.
+ *대화형 쿼리*는 데이터 선택기를 채우고 Amazon S3의 데이터에 대한 분석을 수행하는 데 사용됩니다. Discover에서 새 쿼리를 실행하면 OpenSearch Service는 최소 3분 동안 지속되는 새 세션을 시작합니다. OpenSearch Service는 후속 쿼리가 빠르게 실행되도록 이 세션을 활성 상태로 유지합니다.
+ *인덱싱된 뷰 쿼리*는 컴퓨팅을 사용하여 OpenSearch Service에서 인덱스를 유지 관리합니다. 이 쿼리는 다양한 양의 데이터를 명명된 인덱스로 수집하기 때문에 일반적으로 시간이 더 오래 걸립니다. Amazon S3 데이터 소스의 경우 인덱싱된 데이터는 구매한 인스턴스 유형에 따라 도메인에 저장됩니다.

자세한 내용은 [Amazon OpenSearch Service 요금](https://aws.amazon.com/opensearch-service/pricing/)에서 직접 쿼리 및 서버리스 섹션을 참조하세요.

## 제한 사항
<a name="direct-query-s3-limitations"></a>

Amazon S3의 직접 쿼리에는 다음 제한 사항이 적용됩니다.
+ S3에 대한 직접 쿼리는 OpenSearch 버전 2.13 이상을 실행하는 OpenSearch Service 도메인에서만 사용할 수 있으며에 액세스해야 합니다 AWS Glue Data Catalog. 기존 AWS Glue Data Catalog 테이블은 OpenSearch Query Workbench에서 SQL을 사용하여 다시 생성해야 합니다.
+ S3에 대한 직접 쿼리를 사용하려면 Amazon S3에 체크포인트 버킷을 지정해야 합니다. 이 버킷은 마지막 새로 고침 시간과 가장 최근에 수집된 데이터를 비롯하여 인덱싱된 뷰의 상태를 유지합니다.
+ OpenSearch 도메인 및는 동일한에 있어야 AWS Glue Data Catalog 합니다 AWS 계정. S3 버킷은 다른 계정에 있을 수 있지만(IAM 정책에 조건을 추가해야 함) 도메인 AWS 리전 과 동일한에 있어야 합니다.
+ S3와의 OpenSearch Service 직접 쿼리는 쿼리 워크벤치에서 생성된 Spark 테이블만 지원합니다. AWS Glue Data Catalog 또는 Athena 내에서 생성된 테이블은 인덱싱된 뷰를 유지하는 데 필요한 Spark 스트리밍에서 지원되지 않습니다.
+ OpenSearch 인스턴스 유형에는 선택한 특정 인스턴스 유형에 따라 10MiB 또는 100MiB의 네트워크 페이로드 제한이 적용됩니다.
+ 일부 데이터 유형은 지원되지 않습니다. 지원되는 데이터 유형은 Parquet, CSV 및 JSON으로 제한됩니다.
+ 시간이 지남에 따라 데이터 구조가 변경되는 경우 데이터 구조 변경을 고려하여 인덱싱된 뷰 또는 기본 제공 통합을 업데이트해야 합니다.
+ AWS CloudFormation 템플릿은 아직 지원되지 않습니다.
+ OpenSearch SQL 및 OpenSearch PPL 문은 직접 쿼리를 사용하는 것과 비교하여 OpenSearch 인덱스 관련 작업을 할 때 제한 사항이 서로 다릅니다. 직접 쿼리는 JOIN, 하위 쿼리 및 조회와 같은 고급 명령을 지원하지만, OpenSearch 인덱스에서 이러한 명령에 대한 지원은 제한되거나 존재하지 않습니다. 자세한 내용은 [지원되는 SQL 및 PPL 명령](direct-query-supported-commands.md) 단원을 참조하십시오.

## 권장 사항
<a name="direct-query-s3-recommendations"></a>

Amazon S3에서 직접 쿼리를 사용할 때는 다음을 권장합니다.
+ 연도, 월, 일, 시간의 파티션 형식을 사용하여 Amazon S3에 데이터를 수집하여 쿼리 속도를 높입니다.
+ 건너뛰기 인덱스를 빌드할 때는 높은 카디널리티에는 블룸 필터를 사용하고 값 범위가 큰 필드에는 최소/최대 인덱스를 사용합니다. 카디널리티가 높은 필드의 경우 값 기반 접근 방식을 사용하여 쿼리 효율성을 개선하는 것이 좋습니다.
+ 인덱스 상태 관리를 사용하여 구체화된 뷰 및 커버링 인덱스에 대한 스토리지를 유지 관리합니다.
+ `COALESCE SQL` 함수를 사용하여 누락된 열을 처리하고 결과가 반환되도록 보장합니다.
+ 쿼리에 제한을 사용하여 너무 많은 데이터를 다시 가져오지 않도록 합니다.

## 할당량
<a name="direct-query-s3-quotas"></a>

Amazon S3 데이터 소스에 대한 쿼리를 시작할 때마다 OpenSearch Service는 *세션*을 열고 최소 3분 동안 활성 상태로 유지합니다. 이렇게 하면 후속 쿼리에서 세션을 시작할 필요가 없으므로 쿼리 지연 시간이 줄어듭니다.


| 설명 | 최대 | 재정의 가능 | 
| --- | --- | --- | 
| 도메인당 연결 수 | 10 | 예 | 
| 도메인당 데이터 소스 수 | 20 | 예 | 
| 도메인당 인덱스 수 | 5 | 예 | 
| 데이터 소스별 동시 세션 수 | 10 | 예 | 
| 쿼리당 최대 OCU | 60 | 예 | 
| 최대 쿼리 실행 시간(분) | 30 | 예 | 
| 가속화당 최대 OCU | 20 | 예 | 
| 최대 임시 스토리지 | 20 | 예 | 

## 지원됨 AWS 리전
<a name="direct-query-s3-regions"></a>

다음은 Amazon S3의 직접 쿼리에 대해 지원 AWS 리전 됩니다.
+ 아시아 태평양(홍콩)
+ 아시아 태평양(뭄바이)
+ 아시아 태평양(서울) 
+ 아시아 태평양(싱가포르)
+ 아시아 태평양(시드니)
+ 아시아 태평양(도쿄)
+ 캐나다(중부)
+ 유럽(프랑크푸르트)
+  유럽(아일랜드)
+ 유럽(스톡홀름)
+ 미국 동부(버지니아 북부)
+ 미국 동부(오하이오)
+ 미국 서부(오리건)