

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

# 高速リセット API を使用して Amazon Neptune DB クラスターを空にする
<a name="manage-console-fast-reset"></a>

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

これは、[%db\$1reset](#manage-console-fast-reset-db-reset-magic) ラインマジックを使用して、Neptune Notebook 内で行うことができます。
+ ほとんどの場合、高速リセット操作は数分以内に完了します。期間は、オペレーションの開始時のクラスターの負荷によって多少異なる場合があります。
+ 高速リセット操作では、I/O は追加されません。
+ 高速リセット後、ストレージボリュームのサイズは縮小しません。代わりに、新しいデータが挿入されると、ストレージが再利用されます。つまり、高速リセット操作の前後に作成されるスナップショットのボリュームサイズは同じになります。高速リセット操作の前後に作成されたスナップショットを使用して復元されたクラスターのボリュームサイズも同じになります。
+ リセットオペレーションの一環として、DB クラスター内のすべてのインスタンスが再起動されます。
**注記**  
まれな状況では、これらのサーバーの再起動によってクラスターのフェイルオーバーが発生することもあります。

**重要**  
高速リセットを使用すると、Neptune DB クラスターと他のサービスの統合が壊れる可能性があります。例:   
高速リセットは、データベースからすべてのストリームデータを削除し、ストリームを完全にリセットします。つまり、ストリームコンシューマーは新たな設定をしなければ動作しなくなる可能性があります。
高速リセットは、Neptune ML によって使用されている SageMaker AI リソースに関するすべてのメタデータ (ジョブやエンドポイントを含む) を削除します。これらは SageMaker AI には引き続き存在し、Neptune ML 推論クエリに既存の SageMaker AI エンドポイントを引き続き使用できますが、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` リクエストの直後に再起動した場合、生成されたトークンが無効になるため、新しいトークンを取得するには新しいリクエストを送信する必要があります。

1. 次に、`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 の使用
<a name="manage-console-fast-reset-iam-auth"></a>

DB クラスターで Iam-Auth が有効になっている場合は、[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 と同様に、2 つのステップでリセットを実行することもできます。

```
%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 | システムコマンドパラメータ「*アクション*」にはサポートされていない値「*XXX*」があります | 無効なパラメータ | 
| `InvalidParameterException` | 400 | 次の値が多すぎます:*アクション* | 複数のアクションを含む高速リセットリクエストが「Content-type:application/x-www-form-urlencoded」のヘッダー付きで送信されました | 
| `InvalidParameterException` | 400 | フィールド「action」が重複しています | 複数のアクションを含む高速リセットリクエストが「Content-Type: application/json」のヘッダー付きで送信されました | 
| `MethodNotAllowedException` | 400 | 間違ったルート: /*bad\$1endpoint* | リクエストが間違ったエンドポイントに送信されました | 
| `MissingParameterException` | 400 | 必須パラメータがありません:[action] | 高速リセットリクエストには、必要な「action」パラメータが含まれていません | 
| `ReadOnlyViolationException` | 400 | リードレプリカインスタンスでの書き込みは許可されていません | 高速リセットリクエストがリーダーまたはステータスエンドポイントに送信されました | 
| `AccessDeniedException` | 403 | 認証トークンが見つかりません | IAM-Auth が有効になっている DB エンドポイントに、正しいシグニチャなしで高速リセットリクエストが送信されました | 
| `ServerShutdownException` | 500 | データベースのリセットが進行中です。クラスターが使用可能になったら、クエリを再試行してください。 | 高速リセットが開始されると、既存および着信する Gremlin/Sparql クエリはエラーとなります。 | 