

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

# Neptune フルテキスト検索のトラブルシューティング
<a name="streams-consumer-troubleshooting"></a>

**注記**  
OpenSearch クラスターで[詳細なアクセスコントロール](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/fgac.html)を有効にした場合は、Neptune データベースでも [IAM 認証を有効にする](iam-auth-enable.md)必要があります。

Neptune から OpenSearch へのレプリケーションに関する問題を診断するには、ポーラー Lambda 関数の CloudWatch Logs を参照してください。これらのログには、ストリームから読み取られたレコードの数と、OpenSearch に正常にレプリケートされたレコードの数に関する詳細が記載されています。

`LoggingLevel` 環境変数を変更することで、Lambda 関数の LOGGING レベルを変更することもできます。

**注記**  
`LoggingLevel` を `DEBUG` に設定すると、StreamPoller によって Neptune から OpenSearch へデータがレプリケートされるときに削除されたストリームレコードや各レコードが削除された理由など、追加の詳細を表示できます。これは、レコードが欠落している場合に便利です。

Neptune ストリームコンシューマーアプリケーションは、問題の診断にも役立つ、CloudWatch 上の 2 つのメトリクスを公開します。
+ `StreamRecordsProcessed` – 単位時間当たりのアプリケーションによって処理されたレコード数。アプリケーションの実行率を追跡するのに役立ちます。
+ `StreamLagTime` – 現在時刻と処理中のストリームレコードのコミット時刻との間の時間差 (ミリ秒単位)。このメトリクスは、コンシューマーアプリケーションがどれだけ遅れているかを示します。

さらに、レプリケーションプロセスに関連するすべてのメトリクスは、CloudWatch テンプレートを使用してアプリケーションをインスタンス化したときに `ApplicationName` によって提供されたものと同じ名前で CloudWatch のダッシュボードに表示されます。

また、ポーリングが 2 回以上連続して失敗したときにトリガーされる CloudWatch アラームを作成することもできます。これを行うには、アプリケーションをインスタンス化するときに、`CreateCloudWatchAlarm` フィールドを `true` に設定します。次に、アラームがトリガーされたときに通知する E メールアドレスを指定します。

## ストリームからのレコードの読み取り中に失敗するプロセスのトラブルシューティング
<a name="streams-consumer-troubleshooting-reads"></a>

ストリームからのレコードの読み取り中にプロセスが失敗した場合は、次のことを確認してください。
+ ストリームはクラスターで有効になっています。
+ Neptune ストリームのエンドポイントは正しい形式です。
  + Gremlin または openCypher の場合: `https://your cluster endpoint:your cluster port/propertygraph/stream` またはそのエイリアスの `https://your cluster endpoint:your cluster port/pg/stream`
  + SPARQL の場合 : `https://your cluster endpoint:your cluster port/sparql/stream`

  
+ DynamoDB エンドポイントが VPC 用に設定されています。
+ モニタリングエンドポイントは VPC サブネットに設定されます。

## OpenSearch へのデータの書き込み中に失敗するプロセスのトラブルシューティング
<a name="streams-consumer-troubleshooting-writes"></a>

OpenSearch へのレコードの書き込み中にプロセスが失敗した場合は、次のことを確認してください。
+ お使いの Elasticsearch のバージョンが 7.1 以上、または Opensearch 2.3 以上であること。
+ VPC のポーラー Lambda 関数から OpenSearch にアクセスできること。
+ OpenSearch にアタッチされたセキュリティポリシーにより、インバウンド HTTP/HTTPS リクエストが許可されること。

## 既存のレプリケーション設定で Neptune と OpenSearch 間の同期が取れない問題の修正
<a name="streams-consumer-troubleshooting-sync-issues"></a>

`ExpiredStreamException` またはデータの破損により、Neptune データベースと OpenSearch ドメイン間で同期が取れない問題が発生した場合に備えて、以下の手順を使用して Neptune データベースと OpenSearch ドメインを最新のデータと同期させることができます。

この方法では、OpenSearch ドメイン内のすべてのデータが削除され、Neptune データベースの現在の状態から再同期されるため、Neptune データベースにデータを再ロードする必要がないことに注意してください。

1. 「[ストリームポーラープロセスの無効化 (一時停止)](full-text-search-pause-poller.md)」で説明されているように、レプリケーションプロセスを無効にします。

1. 以下のコマンドを使用して、OpenSearch ドメインの Neptune インデックスを削除します。

   ```
   curl -X DELETE "(your OpenSearch endpoint)/amazon_neptune"
   ```

1. データベースのクローンを作成します (「[Neptune でのデータベースクローニング](manage-console-cloning.md)」を参照)。

1. Streams API エンドポイントに対してこの種のコマンドを実行することによって、クローンされたデータベース上のストリームの最新の `eventID` を取得します (詳細については、「[Neptune Streams REST API の呼び出し](streams-using-api-call.md)」を参照)。

   ```
   curl "https://(your neptune endpoint):(port)/(propertygraph or sparql)/stream?iteratorType=LATEST"
   ```

   レスポンス内の `lastEventId` オブジェクト内の `commitNum` および `opNum` フィールドの値を書き留めておきます。

1. github の [export-neptune-to-elasticsearch](https://github.com/awslabs/amazon-neptune-tools/tree/master/export-neptune-to-elasticsearch) ツールを使用して、クローンされたデータベースから OpenSearch ドメインへの 1 回限りの同期を実行します。

1. レプリケーションスタックの DynamoDB テーブルに移動します。テーブルの名前は、 CloudFormation テンプレートで指定した**アプリケーション名** (デフォルトは `NeptuneStream`) `-LeaseTable` で、サフィックスが付きます。つまり、デフォルトのテーブル名は `NeptuneStream-LeaseTable` です。

   テーブルには行が 1 つしかないはずなので、スキャンすることでテーブルの行を調べることができます。上記で記録した `commitNum` と `opNum` の値を使用して、次の変更を行います。
   + テーブル内の `checkpoint` フィールドの値を、`commitNum` について書き留めた値に変更します。
   + テーブル内の `checkpointSubSequenceNumber` フィールドの値を、`opNum` について書き留めた値に変更します。

1. 「[ストリームポーラープロセスの再有効化](full-text-search-re-enable-poller.md)」の説明に従って、レプリケーションプロセスを再び有効にします。

1. クローンされたデータベースと`export-neptune-to-elasticsearch`ツール用に作成された CloudFormation スタックを削除します。