

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

# 開発におけるトラブルシューティング
<a name="troubleshooting-development"></a>

このセクションには、Managed Service for Apache Flink アプリケーションにおける開発時の問題の診断と修正に関する情報を提供します。

**Topics**
+ [システムロールバックのベストプラクティス](troubleshooting-system-rollback.md)
+ [Hudi 設定のベストプラクティス](troubleshooting-hudi.md)
+ [Apache Flink Flame Graphs](troubleshooting-update-flamegraphs.md)
+ [EFO コネクタ 1.15.2 における認証情報プロバイダーの問題](troubleshooting-credential-provider.md)
+ [サポートされていない Kinesis コネクタを使用するアプリケーション](troubleshooting-unsupported-kinesis-connectors.md)
+ [コンパイルエラー:「プロジェクトの依存関係を解決できませんでした」](troubleshooting-compile.md)
+ [無効な選択肢:「kinesisanalyticsv2」](troubleshooting-cli-update.md)
+ [UpdateApplication アクションがアプリケーションコードをリロードしない](troubleshooting-update.md)
+ [S3 ストリーミングファイルシンク:ファイルが見つかりません (例外)](troubleshooting-s3sink.md)
+ [FlinkKafka: セーブポイントによる停止に関するコンシューマの問題](troubleshooting-FlinkKafkaConsumer.md)
+ [Flink 1.15 非同期シンクデッドロック](troubleshooting-async-deadlock.md)
+ [Amazon Kinesis Data Streams のソース処理がリシャーディング中に順序通りに処理されない](troubleshooting-kinesis-data-streams-processing-out-of-order.md)
+ [リアルタイムベクトル埋め込みブループリントに関するよくある質問とトラブルシューティング](troubleshooting-blueprints.md)

# システムロールバックのベストプラクティス
<a name="troubleshooting-system-rollback"></a>

Amazon Managed Service for Apache Flink の自動システムロールバックとオペレーションの可視化機能により、アプリケーションの問題を特定して解決できます。

## システムロールバック
<a name="troubleshooting-unsupported-kinesis-connectors-error"></a>

コードのバグやアクセス許可の問題など、顧客側のエラーが原因でアプリケーションの更新またはスケーリング操作が失敗した場合、この機能にオプトインしていれば、Amazon Managed Service for Apache Flink は自動で以前の稼働バージョンへロールバックを試みます。詳細については、「[Managed Service for Apache Flink アプリケーションのシステムロールバックを有効にする](how-system-rollbacks.md)」を参照してください。この自動ロールバックが失敗した場合、またはオプトインまたはオプトアウトしていない場合、アプリケーションは `READY` 状態になります。アプリケーションを更新するには、次のステップを実行します。   Amazon Managed Service for Apache Flink のコンソールをチェックするか、`DescribeApplicationOperation` API を利用して、エラーの説明を表示し、操作が失敗した理由を確認します。   完全なエラースタックの場合は、[CloudWatch logs](https://docs.aws.amazon.com/managed-flink/latest/java/logging.html) を使用します。   一般的な問題には、アクセス許可の不足、互換性のないコード変更、インフラストラクチャの設定ミスがあります。根本的な問題を解決します。   `UpdateApplicaton` API を使用して、新しいアプリケーションバージョンを再デプロイします。   

## 手動ロールバック
<a name="troubleshooting-unsupported-kinesis-connectors-error"></a>

アプリケーションが進行しておらず、長時間一時的な状態である場合、またはアプリケーションが正常に `Running` に移行したが、正常に更新された Flink アプリケーションで処理エラーなどのダウンストリームの問題が表示される場合は、`RollbackApplication` API を使用して手動でロールバックできます。

1. `RollbackApplication` の呼び出し- これにより、以前の稼働バージョンに戻り、以前の状態が復元されます。

1. `DescribeApplicationOperation` API を使用してロールバック操作をモニタリングします。

1. ロールバックが失敗した場合は、前のシステムロールバックステップを使用します。

## 操作の可視性
<a name="troubleshooting-unsupported-kinesis-connectors-error"></a>

`ListApplicationOperations` API には、アプリケーションのすべての顧客とシステムオペレーションの履歴が表示されます。

1. 失敗した操作の *operationId* をリストから取得します。

1. `DescribeApplicationOperation` を呼び出し、ステータスと *statusDescription* を確認します。

1. もし操作が失敗した場合、その説明には調査対象となる可能性のあるエラーが記載されます。

**一般的なエラーコードのバグ:** ロールバック機能を使用して、最後の動作バージョンに戻ります。バグを解決し、更新を再試行します。

**アクセス許可の問題:** `DescribeApplicationOperation` を使用して、必要なアクセス許可を確認します。アプリケーションのアクセス許可を更新して再試行します。

**Amazon Managed Service for Apache Flink サービスの問題:** を確認する AWS Health Dashboard か、サポートケースを開きます。

# Hudi 設定のベストプラクティス
<a name="troubleshooting-hudi"></a>

Managed Service for Apache Flink で Hudi コネクタを実行するには、次の設定変更をお勧めします。

`hoodie.embed.timeline.server` の無効化

Flink の Hudi コネクタは、Flink ジョブマネージャー (JM) に埋め込みタイムライン (TM) サーバーをセットアップし、メタデータをキャッシュすることで、ジョブの並列度が高いときのパフォーマンスを向上させます。JM と TM 間の非 Flink 通信を無効にしているため、Managed Service for Apache Flink でこの埋め込みサーバーを無効にすることを推奨します。

このサーバーが有効になっている場合、Hudi 書き込みはまず JM の埋め込みサーバーへの接続を試み、Amazon S3 からのメタデータの読み取りにフォールバックします。Hudi が接続タイムアウトを発生させることで書き込み処理が遅れ、その結果 Managed Service for Apache Flink のパフォーマンスに影響を及ぼします。

# Apache Flink Flame Graphs
<a name="troubleshooting-update-flamegraphs"></a>

フレームグラフをサポートする Apache Flink バージョンのマネージドサービスのアプリケーションでは、フレームグラフがデフォルトで有効になっています。「[Flink ドキュメント](https://nightlies.apache.org/flink/flink-docs-release-1.15//docs/ops/debugging/flame_graphs/)」に記載されているように、フレームグラフを開いたままにしておくと、アプリケーションのパフォーマンスに影響する可能性があります。

 アプリケーションの Flame Graph を無効にする場合は、ケースを作成してアプリケーション ARN で無効化するようリクエストしてください。詳細については、この「[AWS サポートセンター](https://console.aws.amazon.com/support/home#/)」を参照してください。

# EFO コネクタ 1.15.2 における認証情報プロバイダーの問題
<a name="troubleshooting-credential-provider"></a>

1.15.2 以前のバージョンの Kinesis Data Streams EFO コネクタには、 `FlinkKinesisConsumer` が `Credential Provider` 設定を考慮しないという「[既知の問題](https://issues.apache.org/jira/browse/FLINK-29205)」があります。この問題により有効な構成が無視され、「`AUTO`」認証情報プロバイダーが使用されることになります。これにより、EFO コネクタを使用した Kinesis へのクロスアカウントアクセスで問題が発生する可能性があります。

このエラーを解決するには、EFO コネクタバージョン 1.15.3 以降を使用してください。

# サポートされていない Kinesis コネクタを使用するアプリケーション
<a name="troubleshooting-unsupported-kinesis-connectors"></a>

Apache Flink バージョン 1.15 以降向けの Managed Service for Apache Flink は、アプリケーション JAR またはアーカイブ (ZIP) にバンドルされているサポートされていない Kinesis Connector バージョン (バージョン 1.15.2 以前) を使用している場合、[アプリケーションの起動または更新を自動的に拒否](https://docs.aws.amazon.com/managed-flink/latest/java/flink-1-15-2.html) します。

## 拒否エラー
<a name="troubleshooting-unsupported-kinesis-connectors-error"></a>

アプリケーションの作成/更新コールを送信すると、次のようなエラーが表示されます：

```
An error occurred (InvalidArgumentException) when calling the CreateApplication operation: An unsupported Kinesis connector version has been detected in the application. Please update flink-connector-kinesis to any version equal to or newer than 1.15.2.
For more information refer to connector fix: https://issues.apache.org/jira/browse/FLINK-23528
```

## 修正手順
<a name="troubleshooting-unsupported-kinesis-connectors-steps-to-remediate"></a>
+ アプリケーションの `flink-connector-kinesis` への依存関係を更新します。Maven をプロジェクトのビルド・ツールとして使用している場合は、 [Maven の依存関係を更新してください。](#troubleshooting-unsupported-kinesis-connectors-update-maven-dependency) に従ってください。Gradle を使用している場合は、 [Gradle の依存関係を更新してください。](#troubleshooting-unsupported-kinesis-connectors-update-gradle-dependency) に従ってください。
+ アプリケーションをリパッケージする。
+ Amazon S3 バケットにアップロードします。
+ Amazon S3 バケットにアップロードしたばかりの改訂アプリケーションを使用して、アプリケーションの作成/更新リクエストを再送信します。
+ 同じエラーメッセージが引き続き表示される場合は、アプリケーションの依存関係を再確認してください。問題が解決しない場合は、サポートチケットを作成してください。

### Maven の依存関係を更新してください。
<a name="troubleshooting-unsupported-kinesis-connectors-update-maven-dependency"></a>

1. プロジェクトの `pom.xml` を開きます。

1. プロジェクトの依存関係を検索します。それらは以下のようになります。

   ```
   <project>
   
       ...
   
       <dependencies>
   
           ...
   
           <dependency>
               <groupId>org.apache.flink</groupId>
               <artifactId>flink-connector-kinesis</artifactId>
           </dependency>
   
           ...
   
       </dependencies>
   
       ...
   
   </project>
   ```

1. `flink-connector-kinesis` を1.15.2と同じバージョンまたはそれより新しいバージョンに更新します。例:

   ```
   <project>
   
       ...
   
       <dependencies>
   
           ...
   
           <dependency>
               <groupId>org.apache.flink</groupId>
               <artifactId>flink-connector-kinesis</artifactId>
               <version>1.15.2</version>
           </dependency>
   
           ...
   
       </dependencies>
   
       ...
   
   </project>
   ```

### Gradle の依存関係を更新してください。
<a name="troubleshooting-unsupported-kinesis-connectors-update-gradle-dependency"></a>

1. プロジェクト `build.gradle` (または Kotlin アプリケーションの場合は `build.gradle.kts` ) を開きます。

1. プロジェクトの依存関係を検索します。それらは以下のようになります。

   ```
   ...
   
   dependencies {
   
       ...
   
       implementation("org.apache.flink:flink-connector-kinesis")
   
       ...
   
   }
   
   ...
   ```

1. `flink-connector-kinesis` を1.15.2と同じバージョンまたはそれより新しいバージョンに更新します。例:

   ```
   ...
   
   dependencies {
   
       ...
   
       implementation("org.apache.flink:flink-connector-kinesis:1.15.2")
   
       ...
   
   }
   
   ...
   ```

# コンパイルエラー:「プロジェクトの依存関係を解決できませんでした」
<a name="troubleshooting-compile"></a>

Apache Flink 用マネージドサービスのサンプルアプリケーションをコンパイルするには、まず Apache Flink Kinesis コネクタをダウンロードしてコンパイルし、ローカルの Maven リポジトリに追加する必要があります。コネクタがリポジトリに追加されていない場合、次のようなコンパイルエラーが表示されます。

```
Could not resolve dependencies for project your project name: Failure to find org.apache.flink:flink-connector-kinesis_2.11:jar:1.8.2 in https://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced
```

このエラーを解決するには、コネクタの Apache Flink ソースコード (「[https://flink.apache.org/downloads.html](https://flink.apache.org/downloads.html)」からバージョン 1.8.2) をダウンロードする必要があります。Apache Flink ソースコードのダウンロード、コンパイル、インストールの方法については、 [Apache Flink Kinesis Streams コネクタを以前の Apache Flink バージョンで使用する](earlier.md#how-creating-apps-building-kinesis) を参照してください。

# 無効な選択肢:「kinesisanalyticsv2」
<a name="troubleshooting-cli-update"></a>

Apache Flink API 用 Managed Service の v2 を使用するには、「 AWS Command Line Interface 」(「AWS CLI」)の最新バージョンが必要です。

のアップグレードの詳細については AWS CLI、 *AWS Command Line Interface ユーザーガイド*[の「 AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/installing.html)のインストール」を参照してください。

# UpdateApplication アクションがアプリケーションコードをリロードしない
<a name="troubleshooting-update"></a>

「[UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)」アクションは、S3 オブジェクトのバージョンが指定されていない場合、同じファイル名のアプリケーションコードをリロードしません。同じファイル名でアプリケーションコードをリロードするには、S3 バケットでバージョニングを有効にし、 `ObjectVersionUpdate` パラメータを使用して新しいオブジェクトバージョンを指定します。S3バケットでオブジェクトのバージョニングを有効にする方法の詳細については、「[バージョニングの有効化または無効化](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html)」を参照してください。

# S3 ストリーミングファイルシンク:ファイルが見つかりません (例外)
<a name="troubleshooting-s3sink"></a>

Apache Flink アプリケーション用 Managed Serviceでは、セーブポイントによって参照される進行中のパーツファイルが見つからない場合、スナップショットから開始すると、処理中のパーツファイル `FileNotFoundException` に遭遇する可能性があります。この障害モードが発生した場合、Apache Flink アプリケーション用 Managed Serviceのオペレータ状態は通常回復不能になり、 `SKIP_RESTORE_FROM_SNAPSHOT` を使用してスナップショットなしで再起動する必要があります。以下のスタックトレースの例を参照してください。

```
java.io.FileNotFoundException: No such file or directory: s3://amzn-s3-demo-bucket/pathj/INSERT/2023/4/19/7/_part-2-1234_tmp_12345678-1234-1234-1234-123456789012
        at org.apache.hadoop.fs.s3a.S3AFileSystem.s3GetFileStatus(S3AFileSystem.java:2231)
        at org.apache.hadoop.fs.s3a.S3AFileSystem.innerGetFileStatus(S3AFileSystem.java:2149)
        at org.apache.hadoop.fs.s3a.S3AFileSystem.getFileStatus(S3AFileSystem.java:2088)
        at org.apache.hadoop.fs.s3a.S3AFileSystem.open(S3AFileSystem.java:699)
        at org.apache.hadoop.fs.FileSystem.open(FileSystem.java:950)
        at org.apache.flink.fs.s3hadoop.HadoopS3AccessHelper.getObject(HadoopS3AccessHelper.java:98)
        at org.apache.flink.fs.s3.common.writer.S3RecoverableMultipartUploadFactory.recoverInProgressPart(S3RecoverableMultipartUploadFactory.java:97)
...
```

Flink `StreamingFileSink` は [File Systems](https://nightlies.apache.org/flink/flink-docs-release-1.15/docs/deployment/filesystems/overview/) がサポートするファイルシステムにレコードを書き込みます。受信ストリームは無制限であるため、データは有限サイズの部分ファイルに編成されて、データが書き込まれると新しいファイルが追加されます。パーツのライフサイクルとロールオーバーポリシーによって、パーツファイルのタイミング、サイズ、名前が決まります。

チェックポイントとセーブポイント (スナップショット) 中に、保留中のすべてのファイルの名前が変更され、コミットされます。ただし、処理中のパーツファイルはコミットされずに名前が変更され、その参照はチェックポイントまたはセーブポイントのメタデータ内に保持され、ジョブの復元時に使用されます。これらの処理中のパーツファイルは、最終的に Pending にロールオーバーされ、名前が変更され、後続のチェックポイントまたはセーブポイントによってコミットされます。

処理中のパーツファイルが見つからない場合の根本原因と緩和策は次のとおりです。
+ Apache Flink 用 Managed Service の起動に使用される古いスナップショット — Amazon S3 StreamingFileSink で Apache Flink 用 Managed Service を開始するには、アプリケーションの停止または更新時に作成された最新のシステムスナップショットのみを使用できます。このような障害を回避するには、最新のシステムスナップショットを使用してください。
  + たとえば、停止中または更新中に、システム・トリガーによるスナップショットではなく、 `CreateSnapshot` を使用して作成されたスナップショットを選択した場合に発生します。古いスナップショットのセーブポイントは、後続のチェックポイントまたはセーブポイントによって名前が変更されコミットされた、進行中のパーツファイルへの古い参照を保持します。
  + これは、システムがトリガーした最新の Stop/Update イベント以外のスナップショットが選択された場合にも発生する可能性があります。例えば、システム・スナップショットが無効になっているが、 `RESTORE_FROM_LATEST_SNAPSHOT` が設定されているアプリケーションです。一般的に、Amazon S3 StreamingFileSink を使用する Apache Flink アプリケーション用 Managed Service では、常にシステムスナップショットを有効にして `RESTORE_FROM_LATEST_SNAPSHOT` を設定する必要があります。
+ 進行中の部分ファイルの削除 — 処理中の部分ファイルは S3 バケットにあるため、バケットにアクセスできる他のコンポーネントやアクターによって削除される可能性があります。
  + これは、アプリを長時間停止していて、アプリのセーブポイントで参照されている進行中のパーツファイルが「[S3 バケットの MultipartUpload](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpu-abort-incomplete-mpu-lifecycle-config.html)」ライフサイクルポリシーによって削除された場合に発生する可能性があります。このような障害を回避するには、S3 Bucket MPU ライフサイクルポリシーがユースケースに十分に対応した期間を対象としていることを確認してください。
  + これは、処理中のパーツファイルが手動で削除された場合や、システムの別のコンポーネントによって削除された場合にも発生する可能性があります。このような不具合を回避するには、処理中のパーツファイルが他のアクターやコンポーネントによって削除されないようにしてください。
+ セーブポイントの後に自動チェックポイントがトリガーされる競合状態 — これは 1.13 以前の Apache Flink 用 Managed Service バージョンに影響します。この問題は Managed Service for Apache Flink バージョン 1.15 で修正されています。Managed Service for Apache Flink の最新バージョンにアプリケーションを移行して、再発を防ぎます。また、StreamingFileSink から「[FileSink](https://nightlies.apache.org/flink/flink-docs-release-1.19/docs/connectors/datastream/filesystem/#file-sink)」に移行することもお勧めします。
  + アプリケーションが停止または更新されると、Apache Flink 用 Managed Service はセーブポイントをトリガーし、2 つのステップでアプリケーションを停止します。2 つのステップの間に自動チェックポイントがトリガーされると、処理中のパーツファイルの名前が変更され、コミットされる可能性があるため、セーブポイントは使用できなくなります。

# FlinkKafka: セーブポイントによる停止に関するコンシューマの問題
<a name="troubleshooting-FlinkKafkaConsumer"></a>

レガシー FlinkKafkaConsumer を使用している場合、システムスナップショットを有効にしていると、アプリケーションが更新、停止、またはスケーリングで動かなくなる可能性があります。この 「[問題](https://issues.apache.org/jira/browse/FLINK-28758)」 に対する修正は公開されていないため、この問題を軽減するために新しい 「[KafkaSource](https://nightlies.apache.org/flink/flink-docs-master/docs/connectors/datastream/kafka/#kafka-source)」 にアップグレードすることをお勧めします。

スナップショットを有効にして `FlinkKafkaConsumer` を使用している場合、Flink ジョブが savepoint API リクエストで STOP を処理すると、 `ClosedException` がランタイムエラーで報告されて `FlinkKafkaConsumer` が失敗する可能性があります。このような状況では、Flink アプリケーションが停止し、チェックポイント失敗と表示されます。

# Flink 1.15 非同期シンクデッドロック
<a name="troubleshooting-async-deadlock"></a>

AsyncSink インターフェイスを実装する Apache Flink の AWS コネクタには[既知の問題](https://issues.apache.org/jira/browse/FLINK-32230)があります。これは、以下のコネクターで Flink 1.15 を使用するアプリケーションに影響します。
+ Java アプリケーションの場合:
  + KinesisStreamsSink — `org.apache.flink:flink-connector-kinesis`
  + KinesisStreamsSink — `org.apache.flink:flink-connector-aws-kinesis-streams`
  + KinesisFirehoseSink — `org.apache.flink:flink-connector-aws-kinesis-firehose`
  + DynamoDbSink — `org.apache.flink:flink-connector-dynamodb`
+ Flink SQL/テーブルAPI/Python アプリケーション:
  + Kinesis – `org.apache.flink:flink-sql-connector-kinesis`
  + Kinesis – `org.apache.flink:flink-sql-connector-aws-kinesis-streams`
  + firehose - `org.apache.flink:flink-sql-connector-aws-kinesis-firehose`
  + DynamoDB - `org.apache.flink:flink-sql-connector-dynamodb`

影響を受けるアプリケーションには次の症状があります。
+ Flink ジョブの `RUNNING` 状態は変わりませんが、データは処理されていません。
+ ジョブは再起動されません。
+ チェックポイントがタイムアウトしています。

この問題は、 AWS SDK の[バグ](https://github.com/aws/aws-sdk-java-v2/issues/4354)が原因で、非同期 HTTP クライアントの使用時に発信者に特定のエラーが発生しません。その結果、シンクはチェックポイントフラッシュ操作中に処理中のリクエストが完了するまで無期限に待機することになります。

この問題は、バージョン **2.20.144** 以降の AWS SDK で修正されました。

以下は、影響を受けるコネクタを更新してアプリケーションで新しいバージョンの AWS SDK を使用する方法の手順です。

**Topics**
+ [Java アプリケーションを更新する](troubleshooting-async-deadlock-update-java-apps.md)
+ [Python アプリケーションを更新する](troubleshooting-async-deadlock-update-python-apps.md)

# Java アプリケーションを更新する
<a name="troubleshooting-async-deadlock-update-java-apps"></a>

Java アプリケーションを更新するには、以下の手順に従います。

## フリンク・コネクター・キネシス
<a name="troubleshooting-async-deadlock-update-java-apps-flink-connector-kinesis"></a>

このアプリケーションは `flink-connector-kinesis` を使用します。

Kinesis コネクタはシェーディングを使用して、 AWS SDK を含む一部の依存関係をコネクタ jar にパッケージ化します。 AWS SDK バージョンを更新するには、次の手順を使用して、これらのシェードされたクラスを置き換えます。

------
#### [ Maven ]

1. プロジェクトの依存関係として Kinesis コネクタと必要な AWS SDK モジュールを追加します。

1. `maven-shade-plugin` を設定します。

   1. Kinesis コネクタ jar のコンテンツをコピーするときに、シェーディングされた AWS SDK クラスを除外するフィルターを追加します。

   1. Kinesis コネクタで予想されるように、更新された AWS SDK クラスをパッケージに移動する再配置ルールを追加します。

   **pom.xml** 

   ```
   <project>
       ...    
       <dependencies>
           ...
           <dependency>
               <groupId>org.apache.flink</groupId>
               <artifactId>flink-connector-kinesis</artifactId>
               <version>1.15.4</version>
           </dependency>
           
           <dependency>
               <groupId>software.amazon.awssdk</groupId>
               <artifactId>kinesis</artifactId>
               <version>2.20.144</version>
           </dependency>
           <dependency>
               <groupId>software.amazon.awssdk</groupId>
               <artifactId>netty-nio-client</artifactId>
               <version>2.20.144</version>
           </dependency>
           <dependency>
               <groupId>software.amazon.awssdk</groupId>
               <artifactId>sts</artifactId>
               <version>2.20.144</version>
           </dependency>
           ...
       </dependencies>
       ...
       <build>
           ...
           <plugins>
               ...
               <plugin>
                   <groupId>org.apache.maven.plugins</groupId>
                   <artifactId>maven-shade-plugin</artifactId>
                   <version>3.1.1</version>
                   <executions>
                       <execution>
                           <phase>package</phase>
                           <goals>
                               <goal>shade</goal>
                           </goals>
                           <configuration>
                               ...
                               <filters>
                                   ...
                                   <filter>
                                       <artifact>org.apache.flink:flink-connector-kinesis</artifact>
                                       <excludes>
                                           <exclude>org/apache/flink/kinesis/shaded/software/amazon/awssdk/**</exclude>
                                           <exclude>org/apache/flink/kinesis/shaded/org/reactivestreams/**</exclude>
                                           <exclude>org/apache/flink/kinesis/shaded/io/netty/**</exclude>
                                           <exclude>org/apache/flink/kinesis/shaded/com/typesafe/netty/**</exclude>
                                       </excludes>
                                   </filter>
                                   ...
                               </filters>
                               <relocations>
                                   ...
                                   <relocation>
                                       <pattern>software.amazon.awssdk</pattern>
                                       <shadedPattern>org.apache.flink.kinesis.shaded.software.amazon.awssdk</shadedPattern>
                                   </relocation>
                                   <relocation>
                                       <pattern>org.reactivestreams</pattern>
                                       <shadedPattern>org.apache.flink.kinesis.shaded.org.reactivestreams</shadedPattern>
                                   </relocation>
                                   <relocation>
                                       <pattern>io.netty</pattern>
                                       <shadedPattern>org.apache.flink.kinesis.shaded.io.netty</shadedPattern>
                                   </relocation>
                                   <relocation>
                                       <pattern>com.typesafe.netty</pattern>
                                       <shadedPattern>org.apache.flink.kinesis.shaded.com.typesafe.netty</shadedPattern>
                                   </relocation>
                                   ...
                               </relocations>
                              ...
                           </configuration>
                       </execution>
                   </executions>
               </plugin>
               ...
           </plugins>
           ... 
       </build>
   </project>
   ```

------
#### [ Gradle ]

1. プロジェクトの依存関係として Kinesis コネクタと必要な AWS SDK モジュールを追加します。

1. ShadowJar の設定を調整します。

   1. Kinesis コネクタ jar のコンテンツをコピーするときは、シェーディングされた AWS SDK クラスを除外します。

   1. 更新された AWS SDK クラスを Kinesis コネクタで想定されるパッケージに再配置します。

   「**グラドルをビルドする**」

   ```
   ...
   dependencies {
       ...
       flinkShadowJar("org.apache.flink:flink-connector-kinesis:1.15.4")
       
       flinkShadowJar("software.amazon.awssdk:kinesis:2.20.144")
       flinkShadowJar("software.amazon.awssdk:sts:2.20.144")
       flinkShadowJar("software.amazon.awssdk:netty-nio-client:2.20.144")
       ...
   }
   ...
   shadowJar {
       configurations = [project.configurations.flinkShadowJar]
   
       exclude("software/amazon/kinesis/shaded/software/amazon/awssdk/**/*")
       exclude("org/apache/flink/kinesis/shaded/org/reactivestreams/**/*.class")
       exclude("org/apache/flink/kinesis/shaded/io/netty/**/*.class")
       exclude("org/apache/flink/kinesis/shaded/com/typesafe/netty/**/*.class")
       
       relocate("software.amazon.awssdk", "org.apache.flink.kinesis.shaded.software.amazon.awssdk")
       relocate("org.reactivestreams", "org.apache.flink.kinesis.shaded.org.reactivestreams")
       relocate("io.netty", "org.apache.flink.kinesis.shaded.io.netty")
       relocate("com.typesafe.netty", "org.apache.flink.kinesis.shaded.com.typesafe.netty")
   }
   ...
   ```

------

## 影響を受けるその他のコネクター
<a name="troubleshooting-async-deadlock-update-java-apps-flink-another-connector"></a>

影響を受ける別のコネクタをアプリケーションで使用する場合:

 AWS SDK バージョンを更新するには、プロジェクトビルド設定で SDK バージョンを適用する必要があります。

------
#### [ Maven ]

 AWS SDK 部品表 (BOM) を`pom.xml`ファイルの依存関係管理セクションに追加して、プロジェクトの SDK バージョンを適用します。

**pom.xml**

```
<project>
    ...    
    <dependencyManagement>
        <dependencies>
            ...
            <dependency>
                <groupId>software.amazon.awssdk</groupId>
                <artifactId>bom</artifactId>
                <version>2.20.144</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
            ...
        </dependencies>
    </dependencyManagement>
    ...
</project>
```

------
#### [ Gradle ]

 AWS SDK 部品表 (BOM) にプラットフォームの依存関係を追加して、プロジェクトの SDK バージョンを適用します。これには Gradle 5.0 以降が必要です。

「**グラドルをビルドする**」

```
...
dependencies {
    ...
    flinkShadowJar(platform("software.amazon.awssdk:bom:2.20.144"))
    ...
}
...
```

------

# Python アプリケーションを更新する
<a name="troubleshooting-async-deadlock-update-python-apps"></a>

Python アプリケーションでは、コネクタと他の Java 依存関係を単一の uber-jar の一部としてパッケージ化する方法と、コネクタ jar を直接使用する方法の 2 つの方法でコネクタを使用できます。Async Sink デッドロックの影響を受けるアプリケーションを修正するには:
+ アプリケーションが uber jar を使用している場合は、 [Java アプリケーションを更新する](troubleshooting-async-deadlock-update-java-apps.md) の指示に従ってください。
+ コネクタ JAR をソースから再構築するには、以下の手順に従います。

「**ソースからコネクタを構築:**」

「[Flink のビルド要件と同様の前提条件:](https://nightlies.apache.org/flink/flink-docs-release-1.15/docs/flinkdev/building/#build-flink)」
+ Java 11
+ Maven 3.2.5

## Flink-sql-コネクタ-キネシス
<a name="troubleshooting-async-deadlock-update-python-apps-flink-sql-connector-kinesis"></a>

1. Flink 1.15.4 のソースコードのダウンロード:

   ```
   wget https://archive.apache.org/dist/flink/flink-1.15.4/flink-1.15.4-src.tgz
   ```

1. ソースコードの解凍:

   ```
   tar -xvf flink-1.15.4-src.tgz
   ```

1. Kinesis コネクタディレクトリに移動します。

   ```
   cd flink-1.15.4/flink-connectors/flink-connector-kinesis/
   ```

1. コネクタ jar をコンパイルしてインストールし、必要な AWS SDK バージョンを指定します。`-DskipTests` ビルド時間を短縮するには、 `-Dfast` テスト実行をスキップして追加のソースコードチェックをスキップします。

   ```
   mvn clean install -DskipTests -Dfast -Daws.sdkv2.version=2.20.144
   ```

1. Kinesis コネクタディレクトリに移動します。

   ```
   cd ../flink-sql-connector-kinesis
   ```

1. SQL コネクタ jar をコンパイルしてインストールします。

   ```
   mvn clean install -DskipTests -Dfast
   ```

1. 作成された jar は次の場所で入手できます。

   ```
   target/flink-sql-connector-kinesis-1.15.4.jar
   ```

## フリンク-sql-コネクタ-aws-kinesis-ストリーム
<a name="troubleshooting-async-deadlock-update-python-apps-flink-sql-connector-aws-kinesis-streams"></a>

1. Flink 1.15.4 のソースコードのダウンロード:

   ```
   wget https://archive.apache.org/dist/flink/flink-1.15.4/flink-1.15.4-src.tgz
   ```

1. ソースコードの解凍:

   ```
   tar -xvf flink-1.15.4-src.tgz
   ```

1. Kinesis コネクタディレクトリに移動します。

   ```
   cd flink-1.15.4/flink-connectors/flink-connector-aws-kinesis-streams/
   ```

1. コネクタ jar をコンパイルしてインストールし、必要な AWS SDK バージョンを指定します。`-DskipTests` ビルド時間を短縮するには、 `-Dfast` テスト実行をスキップして追加のソースコードチェックをスキップします。

   ```
   mvn clean install -DskipTests -Dfast -Daws.sdk.version=2.20.144
   ```

1. Kinesis コネクタディレクトリに移動します。

   ```
   cd ../flink-sql-connector-aws-kinesis-streams
   ```

1. SQL コネクタ jar をコンパイルしてインストールします。

   ```
   mvn clean install -DskipTests -Dfast
   ```

1. 作成された jar は次の場所で入手できます。

   ```
   target/flink-sql-connector-aws-kinesis-streams-1.15.4.jar
   ```

## フリンク-sql-コネクタ-aws-kinesis-firehose
<a name="troubleshooting-async-deadlock-update-python-apps-flink-sql-connector-kinesis-firehose"></a>

1. Flink 1.15.4 のソースコードのダウンロード:

   ```
   wget https://archive.apache.org/dist/flink/flink-1.15.4/flink-1.15.4-src.tgz
   ```

1. ソースコードの解凍:

   ```
   tar -xvf flink-1.15.4-src.tgz
   ```

1. コネクタディレクトリに移動

   ```
   cd flink-1.15.4/flink-connectors/flink-connector-aws-kinesis-firehose/
   ```

1. コネクタ jar をコンパイルしてインストールし、必要な AWS SDK バージョンを指定します。`-DskipTests` ビルド時間を短縮するには、 `-Dfast` テスト実行をスキップして追加のソースコードチェックをスキップします。

   ```
   mvn clean install -DskipTests -Dfast -Daws.sdk.version=2.20.144
   ```

1. SQL コネクタディレクトリに移動します。

   ```
   cd ../flink-sql-connector-aws-kinesis-firehose
   ```

1. SQL コネクタ jar をコンパイルしてインストールします。

   ```
   mvn clean install -DskipTests -Dfast
   ```

1. 作成された jar は次の場所で入手できます。

   ```
   target/flink-sql-connector-aws-kinesis-firehose-1.15.4.jar
   ```

## flink-sql-connector-dynamodb
<a name="troubleshooting-async-deadlock-update-python-apps-flink-sql-connector-dynamodb"></a>

1. Flink 1.15.4 のソースコードのダウンロード:

   ```
   wget https://archive.apache.org/dist/flink/flink-connector-aws-3.0.0/flink-connector-aws-3.0.0-src.tgz
   ```

1. ソースコードの解凍:

   ```
   tar -xvf flink-connector-aws-3.0.0-src.tgz
   ```

1. コネクタディレクトリに移動

   ```
   cd flink-connector-aws-3.0.0
   ```

1. コネクタ jar をコンパイルしてインストールし、必要な AWS SDK バージョンを指定します。`-DskipTests` ビルド時間を短縮するには、 `-Dfast` テスト実行をスキップして追加のソースコードチェックをスキップします。

   ```
   mvn clean install -DskipTests -Dfast -Dflink.version=1.15.4 -Daws.sdk.version=2.20.144
   ```

1. 作成された jar は次の場所で入手できます。

   ```
   flink-sql-connector-dynamodb/target/flink-sql-connector-dynamodb-3.0.0.jar
   ```

# Amazon Kinesis Data Streams のソース処理がリシャーディング中に順序通りに処理されない
<a name="troubleshooting-kinesis-data-streams-processing-out-of-order"></a>

現在の FlinkKinesisConsumer 実装では、Kinesis シャード間の強力な順序保証は提供されていません。これにより、Kinesis Stream のリシャーディング時、特に処理遅延が発生している Flink アプリケーションでは、処理の順序が狂う可能性があります。たとえば、イベント時間に基づくウィンドウオペレーターのような状況下では、遅延が原因でイベントが破棄される可能性があります。

![\[Diagram showing shards and shard consumers with time progression and trim horizon.\]](http://docs.aws.amazon.com/ja_jp/managed-flink/latest/java/images/flink-ts.png)


これはオープンソースの Flink の[既知の問題](https://issues.apache.org/jira/browse/FLINK-6349)です。コネクタの修正が利用可能になるまで、Flink アプリケーションが Kinesis データストリームのリパーティショニング中に遅れないようにすることが重要です。Flink アプリケーションが処理遅延を許容できるようにすることで、処理順序が狂った場合の影響とデータ損失のリスクを最小限に抑えることができます。

# リアルタイムベクトル埋め込みブループリントに関するよくある質問とトラブルシューティング
<a name="troubleshooting-blueprints"></a>

次のよくある質問とトラブルシューティングセクションを確認して、リアルタイムのベクトル埋め込みブループリントの問題をトラブルシューティングします。リアルタイムベクトル埋め込みブループリントの詳細については、「[Real-time vector embedding blueprints](https://docs.aws.amazon.com/msk/latest/developerguide/ai-vector-embedding-integration-learn-more.html)」を参照してください。

Managed Service for Apache Flink アプリケーションの一般的なトラブルシューティングについては、「[https://docs.aws.amazon.com/managed-flink/latest/java/troubleshooting-runtime.html](https://docs.aws.amazon.com/managed-flink/latest/java/troubleshooting-runtime.html)」を参照してください。

**Topics**
+ [リアルタイムベクトル埋め込みブループリント - よくある質問](troubleshooting-blueprints-FAQ.md)
+ [リアルタイムベクトル埋め込みブループリント - トラブルシューティング](troubleshooting-blueprints-TS.md)

# リアルタイムベクトル埋め込みブループリント - よくある質問
<a name="troubleshooting-blueprints-FAQ"></a>

リアルタイムベクトル埋め込みブループリントに関する次のよくある質問を確認します。リアルタイムベクトル埋め込みブループリントの詳細については、「[Real-time vector embedding blueprints](https://docs.aws.amazon.com/msk/latest/developerguide/ai-vector-embedding-integration-learn-more.html)」を参照してください。

**Topics**
+ [このブループリントはどのような AWS リソースを作成しますか?](#troubleshooting-blueprints-1)
+ [AWS CloudFormation スタックのデプロイが完了した後のアクションは何ですか?](#troubleshooting-blueprints-2)
+ [ソース Amazon MSK トピック内のデータ構造はどのようにすべきですか?](#troubleshooting-blueprints-3)
+ [埋め込むメッセージの一部を指定できますか?](#troubleshooting-blueprints-4)
+ [複数の Amazon MSK トピックからデータを読み取ることはできますか?](#troubleshooting-blueprints-5)
+ [正規表現を使用して Amazon MSK トピック名を設定できますか?](#troubleshooting-blueprints-6)
+ [Amazon MSK トピックから読み取ることができるメッセージの最大サイズを教えてください。](#troubleshooting-blueprints-7)
+ [どのタイプの OpenSearch がサポートされていますか?](#troubleshooting-blueprints-8)
+ [ベクトル検索コレクション、ベクトルインデックスを使用し、OpenSearch Serverless コレクションにベクトルフィールドを追加する必要があるのはなぜですか?](#troubleshooting-blueprints-9)
+ [ベクトルフィールドのディメンションとして設定すべきものは何ですか?](#troubleshooting-blueprints-10)
+ [設定された OpenSearch インデックスの出力はどのようなものですか?](#troubleshooting-blueprints-11)
+ [OpenSearch インデックスに保存されているドキュメントに追加するメタデータフィールドを指定できますか?](#troubleshooting-blueprints-12)
+ [OpenSearch インデックスに重複するエントリを想定すべきですか?](#troubleshooting-blueprints-13)
+ [複数の OpenSearch インデックスにデータを送信できますか?](#troubleshooting-blueprints-14)
+ [複数のリアルタイムベクトル埋め込みアプリケーションを 1 つの AWS アカウントにデプロイできますか?](#troubleshooting-blueprints-15)
+ [複数のリアルタイムベクトル埋め込みアプリケーションが同じデータソースまたはシンクを使用できますか?](#troubleshooting-blueprints-16)
+ [アプリケーションはクロスアカウント接続をサポートしていますか?](#troubleshooting-blueprints-17)
+ [アプリケーションはクロスリージョン接続をサポートしていますか?](#troubleshooting-blueprints-18)
+ [Amazon MSK クラスターと OpenSearch コレクションを異なる VPC またはサブネットに配置することはできますか?](#troubleshooting-blueprints-19)
+ [アプリケーションではどのような埋め込みモデルがサポートされていますか?](#troubleshooting-blueprints-20)
+ [ワークロードに基づいてアプリケーションのパフォーマンスをファインチューニングできますか?](#troubleshooting-blueprints-21)
+ [サポートされている Amazon MSK 認証タイプは何ですか?](#troubleshooting-blueprints-22)
+ [`sink.os.bulkFlushIntervalMillis` とは何ですか? どのように設定すればよいですか?](#troubleshooting-blueprints-23)
+ [Managed Service for Apache Flink アプリケーションをデプロイすると、Amazon MSK トピックのどの時点からメッセージの読み取りが開始されますか?](#troubleshooting-blueprints-24)
+ [`source.msk.starting.offset` の使用方法は?](#troubleshooting-blueprints-25)
+ [どのようなチャンク化戦略がサポートされていますか?](#troubleshooting-blueprints-26)
+ [ベクトルデータストアのレコードを読み取るにはどうすればよいですか?](#troubleshooting-blueprints-27)
+ [ソースコードの新しい更新はどこで確認できますか?](#troubleshooting-blueprints-28)
+ [AWS CloudFormation テンプレートを変更して Managed Service for Apache Flink アプリケーションを更新できますか?](#troubleshooting-blueprints-29)
+ [私の代わりにアプリケーションを AWS モニタリングおよび保守しますか?](#troubleshooting-blueprints-30)
+ [このアプリケーションはデータを AWS アカウントの外部に移動させますか?](#troubleshooting-blueprints-31)

## このブループリントはどのような AWS リソースを作成しますか?
<a name="troubleshooting-blueprints-1"></a>

アカウントにデプロイされたリソースを検索するには、 AWS CloudFormation コンソールに移動し、Managed Service for Apache Flink アプリケーションに指定した名前で始まるスタック名を特定します。**[リソース]** タブを選択して、スタックの一部として作成されたリソースを確認します。以下は、スタックが作成するキーリソースです。
+ リアルタイムベクトル埋め込みの Managed Service for Apache Flink アプリケーション
+ リアルタイムベクトル埋め込みアプリケーションのソースコードを保持するための Amazon S3 バケット
+ ログを保存するための CloudWatch のロググループとログストリーム
+ リソースをフェッチおよび作成するための Lambda 関数
+ Lambda 用の IAM ロールとポリシー、Managed Service for Apache Flink アプリケーション、Amazon Bedrock と Amazon OpenSearch Service へのアクセス
+ Amazon OpenSearch Service のデータアクセスポリシー
+ Amazon Bedrock と Amazon OpenSearch Service にアクセスするための VPC エンドポイント

## AWS CloudFormation スタックのデプロイが完了した後のアクションは何ですか?
<a name="troubleshooting-blueprints-2"></a>

 AWS CloudFormation スタックのデプロイが完了したら、 Managed Service for Apache Flink コンソールにアクセスし、設計図 Managed Service for Apache Flink アプリケーションを見つけます。**[構成]** タブを選択し、すべてのランタイムプロパティが正しく設定されていることを確認します。次のページにオーバーフローする可能性があります。設定に自信が持てたら、**[実行]** を選択します。アプリケーションはトピックからのメッセージの取り込みを開始します。

新しいリリースを確認するには、「[https://github.com/awslabs/real-time-vectorization-of-streaming-data/releases](https://github.com/awslabs/real-time-vectorization-of-streaming-data/releases)」を参照してください。

## ソース Amazon MSK トピック内のデータ構造はどのようにすべきですか?
<a name="troubleshooting-blueprints-3"></a>

現在、構造化ソースデータと非構造化ソースデータをサポートしています。
+ 非構造化データは、`source.msk.data.type` の `STRING` によって示されます。データは受信メッセージからそのまま読み込まれます。
+ 現在、`source.msk.data.type` で `JSON` が示す構造化 JSON データをサポートしています。データは常に JSON 形式である必要があります。アプリケーションが不正な形式の JSON を受信すると、アプリケーションは失敗します。
+ ソースデータ型として JSON を使用する場合は、すべてのソーストピックのすべてのメッセージが有効な JSON であることを確認します。この設定で JSON オブジェクトを含まないトピックを 1 つ以上サブスクライブすると、アプリケーションは失敗します。1 つ以上のトピックに構造化データと非構造化データが混在している場合は、Managed Service for Apache Flink アプリケーションでソースデータを非構造化として設定することをお勧めします。

## 埋め込むメッセージの一部を指定できますか?
<a name="troubleshooting-blueprints-4"></a>
+ `source.msk.data.type` が `STRING` である非構造化入力データの場合、アプリケーションは常にメッセージ全体を埋め込み、そのメッセージ全体を設定された OpenSearch インデックスに保存します。
+ `source.msk.data.type` が `JSON` である構造化入力データの場合、埋め込み用に JSON オブジェクトのどのフィールドを選択するかを指定するように `embed.input.config.json.fieldsToEmbed` を設定できます。これは最上位の JSON フィールドでのみ機能し、ネストされた JSON や JSON 配列を含むメッセージでは機能しません。「.\$1」を使用して JSON 全体を埋め込みます。

## 複数の Amazon MSK トピックからデータを読み取ることはできますか?
<a name="troubleshooting-blueprints-5"></a>

はい、このアプリケーションで複数の Amazon MSK トピックからデータを読み取ることができます。すべてのトピックのデータは同じタイプ (STRING または JSON) である必要があります。そうしないと、アプリケーションが失敗する可能性があります。すべてのトピックのデータは、常に 1 つの OpenSearch インデックスに保存されます。

## 正規表現を使用して Amazon MSK トピック名を設定できますか?
<a name="troubleshooting-blueprints-6"></a>

`source.msk.topic.names` は正規表現のリストをサポートしていません。トピック名のカンマ区切りリスト、またはすべてのトピックを含めるための `.*` 正規表現のいずれかをサポートしています。

## Amazon MSK トピックから読み取ることができるメッセージの最大サイズを教えてください。
<a name="troubleshooting-blueprints-7"></a>

処理できるメッセージの最大サイズは、Amazon Bedrock InvokeModel 本文制限によって制限されており、現在は 25,000,000 に設定されています。詳細については、「[InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html#API_runtime_InvokeModel_RequestBody)」を参照してください。

## どのタイプの OpenSearch がサポートされていますか?
<a name="troubleshooting-blueprints-8"></a>

OpenSearch ドメインとコレクションの両方がサポートされています。OpenSearch コレクションを使用している場合は、ベクトルコレクションを使用し、このアプリケーションに使用するベクトルインデックスを作成してください。これにより、OpenSearch ベクトルデータベース機能を使用してデータをクエリできます。詳細については、[「Amazon OpenSearch Service のベクトルデータベース機能の説明](https://aws.amazon.com/blogs/big-data/amazon-opensearch-services-vector-database-capabilities-explained/)」を参照してください。

## ベクトル検索コレクション、ベクトルインデックスを使用し、OpenSearch Serverless コレクションにベクトルフィールドを追加する必要があるのはなぜですか?
<a name="troubleshooting-blueprints-9"></a>

OpenSearch Serverless の*ベクトル検索*コレクションタイプは、スケーラブルで高性能な類似検索機能を提供します。最新の機械学習 (ML) を活用した検索エクスペリエンスや生成 AI アプリケーションの構築が効率化されます。詳細については、「[Working with vector search collections](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/serverless-vector-search.html?icmpid=docs_console_unmapped)」を参照してください。

## ベクトルフィールドのディメンションとして設定すべきものは何ですか?
<a name="troubleshooting-blueprints-10"></a>

使用する埋め込みモデルに基づいてベクトルフィールドのディメンションを設定します。次の表を参照して、それぞれのドキュメントからこれらの値を確認します。


**ベクトルフィールドディメンション**  

| Amazon Bedrock ベクトル埋め込みモデル名 | モデルが提供する出力ディメンションのサポート | 
| --- | --- | 
|  Amazon Titan Text Embeddings V1  | 1,536 | 
|  Amazon Titan Text Embeddings V2  | 1,024 (デフォルト)、384、256 | 
|  Amazon Titan Multimodal Embeddings G1  | 1,024 (デフォルト)、384、256 | 
|  Cohere Embed English  | 1,024 | 
|  Cohere Embed Multilingual  | 1,024 | 

## 設定された OpenSearch インデックスの出力はどのようなものですか?
<a name="troubleshooting-blueprints-11"></a>

OpenSearch インデックス内のすべてのドキュメントには、次のフィールドが含まれます。
+ **original\$1data**: 埋め込みの生成に使用されたデータ。STRING タイプの場合、それはメッセージ全体です。JSON オブジェクトの場合、埋め込みに使用された JSON オブジェクトです。メッセージ内の JSON 全体でも、JSON 内の指定されたフィールドでもかまいません。例えば、受信メッセージから埋め込まれるように名前を選択した場合、出力は次のようになります。

  ```
  "original_data": "{\"name\":\"John Doe\"}"
  ```
+ **embedded\$1data**: Amazon Bedrock によって生成された埋め込みのベクトル浮動小数点配列
+ **date**: ドキュメントが OpenSearch に保存された UTC タイムスタンプ

## OpenSearch インデックスに保存されているドキュメントに追加するメタデータフィールドを指定できますか?
<a name="troubleshooting-blueprints-12"></a>

いいえ。現在、OpenSearch インデックスに保存されている最終ドキュメントへのフィールドの追加はサポートされていません。

## OpenSearch インデックスに重複するエントリを想定すべきですか?
<a name="troubleshooting-blueprints-13"></a>

アプリケーションの設定方法によっては、インデックスに重複するメッセージが表示される場合があります。一般的な理由の 1 つは、アプリケーションの再起動です。デフォルトでは、アプリケーションはソーストピックの最も古いメッセージからの読み取りを開始するように設定されています。構成を変更すると、アプリケーションは再起動し、トピック内のすべてのメッセージを再処理します。再処理を回避するには、source.msk.starting.offset の使用方法に関するドキュメントを参照して、アプリケーションの開始オフセットを正しく設定します。

## 複数の OpenSearch インデックスにデータを送信できますか?
<a name="troubleshooting-blueprints-14"></a>

いいえ。このアプリケーションは、単一の OpenSearch インデックスへのデータの保存をサポートしています。複数のインデックスにベクトル化出力を設定するには、個別の Managed Service for Apache Flink アプリケーションをデプロイする必要があります。

## 複数のリアルタイムベクトル埋め込みアプリケーションを 1 つの AWS アカウントにデプロイできますか?
<a name="troubleshooting-blueprints-15"></a>

はい。すべてのアプリケーションに一意の名前がある場合、複数のリアルタイムベクトル埋め込み Managed Service for Apache Flink アプリケーションを 1 つの AWS アカウント にデプロイできます。

## 複数のリアルタイムベクトル埋め込みアプリケーションが同じデータソースまたはシンクを使用できますか?
<a name="troubleshooting-blueprints-16"></a>

はい。同じトピックからデータを読み取るか、同じインデックスにデータを保存する複数のリアルタイムベクトル埋め込み Managed Service for Apache Flink アプリケーションを作成できます。

## アプリケーションはクロスアカウント接続をサポートしていますか?
<a name="troubleshooting-blueprints-17"></a>

いいえ。アプリケーションが正常に実行されるには、Amazon MSK クラスターと OpenSearch コレクションが、Managed Service for Apache Flink アプリケーションをセットアップしようとしている AWS アカウント のと同じ にある必要があります。

## アプリケーションはクロスリージョン接続をサポートしていますか?
<a name="troubleshooting-blueprints-18"></a>

いいえ。アプリケーションでは、Amazon MSK クラスターと OpenSearch コレクションを使用して、Managed Service for Apache Flink アプリケーションの同じリージョンにのみ Managed Service for Apache Flink アプリケーションをデプロイできます。

## Amazon MSK クラスターと OpenSearch コレクションを異なる VPC またはサブネットに配置することはできますか?
<a name="troubleshooting-blueprints-19"></a>

はい。異なる VPC やサブネットにある Amazon MSK クラスターと OpenSearch コレクションでも、同じ AWS アカウント内であればサポートしています。セットアップが正しいことを確認するには、(一般的な MSF のトラブルシューティング) を参照してください。

## アプリケーションではどのような埋め込みモデルがサポートされていますか?
<a name="troubleshooting-blueprints-20"></a>

現在、アプリケーションは Bedrock でサポートされているすべてのモデルをサポートしています。具体的には次のとおりです。
+ Amazon Titan Embeddings G1 - Text
+  Amazon Titan Text Embeddings V2
+  Amazon Titan Multimodal Embeddings G1 
+  Cohere Embed English 
+  Cohere Embed Multilingual 

## ワークロードに基づいてアプリケーションのパフォーマンスをファインチューニングできますか?
<a name="troubleshooting-blueprints-21"></a>

はい。アプリケーションのスループットは、さまざまな要因によって異なります。これらはすべてお客様が制御できます。

1. **AWS MSF KPUs**: アプリケーションは、デフォルトの並列処理係数 2 と KPU 1 あたりの並列処理でデプロイされ、自動スケーリングが有効になっています。ただし、ワークロードに応じて Managed Service for Apache Flink アプリケーションのスケーリングを設定することをお勧めします。詳細については、「[Review Managed Service for Apache Flink application resources](https://docs.aws.amazon.com/managed-flink/latest/java/how-resources.html)」を参照してください。

1. **Amazon Bedrock**: 選択した Amazon Bedrock オンデマンドモデルに基づいて、異なるクォータが適用される場合があります。Bedrock のサービスクォータを確認して、サービスが処理できるワークロードを把握します。詳細については、「[Quotas for Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)」を参照してください。

1. **Amazon OpenSearch Service**: さらに、状況によっては、OpenSearch がパイプラインのボトルネックであることに気付く場合があります。スケーリングの詳細については、OpenSearch のスケーリングの「[Sizing Amazon OpenSearch Service domains](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/sizing-domains.html)」を参照してください。

## サポートされている Amazon MSK 認証タイプは何ですか?
<a name="troubleshooting-blueprints-22"></a>

IAM MSK 認証タイプのみをサポートしています。

## `sink.os.bulkFlushIntervalMillis` とは何ですか? どのように設定すればよいですか?
<a name="troubleshooting-blueprints-23"></a>

Amazon OpenSearch Service にデータを送信するとき、一括フラッシュ間隔は、アクションの数やリクエストのサイズに関係なく、一括リクエストが実行される間隔を指します。デフォルト値は 1 ミリ秒に設定されています。

フラッシュ間隔を設定すると、データが適時にインデックス作成されるようにできますが、設定が低すぎるとオーバーヘッドが増加する可能性もあります。フラッシュ間隔を選択するときは、ユースケースとタイムリーなインデックス作成の重要性を考慮してください。

## Managed Service for Apache Flink アプリケーションをデプロイすると、Amazon MSK トピックのどの時点からメッセージの読み取りが開始されますか?
<a name="troubleshooting-blueprints-24"></a>

アプリケーションは、アプリケーションのランタイム構成で設定された `source.msk.starting.offset` 設定で指定されたオフセットで Amazon MSK トピックからのメッセージの読み取りを開始します。`source.msk.starting.offset` が明示的に設定されていない場合、アプリケーションのデフォルト動作は、トピック内で最も古い利用可能なメッセージから読み取りを開始します。

## `source.msk.starting.offset` の使用方法は?
<a name="troubleshooting-blueprints-25"></a>

目的の動作に基づいて、`ource.msk.starting.offset` を次のいずれかの値に明示的に設定します。


+  EARLIEST: デフォルト設定で、パーティション内の最も古いオフセットから読み取ります。これは、特に以下の場合に適しています。
  +  新しく作成した Amazon MSK トピックとコンシューマーアプリケーション。
  +  状態を構築または再構築するには、データを再生する必要があります。これは、イベントソーシングパターンを実装する場合や、データ履歴の完全なビューを必要とする新しいサービスを初期化する場合に当てはまります。
+ LATEST: Managed Service for Apache Flink アプリケーションは、パーティションの末尾からメッセージを読み込みます。このオプションは、新しく生成されるメッセージだけを扱い、過去のデータを処理する必要がない場合にお勧めします。この設定では、コンシューマーは既存のメッセージを無視し、アップストリームプロデューサーによって発行された新しいメッセージのみを読み込みます。
+ COMMITTED: Managed Service for Apache Flink アプリケーションは、コンシューマーグループのコミット済みオフセットからメッセージの消費を開始します。コミットされたオフセットが存在しない場合、EARLIEST リセット戦略が使用されます。

## どのようなチャンク化戦略がサポートされていますか?
<a name="troubleshooting-blueprints-26"></a>

[langchain](https://js.langchain.com/v0.1/docs/get_started/introduction/) ライブラリを使用して入力をチャンク化しています。チャンク化は、入力の長さが選択した `maxSegmentSizeInChars` より大きい場合にのみ適用されます。次の 5 つのチャンク化タイプがサポートされています。
+ `SPLIT_BY_CHARACTER`: 各チャンクには可能な限り文字を納めますが、チャンク長は maxSegmentSizeInChars を上限とします。空白文字を認識しないため、単語が途中で切れてしまうことがあります。
+ `SPLIT_BY_WORD`: 空白文字を見つけて、それを基準にチャンク化します。単語が途中で切れることはありません。
+ `SPLIT_BY_SENTENCE`: 文の境界は、Apache OpenNLP ライブラリの英語文モデルを用いて検出されます。
+ `SPLIT_BY_LINE`: 改行文字を検出し、それを基準にチャンク化します。
+ `SPLIT_BY_PARAGRAPH`: 連続する改行文字を検出し、それを基準にチャンク化します。

分割戦略は前の順序に従ってフォールバックし、`SPLIT_BY_PARAGRAPH` のようなより大きなチャンク化戦略は `SPLIT_BY_CHARACTER` にフォールバックします。例えば、`SPLIT_BY_LINE` を使用する場合、行が長すぎると、行が長すぎると、その行は文ごとにサブチャンク化され、各チャンクには可能な限り多くの文が収められます。長い文がある場合は、単語レベルでチャンク化されます。単語が長すぎると、文字単位で分割されます。

## ベクトルデータストアのレコードを読み取るにはどうすればよいですか?
<a name="troubleshooting-blueprints-27"></a>

1. `source.msk.data.type` が `STRING` の場合
   + **original\$1data**: Amazon MSK メッセージからの元の文字列全体。
   + **embedded\$1data**: 空でない場合 (チャンク化が適用された場合)、`chunk_data` から埋め込みベクトルが作成され、チャンク化が適用されていない場合は、`original_data` から埋め込みベクトルが作成されます。
   + **chunk\$1data**: 元のデータがチャンク化された場合にのみ存在します。`embedded_data` での埋め込みの作成に使用された元のメッセージのチャンクが含まれます。

1. `source.msk.data.type` が `JSON` の場合
   + **original\$1data**: JSON キーフィルタリングを適用した*後*の、Amazon MSK メッセージからの元の JSON 全体。
   + **embedded\$1data**: 空でない場合 (チャンク化が適用された場合)、`chunk_data` から埋め込みベクトルが作成され、チャンク化が適用されていない場合は、`original_data` から埋め込みベクトルが作成されます。
   + **chunk\$1key**: 元のデータがチャンク化された場合にのみ存在します。チャンクが `original_data` にある JSON キーが含まれます。例えば、`original_data` の例では、ネストされたキーまたは*メタデータ*の `jsonKey1.nestedJsonKeyA` ようになります。
   + **chunk\$1data**: 元のデータがチャンク化された場合にのみ存在します。`embedded_data` での埋め込みの作成に使用された元のメッセージのチャンクが含まれます。

はい、このアプリケーションで複数の Amazon MSK トピックからデータを読み取ることができます。すべてのトピックのデータは同じタイプ (STRING または JSON) である必要があります。そうしないと、アプリケーションが失敗する可能性があります。すべてのトピックのデータは、常に 1 つの OpenSearch インデックスに保存されます。

## ソースコードの新しい更新はどこで確認できますか?
<a name="troubleshooting-blueprints-28"></a>

「[https://github.com/awslabs/real-time-vectorization-of-streaming-data/releases](https://github.com/awslabs/real-time-vectorization-of-streaming-data/releases)」にアクセスして、新しいリリースを確認します。

## AWS CloudFormation テンプレートを変更して Managed Service for Apache Flink アプリケーションを更新できますか?
<a name="troubleshooting-blueprints-29"></a>

いいえ。 AWS CloudFormation テンプレートを変更しても、Managed Service for Apache Flink アプリケーションは更新されません。の新しい変更は AWS CloudFormation 、新しいスタックをデプロイする必要があることを意味します。

## 私の代わりにアプリケーションを AWS モニタリングおよび保守しますか?
<a name="troubleshooting-blueprints-30"></a>

いいえ。ユーザーに代わってこのアプリケーションをモニタリング、スケーリング、更新、またはパッチ AWS 適用しません。

## このアプリケーションはデータを AWS アカウントの外部に移動させますか?
<a name="troubleshooting-blueprints-31"></a>

Managed Service for Apache Flink アプリケーションによって読み取りおよび保存されるすべてのデータは、 内にとどまり AWS アカウント 、 アカウントを離れることはありません。

# リアルタイムベクトル埋め込みブループリント - トラブルシューティング
<a name="troubleshooting-blueprints-TS"></a>

リアルタイムベクトル埋め込みブループリントに関する以下のトラブルシューティングトピックを確認してください。リアルタイムベクトル埋め込みブループリントの詳細については、「[Real-time vector embedding blueprints](https://docs.aws.amazon.com/msk/latest/developerguide/ai-vector-embedding-integration-learn-more.html)」を参照してください。

**Topics**
+ [CloudFormation スタックのデプロイが失敗またはロールバックされました。修正するにはどうすればよいですか?](#troubleshooting-blueprints-deployment)
+ [アプリケーションが Amazon MSK トピックの先頭からメッセージの読み取りを開始しないようにします。何をすればよいですか?](#troubleshooting-blueprints-beginning)
+ [Managed Service for Apache Flink アプリケーションに問題があるかどうかを確認する方法と、それをデバッグする方法を教えてください。](#troubleshooting-blueprints-debug)
+ [Managed Service for Apache Flink アプリケーションでモニタリングする必要がある主要なメトリクスは何ですか?](#troubleshooting-blueprints-metrics)

## CloudFormation スタックのデプロイが失敗またはロールバックされました。修正するにはどうすればよいですか?
<a name="troubleshooting-blueprints-deployment"></a>
+ CFN スタックに移動して、スタック失敗の原因を確認します。これは、アクセス許可の欠落、 AWS リソース名の衝突などに関連している可能性があります。デプロイ失敗の根本原因を修正します。詳細については、「[CloudWatch トラブルシューティングガイド](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html#basic-ts-guide)」を参照してください。
+  [オプション] 1 つの VPC につきサービスごとに 1 つの VPC エンドポイントのみを使用できます。複数のリアルタイムベクトル埋め込みブループリントをデプロイして、同じ VPC 内の Amazon OpenSearch Service コレクションに書き込む場合、VPC エンドポイントを共有している可能性があります。これらは、VPC のアカウント内に既に存在している場合もあります。存在しない場合は、最初のリアルタイムベクトル埋め込みブループリントのスタックが Amazon Bedrock と Amazon OpenSearch Service の VPC エンドポイントを作成し、アカウントにデプロイされる他のスタックで利用されます。スタックが失敗した場合、そのスタックが Amazon Bedrock と Amazon OpenSearch Service の VPC エンドポイントを作成したかどうかを確認し、アカウント内の他の場所で使用されていない場合は削除します。VPC エンドポイントを削除する手順については、アプリケーションを安全に削除する方法に関するドキュメントを参照してください。
+ アカウント内の他のサービスやアプリケーションが、その VPC エンドポイントを使用している可能性があります。削除すると、他のサービスのネットワークが中断される可能性があります。これらのエンドポイントの削除には注意してください。

## アプリケーションが Amazon MSK トピックの先頭からメッセージの読み取りを開始しないようにします。何をすればよいですか?
<a name="troubleshooting-blueprints-beginning"></a>

目的の動作に応じて、次のいずれかの値に明示的に `source.msk.starting.offset` を設定する必要があります。
+ **最も古いオフセット**: パーティション内の最も古いオフセット。
+ **最新のオフセット**: コンシューマーはパーティションの末尾からメッセージを読み込みます。
+ **コミットオフセット**: コンシューマーがパーティション内で処理した最後のメッセージから読み取ります。

## Managed Service for Apache Flink アプリケーションに問題があるかどうかを確認する方法と、それをデバッグする方法を教えてください。
<a name="troubleshooting-blueprints-debug"></a>

「[Managed Service for Apache Flink トラブルシューティングガイド](https://docs.aws.amazon.com/managed-flink/latest/java/troubleshooting-runtime.html)」を使用して、アプリケーションに関する Managed Service for Apache Flink 関連の問題をデバッグします。

## Managed Service for Apache Flink アプリケーションでモニタリングする必要がある主要なメトリクスは何ですか?
<a name="troubleshooting-blueprints-metrics"></a>
+ 通常の Managed Service for Apache Flink アプリケーションで使用可能なすべてのメトリクスは、アプリケーションをモニタリングするのに役立ちます。詳細については、「[Metrics and dimensions in Managed Service for Apache Flink](https://docs.aws.amazon.com/managed-flink/latest/java/metrics-dimensions.html)」を参照してください。
+ Amazon Bedrock メトリクスをモニタリングするには、「[Amazon CloudWatch metrics for Amazon Bedrock](https://docs.aws.amazon.com/bedrock/latest/userguide/monitoring.html#runtime-cloudwatch-metrics)」を参照してください。
+ 埋め込みを生成するパフォーマンスを監視するために、新しいメトリクスを 2 つ追加しました。CloudWatch の `EmbeddingGeneration` オペレーション名で見つけられます。2 つのメトリクスは次のとおりです。
  + **BedrockTitanEmbeddingTokenCount**: Amazon Bedrock への 1 回のリクエストに存在するトークンの数。
  + **BedrockEmbeddingGenerationLatencyMs**: Amazon Bedrock からの埋め込み生成レスポンスの送受信にかかる時間をミリ秒単位でレポートします。
+ Amazon OpenSearch Service のサーバーレスコレクションでは、`IngestionDataRate` や `IngestionDocumentErrors` などのメトリクスを利用できます。詳細については、「[Monitoring OpenSearch Serverless with Amazon CloudWatch](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/monitoring-cloudwatch.html)」を参照してください。
+ OpenSearch でプロビジョニングされたメトリクスについては、「[Monitoring OpenSearch cluster metrics with Amazon CloudWatch](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/managedomains-cloudwatchmetrics.html)」を参照してください。