빠른 재설정 API를 사용하여 Amazon Neptune DB 클러스터 비우기 - Amazon Neptune

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

빠른 재설정 API를 사용하여 Amazon Neptune DB 클러스터 비우기

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

Neptune 노트북 내에서 %db_reset 라인 매직으로 이 작업을 수행할 수 있습니다.

참고

이 기능은 Neptune 엔진 릴리스 1.0.4.0부터 사용할 수 있습니다.

  • 대부분의 경우 빠른 재설정 작업은 몇 분 내에 완료됩니다. 이 기간은 작업이 시작될 때 클러스터에 가해지는 부하에 따라 다소 달라질 수 있습니다.

  • 빠른 재설정 작업으로 인해 추가 I/O가 발생하지 않습니다.

  • 빠른 재설정 후에도 스토리지 볼륨 크기가 줄어들지 않습니다. 대신 새 데이터가 삽입될 때 스토리지가 재사용됩니다. 즉, 빠른 재설정 작업 전후에 생성된 스냅샷의 볼륨 크기가 동일합니다. 빠른 재설정 작업 전후에 생성된 스냅샷을 사용하는 복원된 클러스터의 볼륨 크기도 동일합니다.

  • 재설정 작업의 일부로 DB 클러스터의 모든 인스턴스가 재시작됩니다.

    참고

    드문 경우이긴 하지만 이러한 서버 재시작으로 인해 클러스터 장애 조치가 발생할 수도 있습니다.

중요

빠른 재설정을 사용하면 Neptune DB 클러스터와 다른 서비스의 통합이 중단될 수 있습니다. 예:

  • 빠른 재설정은 데이터베이스에서 모든 스트림 데이터를 삭제하고 스트림을 완전히 재설정합니다. 즉, 스트림 소비자가 새 구성 없이는 더 이상 작동하지 않을 수 있습니다.

  • 빠른 재설정은 작업과 엔드포인트를 포함하여 Neptune ML에서 사용 중인 SageMaker 리소스에 대한 모든 메타데이터를 제거합니다. 이들은 SageMaker에 계속 존재하며, 기존 SageMaker 엔드포인트를 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 요청 직후 서버를 다시 시작하면 생성된 토큰은 유효하지 않게 되므로 새 토큰을 받으려면 새 요청을 보내야 합니다.

  2. 다음으로, 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 사용

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

awscurl을 사용하여 IAM-Auth로 빠른 재설정 요청 전송
  1. AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY 환경 변수를 올바르게 설정하세요(임시 자격 증명을 사용하는 경우에도 AWS_SECURITY_TOKEN입니다).

  2. initiateDatabaseReset 요청은 다음과 같습니다.

    awscurl -X POST --service neptune-db "$SYSTEM_ENDPOINT" \ -H 'Content-Type: application/json' --region us-west-2 \ -d '{ "action" : "initiateDatabaseReset" }'
  3. 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 클러스터 재설정

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" }

빠른 재설정 작업에 대한 일반적인 오류 코드

Neptune 오류 코드 HTTP 상태 메시지

InvalidParameterException

400

시스템 명령 파라미터 ‘action’이 지원되지 않는 값 ‘XXX’입니다.

잘못된 파라미터

InvalidParameterException

400

제공된 값이 너무 많음: 동작

'Content-type:Application/X-WWW-Form-Urlencoded' 헤더와 함께 두 개 이상의 액션이 전송된 빠른 재설정 요청

InvalidParameterException

400

'동작' 필드가 중복되었습니다.

'Content-Type: application/json' 헤더와 함께 두 개 이상의 액션이 전송된 빠른 재설정 요청

MethodNotAllowedException

400

잘못된 경로: /bad_endpoint

요청이 잘못된 엔드포인트로 전송됨

MissingParameterException

400

필요 파라미터 누락: [동작]

빠른 재설정 요청에 필수 ‘동작’ 파라미터가 포함되어 있지 않음

ReadOnlyViolationException

400

읽기 복제본 인스턴스에서는 쓰기가 허용되지 않음

리더 또는 상태 엔드포인트에 빠른 재설정 요청이 전송됨

AccessDeniedException

403

인증 토큰 누락

빠른 재설정 요청이 올바른 서명 없이 IAM 인증이 활성화된 DB 엔드포인트로 전송됨

ServerShutdownException

500

데이터베이스 재설정이 진행 중입니다. 클러스터를 사용할 수 있게 되면 쿼리를 다시 시도하세요.

빠른 재설정이 시작되면 기존 쿼리와 들어오는 Gremlin/Sparql 쿼리가 실패합니다.