

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

# 빠른 재설정 API를 사용하여 Amazon Neptune DB 클러스터 비우기
<a name="manage-console-fast-reset"></a>

Neptune 빠른 재설정 REST API를 사용하면 Neptune 그래프를 빠르고 쉽게 재설정하여 모든 데이터를 제거할 수 있습니다.

Neptune 노트북 내에서 [%db\$1reset](#manage-console-fast-reset-db-reset-magic) 라인 매직으로 이 작업을 수행할 수 있습니다.
+ 대부분의 경우 빠른 재설정 작업은 몇 분 내에 완료됩니다. 이 기간은 작업이 시작될 때 클러스터에 가해지는 부하에 따라 다소 달라질 수 있습니다.
+ 빠른 재설정 작업으로 인해 추가 I/O가 발생하지 않습니다.
+ 빠른 재설정 후에도 스토리지 볼륨 크기가 줄어들지 않습니다. 대신 새 데이터가 삽입될 때 스토리지가 재사용됩니다. 즉, 빠른 재설정 작업 전후에 생성된 스냅샷의 볼륨 크기가 동일합니다. 빠른 재설정 작업 전후에 생성된 스냅샷을 사용하는 복원된 클러스터의 볼륨 크기도 동일합니다.
+ 재설정 작업의 일부로 DB 클러스터의 모든 인스턴스가 재시작됩니다.
**참고**  
드문 경우이긴 하지만 이러한 서버 재시작으로 인해 클러스터 장애 조치가 발생할 수도 있습니다.

**중요**  
빠른 재설정을 사용하면 Neptune DB 클러스터와 다른 서비스의 통합이 중단될 수 있습니다. 예제:  
빠른 재설정은 데이터베이스에서 모든 스트림 데이터를 삭제하고 스트림을 완전히 재설정합니다. 즉, 스트림 소비자가 새 구성 없이는 더 이상 작동하지 않을 수 있습니다.
빠른 재설정은 작업과 엔드포인트를 포함하여 Neptune ML에서 사용 중인 SageMaker AI 리소스에 대한 모든 메타데이터를 제거합니다. 이들은 SageMaker AI에 계속 존재하며, 기존 SageMaker AI 엔드포인트를 Neptune ML 추론 쿼리에 계속 사용할 수 있지만, Neptune ML 관리 API는 더 이상 이러한 엔드포인트에서 작동하지 않습니다.
ElasticSearch와의 전체 텍스트 검색 통합과 같은 통합 역시 빠른 재설정을 통해 삭제되므로 다시 사용하려면 먼저 수동으로 다시 설정해야 합니다.

**API를 사용하여 Neptune DB 클러스터에서 모든 데이터를 삭제하려면**

1. 먼저 데이터베이스 재설정을 수행하는 데 사용할 수 있는 토큰을 생성합니다. 이 단계는 다른 사람이 실수로 데이터베이스를 재설정하는 것을 방지하기 위한 것입니다.

   이를 위해서는 DB 클러스터의 라이터 인스턴스에 있는 `/system` 엔드포인트에 `initiateDatabaseReset` 작업을 지정하라는 `HTTP POST` 요청을 보내면 됩니다.

   JSON 콘텐츠 유형을 사용하는 `curl` 명령은 다음과 같습니다.

   ```
   curl -X POST \
     -H 'Content-Type: application/json' \
         https://your_writer_instance_endpoint:8182/system \
     -d '{ "action" : "initiateDatabaseReset" }'
   ```

   또는 `x-www-form-urlencoded` 콘텐츠 유형 사용:

   ```
   curl -X POST \
     -H 'Content-Type: application/x-www-form-urlencoded' \
         https://your_writer_instance_endpoint:8182/system \
     -d 'action=initiateDatabaseReset '
   ```

   `initiateDatabaseReset` 요청은 다음과 같이 JSON 응답으로 재설정 토큰을 반환합니다.

   ```
   {
     "status" : "200 OK",
     "payload" : {
       "token" : "new_token_guid"
     }
   }
   ```

   토큰은 발급 후 1시간(60분) 동안 유효합니다.

   요청을 리더 인스턴스나 상태 엔드포인트로 보내면 Neptune에서 `ReadOnlyViolationException`이 발생합니다.

   `initiateDatabaseReset` 요청을 여러 번 보내는 경우 가장 최근에 생성된 토큰만 실제로 재설정을 수행하는 두 번째 단계에서 유효합니다.

   `initiateDatabaseReset` 요청 직후 서버를 다시 시작하면 생성된 토큰은 유효하지 않게 되므로 새 토큰을 받으려면 새 요청을 보내야 합니다.

1. 다음으로, `initiateDatabaseReset`에서 돌려받은 토큰과 함께 DB 클러스터의 라이터 인스턴스에 있는 `/system` 엔드포인트로 `performDatabaseReset` 요청을 보냅니다. 이렇게 하면 DB 클러스터의 데이터가 모두 삭제됩니다.

   JSON 콘텐츠 유형을 사용하는 `curl` 명령:

   ```
   curl -X POST \
     -H 'Content-Type: application/json' \
         https://your_writer_instance_endpoint:8182/system \
     -d '{
           "action" : "performDatabaseReset",
           "token" : "token_guid"
         }'
   ```

   또는 `x-www-form-urlencoded` 콘텐츠 유형 사용:

   ```
   curl -X POST \
     -H 'Content-Type: application/x-www-form-urlencoded' \
         https://your_writer_instance_endpoint:8182/system \
     -d 'action=performDatabaseReset&token=token_guid'
   ```

   요청은 JSON 응답을 반환합니다. 요청이 수락된 경우 응답은 다음과 같습니다.

   ```
   {
     "status" : "200 OK"
   }
   ```

   전송한 토큰이 발급된 토큰과 일치하지 않는 경우 응답은 다음과 같습니다.

   ```
   {
     "code" : "InvalidParameterException",
     "requestId":"token_guid",
     "detailedMessage" : "System command parameter 'token' : 'token_guid' does not match database reset token"
   }
   ```

   요청이 수락되고 재설정이 시작되면 서버가 다시 시작되고 데이터가 삭제됩니다. 재설정하는 동안에는 DB 클러스터에 다른 요청을 보낼 수 없습니다.

## IAM-Auth와 함께 빠른 재설정 API 사용
<a name="manage-console-fast-reset-iam-auth"></a>

DB 클러스터에서 IAM 인증을 활성화한 경우 [awscurl](https://github.com/okigan/awscurl)을 사용하여 IAM-Auth를 사용하여 인증된 빠른 재설정 명령을 보낼 수 있습니다.

**awscurl을 사용하여 IAM-Auth로 빠른 재설정 요청 전송**

1. `AWS_ACCESS_KEY_ID` 및 `AWS_SECRET_ACCESS_KEY` 환경 변수를 올바르게 설정하세요(임시 자격 증명을 사용하는 경우에도 `AWS_SECURITY_TOKEN`입니다).

1. `initiateDatabaseReset` 요청은 다음과 같습니다.

   ```
   awscurl -X POST --service neptune-db "$SYSTEM_ENDPOINT" \
     -H 'Content-Type: application/json' --region us-west-2 \
     -d '{ "action" : "initiateDatabaseReset" }'
   ```

1. `performDatabaseReset` 요청은 다음과 같습니다.

   ```
   awscurl -X POST --service neptune-db "$SYSTEM_ENDPOINT" \
     -H 'Content-Type: application/json' --region us-west-2 \
     -d '{ "action" : "performDatabaseReset" }'
   ```

## Neptune Workbench `%db_reset` 라인 매직을 사용하여 DB 클러스터 재설정
<a name="manage-console-fast-reset-db-reset-magic"></a>

Neptune Workbench는 Neptune 노트북에서 데이터베이스를 빠르게 재설정할 수 있는 `%db_reset` 라인 매직을 지원합니다.

파라미터 없이 마법을 호출하면 클러스터의 모든 데이터를 삭제할지 묻는 화면이 나타나고, 삭제한 후에는 클러스터 데이터를 더 이상 사용할 수 없음을 확인하는 확인란이 나타납니다. 이때 데이터를 삭제할지 아니면 작업을 취소할지 선택할 수 있습니다.

더 위험한 옵션은 `--yes` 또는 `-y` 옵션을 사용하여 간접적으로 `%db_reset`을 호출하는 것입니다. 이 경우 추가 메시지 없이 삭제가 수행됩니다.

REST API와 마찬가지로 두 단계로 재설정을 수행할 수도 있습니다.

```
%db_reset --generate-token
```

다음과 같이 응답합니다.

```
{
  "status" : "200 OK",
  "payload" : {
    "token" : "new_token_guid"
  }
}
```

그러면 다음을 수행:

```
%db_reset --token new_token_guid
```

다음과 같이 응답합니다.

```
{
  "status" : "200 OK"
}
```

## 빠른 재설정 작업에 대한 일반적인 오류 코드
<a name="manage-console-fast-reset-common-error-codes"></a>


| Neptune 오류 코드 | HTTP 상태 | 메시지 | 예제 | 
| --- | --- | --- | --- | 
| `InvalidParameterException` | 400 | 시스템 명령 파라미터 ‘*action*’이 지원되지 않는 값 ‘*XXX*’입니다. | 잘못된 파라미터 | 
| `InvalidParameterException` | 400 | 제공된 값이 너무 많음: *동작* | 'Content-type:Application/X-WWW-Form-Urlencoded' 헤더와 함께 두 개 이상의 액션이 전송된 빠른 재설정 요청 | 
| `InvalidParameterException` | 400 | '동작' 필드가 중복되었습니다. | 'Content-Type: application/json' 헤더와 함께 두 개 이상의 액션이 전송된 빠른 재설정 요청 | 
| `MethodNotAllowedException` | 400 | 잘못된 경로: /*bad\$1endpoint* | 요청이 잘못된 엔드포인트로 전송됨 | 
| `MissingParameterException` | 400 | 필요 파라미터 누락: [동작] | 빠른 재설정 요청에 필수 ‘동작’ 파라미터가 포함되어 있지 않음 | 
| `ReadOnlyViolationException` | 400 | 읽기 복제본 인스턴스에서는 쓰기가 허용되지 않음 | 리더 또는 상태 엔드포인트에 빠른 재설정 요청이 전송됨 | 
| `AccessDeniedException` | 403 | 인증 토큰 누락 | 빠른 재설정 요청이 올바른 서명 없이 IAM 인증이 활성화된 DB 엔드포인트로 전송됨 | 
| `ServerShutdownException` | 500 | 데이터베이스 재설정이 진행 중입니다. 클러스터를 사용할 수 있게 되면 쿼리를 다시 시도하세요. | 빠른 재설정이 시작되면 기존 쿼리와 들어오는 Gremlin/Sparql 쿼리가 실패합니다. | 