

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

# Amazon OpenSearch Service의 인덱스 상태 관리
<a name="ism"></a>

Amazon OpenSearch Service에서 인덱스 상태 관리(ISM)를 사용하면 주기적으로 수행되는 태스크를 자동화하도록 고객 관리형 정책을 정의하고 해당 정책을 인덱스와 인덱스 패턴에 적용할 수 있습니다. 인덱스 작업을 실행하기 위해 더 이상 외부 프로세스를 설정하고 관리할 필요가 없습니다.

정책에는 기본 상태와 인덱스 전환에 사용할 수 있는 상태 목록이 포함되어 있습니다. 각 상태 내에서 수행할 작업 목록과 이러한 전환을 트리거할 조건을 정의할 수 있습니다. 일반적인 사용 사례는 일정 기간 후에 오래된 인덱스를 주기적으로 삭제하는 것입니다. 예를 들어 인덱스를 30일 후에 `read_only` 상태로 이동한 다음 90일 후에 삭제하는 정책을 정의할 수 있습니다.

정책을 인덱스에 연결하면 ISM은 5\~8분(또는 1.3 이전 클러스터의 경우 30\~48분)마다 실행되는 작업을 생성하여 정책 작업을 수행하고 조건을 확인하며 인덱스를 다른 상태로 전환합니다. 이 작업을 실행하는 기본 시간은 5분마다 임의의 0\~60% 지터가 추가되어 모든 인덱스에서 동시에 활동이 급증하지 않도록 합니다. 클러스터 상태가 빨간색이면 ISM이 작업을 실행하지 않습니다.

ISM에는 OpenSearch 또는 Elasticsearch 6.8 이상이 필요합니다.

**참고**  
이 설명서에서는 ISM 및 여러 샘플 정책에 대한 간략한 개요를 제공합니다. 또한 Amazon OpenSearch Service 도메인의 ISM과 자체 관리형 OpenSearch 클러스터의 ISM의 차이를 설명합니다. 포괄적인 파라미터 참조, 각 설정에 대한 설명 및 API 참조를 포함한 ISM에 대한 전체 설명서는 OpenSearch 설명서의 [Index State Management](https://docs.opensearch.org/latest/im-plugin/ism/index/)를 참조하세요.

**중요**  
더 이상 인덱스 템플릿을 사용하여 새로 생성된 인덱스에 ISM 정책을 적용할 수 없습니다. [ISM 템플릿 필드](https://opensearch.org/docs/latest/im-plugin/ism/policies/#sample-policy-with-ism-template-for-auto-rollover)에서 새로 생성된 인덱스를 계속해서 자동으로 관리할 수 있습니다. 이 업데이트에서는 이 설정을 사용하여 기존 CloudFormation 템플릿에 영향을 주는 주요 변경 사항을 소개합니다.

## ISM 정책 생성
<a name="ism-start"></a>

**인덱스 상태 관리를 시작하려면**

1. [https://console.aws.amazon.com/aos/home](https://console.aws.amazon.com/aos/home) Amazon OpenSearch Service 콘솔을 엽니다.

1. ISM 정책을 생성하려는 도메인을 선택합니다.

1. 도메인의 대시보드에서 OpenSearch 대시보드 URL로 이동하여 마스터 사용자 이름과 암호로 로그인합니다. URL은 다음 형식을 따릅니다.

   ```
   {{domain-endpoint}}/_dashboards/
   ```

1. OpenSearch 대시보드에서 왼쪽 탐색 창을 열고 **인덱스 관리(Index Management)**를 선택한 다음 **정책 생성(Create policy)**을 선택합니다.

1. [시각적 편집기](https://opensearch.org/docs/latest/im-plugin/ism/index/#visual-editor) 또는 [JSON 편집기](https://opensearch.org/docs/latest/im-plugin/ism/index/#json-editor)를 사용하여 정책을 생성합니다. 시각적 편집기는 보다 체계적인 정책 정의 방법을 제공하므로 사용하는 것이 좋습니다. 정책 생성에 도움을 받으려면 아래 [샘플 정책](#ism-example)을 참조하세요.

1. 정책을 생성한 후 하나 이상의 인덱스에 연결합니다.

   ```
   POST _plugins/_ism/add/{{my-index}}
   {
     "policy_id": "{{my-policy-id}}"
   }
   ```
**참고**  
도메인에서 레거시 Elasticsearch 버전을 실행 중인 경우, `_plugins` 대신 `_opendistro`를 사용하세요.

   또는 OpenSearch Dashboards에서 인덱스를 선택하고 **정책 적용(Apply policy)**을 선택합니다.

## 샘플 정책
<a name="ism-example"></a>

다음 샘플 정책은 일반 ISM 사용 사례를 자동화하는 방법을 보여줍니다.

### 핫 스토리지, 웜 스토리지, 콜드 스토리지
<a name="ism-example-cold"></a>

이 샘플 정책은 인덱스를 핫 스토리지에서 [UltraWarm](ultrawarm.md), 그리고 결국 [콜드 스토리지](cold-storage.md)로 이동합니다. 그런 다음 인덱스를 삭제합니다.

인덱스는 처음에 `hot` 상태입니다. 10일 후 ISM이 인덱스를 `warm` 상태로 전환하고 80일 후, 인덱스가 90일을 경과한 후에는 ISM이 인덱스를 `cold` 상태로 전환합니다. 1년 후, 서비스는 인덱스가 삭제 중이라는 알림을 Amazon Chime 공간에 보낸 다음 영구적으로 삭제합니다.

콜드 인덱스는 정상 `cold_delete` 작업이 아닌 `delete` 작업이 필요합니다. 또한 명시적 `timestamp_field`은(는) ISM으로 콜드 인덱스를 관리하기 위해 데이터에 필요합니다.

```
{
  "policy": {
    "description": "Demonstrate a hot-warm-cold-delete workflow.",
    "default_state": "hot",
    "schema_version": 1,
    "states": [{
        "name": "hot",
        "actions": [],
        "transitions": [{
          "state_name": "warm",
          "conditions": {
            "min_index_age": "10d"
          }
        }]
      },
      {
        "name": "warm",
        "actions": [{
          "warm_migration": {},
          "retry": {
            "count": 5,
            "delay": "1h"
          }
        }],
        "transitions": [{
          "state_name": "cold",
          "conditions": {
            "min_index_age": "90d"
          }
        }]
      },
      {
        "name": "cold",
        "actions": [{
            "cold_migration": {
              "timestamp_field": "<your timestamp field>"
            }
          }
        ],
        "transitions": [{
          "state_name": "delete",
          "conditions": {
             "min_index_age": "365d"
          }
        }]
      },
      {
        "name": "delete",
        "actions": [{
          "notification": {
            "destination": {
              "chime": {
                "url": "<URL>"
              }
            },
            "message_template": {
              "source": "The index {{ctx.index}} is being deleted."
            }
          }
        },
        {
          "cold_delete": {}
        }]
      }
    ]
  }
}
```

### 복제본 수 감소
<a name="ism-example-replica"></a>

이 샘플 정책은 7일 후에 복제본 수를 0으로 줄여 디스크 공간을 절약한 다음, 21일 후에 인덱스를 삭제합니다. 이 정책은 인덱스가 중요하지 않으며 더 이상 쓰기 요청을 수신하지 않는다고 가정합니다. 복제본 수가 0이면 데이터 손실의 위험이 있습니다.

```
{
  "policy": {
    "description": "Changes replica count and deletes.",
    "schema_version": 1,
    "default_state": "current",
    "states": [{
        "name": "current",
        "actions": [],
        "transitions": [{
          "state_name": "old",
          "conditions": {
            "min_index_age": "7d"
          }
        }]
      },
      {
        "name": "old",
        "actions": [{
          "replica_count": {
            "number_of_replicas": 0
          }
        }],
        "transitions": [{
          "state_name": "delete",
          "conditions": {
            "min_index_age": "21d"
          }
        }]
      },
      {
        "name": "delete",
        "actions": [{
          "delete": {}
        }],
        "transitions": []
      }
    ]
  }
}
```

### 인덱스 스냅샷 생성
<a name="ism-example-snapshot"></a>

이 샘플 정책은 `[snapshot](https://docs.opensearch.org/latest/im-plugin/ism/policies/#snapshot)` 작업을 사용하여 하나 이상의 문서가 포함된 즉시 인덱스의 스냅샷을 생성할 수 있습니다. `repository`는 Amazon S3를 등록한 수동 스냅샷 리포지토리의 이름입니다. `snapshot`은 스냅샷의 이름입니다. 리포지토리를 등록하기 위한 스냅샷 사전 요구 사항 및 단계는 [Amazon OpenSearch Service에서 인덱스 스냅샷 생성](managedomains-snapshots.md) 섹션을 참조하세요.

```
{
  "policy": {
    "description": "Takes an index snapshot.",
    "schema_version": 1,
    "default_state": "empty",
    "states": [{
        "name": "empty",
        "actions": [],
        "transitions": [{
          "state_name": "occupied",
          "conditions": {
            "min_doc_count": 1
          }
        }]
      },
      {
        "name": "occupied",
        "actions": [{
          "snapshot": {
            "repository": "<my-repository>",
            "snapshot": "<my-snapshot>"
            }
          }],
          "transitions": []
      }
    ]
  }
}
```

## ISM 템플릿
<a name="ism-template"></a>

템플릿 패턴과 일치하는 인덱스를 생성할 때 정책이 해당 인덱스에 자동으로 연결되도록 정책에 `ism_template` 필드를 설정할 수 있습니다. 이 예제에서 “log”로 시작하는 이름으로 만든 인덱스는 ISM 정책 `my-policy-id`와 자동으로 일치됩니다.

```
PUT _plugins/_ism/policies/{{my-policy-id}}
{
  "policy": {
    "description": "Example policy.",
    "default_state": "...",
    "states": [...],
    "ism_template": {
      "index_patterns": ["log*"],
      "priority": 100
    }
  }
}
```

자세한 예제는 [Sample policy with ISM template for auto rollover](https://opensearch.org/docs/latest/im-plugin/ism/policies/#sample-policy-with-ism-template-for-auto-rollover)(자동 롤오버를 위한 ISM 템플릿을 사용한 샘플 정책)을 참조하세요.

## 차이
<a name="ism-diff"></a>

OpenSearch 및 Elasticsearch와 비교할 때 Amazon OpenSearch Service의 ISM은 몇 가지 차이점이 있습니다.

### ISM 작업
<a name="alerting-diff-op"></a>
+ OpenSearch Service는 세 가지 고유한 ISM 작업인 `warm_migration`, `cold_migration`, `cold_delete`을(를) 지원합니다.
  + 도메인에 [UltraWarm](ultrawarm.md)이 활성화된 경우 `warm_migration` 작업을 수행하면 인덱스가 웜 스토리지로 전환됩니다.
  + 도메인에 [콜드 스토리지](cold-storage.md)가 활성화된 경우, `cold_migration` 작업은 인덱스를 콜드 스토리지로 전환하고 `cold_delete` 작업은 콜드 스토리지에서 인덱스를 삭제합니다.

  이러한 작업이 [설정된 제한 시간](https://docs.opensearch.org/latest/im-plugin/ism/policies/#actions) 내에 완료되지 않더라도 인덱스 마이그레이션 또는 삭제는 여전히 계속됩니다. 위의 작업 중 하나에 대해 [error\_notification](https://opensearch.org/docs/latest/im-plugin/ism/policies/#error-notifications)을 설정하면 시간 초과 기간 내에 완료되지 않은 경우 작업이 실패했음을 알립니다. 단, 알림은 참조용입니다. 실제 작업에는 고유한 제한 시간이 없으며 결국 성공 또는 실패할 때까지 계속 실행됩니다.
+ 도메인에서 OpenSearch 또는 Elasticsearch 7.4 이상을 실행하는 경우, OpenSearch Service는 ISM `open` 및 `close` 작업을 지원합니다.
+ 도메인에서 OpenSearch 또는 Elasticsearch 7.7 이상을 실행하는 경우, OpenSearch Service는 ISM `snapshot` 작업을 지원합니다.

### 콜드 스토리지 ISM 작업
<a name="ism-cold-storage"></a>

콜드 인덱스의 경우 다음과 같은 ISM API를 사용할 때 `?type=_cold` 파라미터를 지정해야 합니다.
+ [정책 추가](https://opensearch.org/docs/latest/im-plugin/ism/api/#add-policy)
+ [정책 제거](https://opensearch.org/docs/latest/im-plugin/ism/api/#remove-policy-from-index)
+ [업데이트 정책](https://opensearch.org/docs/latest/im-plugin/ism/api/#update-policy)
+ [실패한 인덱스 재시도](https://opensearch.org/docs/latest/im-plugin/ism/api/#retry-failed-index)
+ [인덱스 설명](https://opensearch.org/docs/latest/im-plugin/ism/api/#explain-index)

콜드 인덱스에 대한 이러한 API에는 다음과 같은 추가 차이점이 있습니다.
+ 와일드카드 연산자는 끝에서 사용할 때를 제외하고는 지원되지 않습니다. 예를 들어, `_plugins/_ism/<add, remove, change_policy, retry, explain>/logstash-*`는 지원되지만 `_plugins/_ism/<add, remove, change_policy, retry, explain>/iad-*-prod`는 지원되지 않습니다.
+ 여러 인덱스 이름 및 패턴을 지원하지 않습니다. 예를 들어, `_plugins/_ism/<add, remove, change_policy, retry, explain>/app-logs`는 지원되지만 `_plugins/_ism/<add, remove, change_policy, retry, explain>/app-logs,sample-data`는 지원되지 않습니다.

### ISM 설정
<a name="ism-diff-settings"></a>

OpenSearch 및 Elasticsearch에서는 `_cluster/settings` API를 사용하여 이용 가능한 모든 ISM 설정을 변경할 수 있습니다. Amazon OpenSearch Service에서는 다음 [ISM 설정](https://opensearch.org/docs/latest/im-plugin/ism/settings/)만 변경할 수 있습니다.
+ **클러스터 수준 설정:**
  + `plugins.index_state_management.enabled`
  + `plugins.index_state_management.history.enabled`
+ **인덱스 수준 설정:**
  + `plugins.index_state_management.rollover_alias`

   