高速リセット API を使用して Amazon Neptune DB クラスターを空にする - Amazon Neptune

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

高速リセット API を使用して Amazon Neptune DB クラスターを空にする

Neptune 高速リセット REST API を使用すると、Neptune グラフをすばやく簡単にリセットし、すべてのデータを削除できます。

これは、%db_reset ラインマジックを使用して、Neptune Notebook 内で行うことができます。

注記

この機能は、Neptune エンジンリリース 1.0.4.0 から利用できます。

  • ほとんどの場合、高速リセット操作は数分以内に完了します。期間は、オペレーションの開始時のクラスターの負荷によって多少異なる場合があります。

  • 高速リセット操作では、I/O は追加されません。

  • 高速リセット後、ストレージボリュームのサイズは縮小しません。代わりに、新しいデータが挿入されると、ストレージが再利用されます。つまり、高速リセット操作の前後に作成されるスナップショットのボリュームサイズは同じになります。高速リセット操作の前後に作成されたスナップショットを使用して復元されたクラスターのボリュームサイズも同じになります。

  • リセットオペレーションの一環として、DB クラスター内のすべてのインスタンスが再起動されます。

    注記

    まれな状況では、これらのサーバーの再起動によってクラスターのフェイルオーバーが発生することもあります。

重要

高速リセットを使用すると、Neptune DB クラスターと他のサービスの統合が壊れる可能性があります。例:

  • 高速リセットは、データベースからすべてのストリームデータを削除し、ストリームを完全にリセットします。つまり、ストリームコンシューマーは新たな設定をしなければ動作しなくなる可能性があります。

  • 高速リセットは、Neptune ML によって使用されている SageMaker リソースに関するすべてのメタデータ (ジョブやエンドポイントを含む) を削除します。これらは SageMaker には引き続き存在し、Neptune ML 推論クエリに既存の SageMaker エンドポイントを引き続き使用できますが、Neptune ML 管理 API はそれらでは機能しなくなります。

  • ElasticSearch とのフルテキスト検索統合などの統合も高速リセットによって消去され、再度使用する前に手動で確立する必要があります。

API を使用して Neptune DB クラスターからすべてのデータを削除するには
  1. まず、データベースのリセットを実行するために使用できるトークンを生成します。この手順は、誰かが誤ってデータベースをリセットするのを防ぐためのものです。

    これを行うには、DB クラスターのライターインスタンス上の /system エンドポイントに HTTP POST リクエストを送信し、initiateDatabaseReset アクションを指定します。

    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 リクエストを複数送信した場合、実際にリセットを実行する 2 番目のステップでは、生成された最新のトークンのみが有効になります。

    サーバーが、initiateDatabaseReset リクエストの直後に再起動した場合、生成されたトークンが無効になるため、新しいトークンを取得するには新しいリクエストを送信する必要があります。

  2. 次に、initiateDatabaseReset から戻ったトークンとともに performDatabaseReset リクエストを DB クラスターのライターインスタンス上の /system エンドポイントへ送ります。これにより、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 クラスターのリセット中は、DB クラスターに他のリクエストを送信することはできません。

IAM-Auth での高速リセット API の使用

DB クラスターで Iam-Auth が有効になっている場合は、awscurl を使用し、IAM-auth 認証される高速リセットコマンドを送信します。

awscurl を使用して IAM-auth で高速リセットリクエストを送信する
  1. AWS_ACCESS_KEY_ID および AWS_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 と同様に、2 つのステップでリセットを実行することもできます。

%db_reset --generate-token

レスポンスは次のとおりです。

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

次の操作を実行します。

%db_reset --token new_token_guid

レスポンスは次のとおりです。

{ "status" : "200 OK" }

高速リセット操作の一般的なエラーコード

Neptune エラーコード HTTP status Message

InvalidParameterException

400

システムコマンドパラメータ「アクション」にはサポートされていない値「XXX」があります

無効なパラメータ

InvalidParameterException

400

次の値が多すぎます:アクション

複数のアクションを含む高速リセットリクエストが「Content-type:application/x-www-form-urlencoded」のヘッダー付きで送信されました

InvalidParameterException

400

フィールド「action」が重複しています

複数のアクションを含む高速リセットリクエストが「Content-Type: application/json」のヘッダー付きで送信されました

MethodNotAllowedException

400

間違ったルート: /bad_endpoint

リクエストが間違ったエンドポイントに送信されました

MissingParameterException

400

必須パラメータがありません:[action]

高速リセットリクエストには、必要な「action」パラメータが含まれていません

ReadOnlyViolationException

400

リードレプリカインスタンスでの書き込みは許可されていません

高速リセットリクエストがリーダーまたはステータスエンドポイントに送信されました

AccessDeniedException

403

認証トークンが見つかりません

IAM-Auth が有効になっている DB エンドポイントに、正しいシグニチャなしで高速リセットリクエストが送信されました

ServerShutdownException

500

データベースのリセットが進行中です。クラスターが使用可能になったら、クエリを再試行してください。

高速リセットが開始されると、既存および着信する Gremlin/Sparql クエリはエラーとなります。