翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
高速リセット 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 クラスターからすべてのデータを削除するには
-
まず、データベースのリセットを実行するために使用できるトークンを生成します。この手順は、誰かが誤ってデータベースをリセットするのを防ぐためのものです。
これを行うには、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
リクエストの直後に再起動した場合、生成されたトークンが無効になるため、新しいトークンを取得するには新しいリクエストを送信する必要があります。 -
次に、
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
awscurl を使用して IAM-auth で高速リセットリクエストを送信する
AWS_ACCESS_KEY_ID
およびAWS_SECRET_ACCESS_KEY
環境変数を正しく設定します (一時的な資格情報を使用している場合はAWS_SECURITY_TOKEN
も設定します)。-
initiateDatabaseReset
リクエストは次のようになります。awscurl -X POST --service neptune-db "$SYSTEM_ENDPOINT" \ -H 'Content-Type: application/json' --region us-west-2 \ -d '{ "action" : "initiateDatabaseReset" }'
-
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 | 例 |
---|---|---|---|
|
400 |
システムコマンドパラメータ「 |
無効なパラメータ |
|
400 |
次の値が多すぎます: |
複数のアクションを含む高速リセットリクエストが「Content-type:application/x-www-form-urlencoded」のヘッダー付きで送信されました |
|
400 |
フィールド「action」が重複しています |
複数のアクションを含む高速リセットリクエストが「Content-Type: application/json」のヘッダー付きで送信されました |
|
400 |
間違ったルート: / |
リクエストが間違ったエンドポイントに送信されました |
|
400 |
必須パラメータがありません:[action] |
高速リセットリクエストには、必要な「action」パラメータが含まれていません |
|
400 |
リードレプリカインスタンスでの書き込みは許可されていません |
高速リセットリクエストがリーダーまたはステータスエンドポイントに送信されました |
|
403 |
認証トークンが見つかりません |
IAM-Auth が有効になっている DB エンドポイントに、正しいシグニチャなしで高速リセットリクエストが送信されました |
|
500 |
データベースのリセットが進行中です。クラスターが使用可能になったら、クエリを再試行してください。 |
高速リセットが開始されると、既存および着信する Gremlin/Sparql クエリはエラーとなります。 |