

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 開發疑難排解
<a name="troubleshooting-development"></a>

本節包含診斷和修正 Managed Service for Apache Flink 應用程式開發問題的相關資訊。

**Topics**
+ [系統復原最佳實務](troubleshooting-system-rollback.md)
+ [Hudi 組態最佳實務](troubleshooting-hudi.md)
+ [Apache Flink 火焰圖](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 StreamingFileSink FileNotFoundExceptions](troubleshooting-s3sink.md)
+ [使用儲存點停止時的 FlinkKafkaConsumer 問題](troubleshooting-FlinkKafkaConsumer.md)
+ [FLINK 1.15 非同步接收器死鎖](troubleshooting-async-deadlock.md)
+ [在重新分片期間，Amazon Kinesis 資料串流來源處理順序不正確](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 日誌](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 儀板表 或開啟支援案例。

# Hudi 組態最佳實務
<a name="troubleshooting-hudi"></a>

若要在 Managed Service for Apache Flink 上執行 Hudi 連接器，我們建議進行下列組態變更。

停用 `hoodie.embed.timeline.server`

Flink 上的 Hudi 連接器會在 Flink 任務管理員 (JM) 上設定內嵌時間軸 (TM) 伺服器，以快取中繼資料，以在任務平行處理很高時改善效能。我們建議您在 Managed Service for Apache Flink 上停用此內嵌伺服器，因為我們停用 JM 和 TM 之間的非 Flink 通訊。

如果啟用此伺服器，Hudi 寫入會先嘗試連接到 JM 上的內嵌伺服器，然後回到從 Amazon S3 讀取中繼資料。這表示 Hudi 發生連線逾時，延遲 Hudi 寫入，並對 Managed Service for Apache Flink 造成效能影響。

# Apache Flink 火焰圖
<a name="troubleshooting-update-flamegraphs"></a>

火焰圖在 Managed Service for Apache Flink 版本支援的應用程式上預設為啟用。如果讓火焰圖保持開啟狀態，可能會影響應用程式效能，如 [Flink 文件](https://nightlies.apache.org/flink/flink-docs-release-1.15//docs/ops/debugging/flame_graphs/)中所述。

 如果要為您的應用程式停用火焰圖，請建立一個案例，以請求將其為您的應用程式 ARN 停用。如需詳細資訊，請參閱 [AWS 支援中心](https://console.aws.amazon.com/support/home#/)。

# EFO 連接器 1.15.2 的登入資料提供者問題
<a name="troubleshooting-credential-provider"></a>

Kinesis Data Streams EFO 連接器截止 1.15.2 版本都存在一個[已知問題](https://issues.apache.org/jira/browse/FLINK-29205)，其中的 `FlinkKinesisConsumer` 不遵守 `Credential Provider` 組態。由於該問題，有效組態被忽略，導致使用 `AUTO` 憑證提供者。使用 EFO 連接器跨帳戶存取 Kinesis 時，這可能會導致問題。

若要解決此錯誤，請使用 EFO 連接器 1.15.3 版或更新版本。

# 應用程式使用不支援的 Kinesis 連接器
<a name="troubleshooting-unsupported-kinesis-connectors"></a>

Managed Service for Apache Flink 1.15 版或更新版本會在[應用程式使用不支援的 Kinesis Connector 版本 (1.15.2 版之前） 封裝至應用程式 JAR 或封存檔 (ZIP) 時，自動拒絕應用程式啟動或更新](https://docs.aws.amazon.com/managed-flink/latest/java/flink-1-15-2.html)。 JARs 

## 拒絕錯誤
<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>

若要編譯 Managed Service for 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
```

若要解決此錯誤，必須從 [https://flink.apache.org/downloads.html](https://flink.apache.org/downloads.html) 為連接器下載 Apache Flink 來源程式碼 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>

若要使用 Managed Service for Apache Flink API 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>

如果未指定 S3 物件版本，[UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html) 動作將不會以相同的檔案名稱重新載入應用程式程式碼。若要使用相同的檔案名稱重新載入應用程式程式碼，請在 S3 儲存貯體上啟用版本控制，然後使用 `ObjectVersionUpdate` 參數指定新的物件版本。如需在 S3 儲存貯體中啟用物件版本控制的詳細資訊，請參閱[啟用和停用物件版本控制](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-versioning.html)。

# S3 StreamingFileSink FileNotFoundExceptions
<a name="troubleshooting-s3sink"></a>

如果缺少由儲存點參照的進行中分段檔案，則從快照開始時，Managed Service for Apache Flink 應用程式可能會遇到進行中的分段檔案 `FileNotFoundException`。發生此失敗模式時，Managed Service for Apache Flink 應用程式的運算子狀態通常不可復原，必須在不使用快照的情況下使用 `SKIP_RESTORE_FROM_SNAPSHOT` 重新啟動。請參閱以下範例 stacktrace：

```
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`寫入檔案系統支援[的檔案系統](https://nightlies.apache.org/flink/flink-docs-release-1.15/docs/deployment/filesystems/overview/)。鑒於傳入串流可以無限制，資料會組織成有限大小的分段檔案，並在寫入資料時新增檔案。分段生命週期和輪替政策可決定分段檔案的時間、大小和命名。

在檢查點和儲存點 (快照) 期間，所有待處理檔案都會重新命名並遞交。但是，進行中的分段檔案不會遞交而是重新命名，且其參考會保留在還原作業時要使用的檢查點或儲存點中繼資料內。這些進行中的分段檔案最終會輪替為「待處理」狀態，由後續檢查點或儲存點重新命名或遞交。

以下是遺失進行中分段檔案的根本原因和緩解措施：
+ 用於啟動 Managed Service for Apache Flink 應用程式的快照過時 — 只有停止或更新應用程式時所拍攝的最新系統快照可用來啟動使用 Amazon S3 StreamingFileSink 的 Managed Service for Apache Flink 應用程式。若要避免這類失敗，請使用最新的系統快照。
  + 例如，當您選擇使用 `CreateSnapshot` 建立的快照，而不是在停止或更新期間系統觸發的快照時，就會發生這種情況。較舊快照的儲存點會保留對進行中分段檔案的過期參考，而該檔案已由後續檢查點或儲存點重新命名並遞交。
  + 當選取上午系統快照觸發自非最新的停止/更新事件時，也可能發生這種情況。其中一個範例是已停用系統快照但已設定 `RESTORE_FROM_LATEST_SNAPSHOT` 的應用程式。一般而言，使用 Amazon S3 StreamingFileSink 的 Managed Service for Apache Flink 應用程式應始終啟用系統快照並設定 `RESTORE_FROM_LATEST_SNAPSHOT`。
+ 移除進行中的分段檔案 — 由於進行中的分段檔案位於 S3 儲存貯體中，因此可以由其他可存取該儲存貯體的元件或參與者移除。
  + 當已停止應用程式太長時間，且 [S3 儲存貯體 MultiPartUpLoad](https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpu-abort-incomplete-mpu-lifecycle-config.html) 生命週期政策移除了應用程式儲存點所參考的進行中部分檔案時，就可能會發生這種情況。若要避免此類失敗，請確保 S3 儲存貯體 MPU 生命週期政策針對您的使用案例涵蓋了足夠長的期間。
  + 當進行中的分段檔案已手動移除或由系統的其他元件移除時，也會發生這種情況。若要避免此類失敗，請確定進行中的分段檔案不會被其他參與者或元件移除。
+ 在儲存點之後觸發自動檢查點的競爭情形 — 這會影響 Managed Service for Apache Flink 1.13 及以下版本。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)。
  + 應用程式停止或更新後，Managed Service for Apache Flink 會觸發儲存點，並透過兩個步驟停止應用程式。如果在這兩個步驟之間觸發了自動檢查點，則儲存點將無法使用，因為其進行中分段檔案將會重新命名並可能遞交。

# 使用儲存點停止時的 FlinkKafkaConsumer 問題
<a name="troubleshooting-FlinkKafkaConsumer"></a>

使用舊版 FlinkKafkaConsumer 時，如果您啟用了系統快照，應用程式可能會卡在 UPDATING、STOPPING 或 SCALING 狀態。此[問題](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 作業可能會使用儲存點 API 請求處理停止，`FlinkKafkaConsumer` 可能會失敗並報告執行期錯誤 `ClosedException`。在這些情況下，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`
+ 快速 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 應用程式：

## flink-connector-kinesis
<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. 新增重新定位規則，將更新的 AWS SDK 類別移至 Kinesis 連接器預期的套件。

   **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 連接器預期的套件。

   **build.gradle**

   ```
   ...
   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 或更新版本：

**build.gradle**

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

------

# 更新 Python 應用程式
<a name="troubleshooting-async-deadlock-update-python-apps"></a>

Python 應用程式可以透過 2 種不同的方式使用連接器：將連接器和其他 Java 相依性作封裝為單個 uber-jar 的一部分，或直接使用連接器 jar。若要修正受非同步接收器死鎖影響的應用程式：
+ 如果應用程式使用 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-connector-kinesis
<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
   ```

## flink-sql-connector-aws-kinesis-streams
<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
   ```

## flink-sql-connector-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 資料串流來源處理順序不正確
<a name="troubleshooting-kinesis-data-streams-processing-out-of-order"></a>

目前的 FlinkKinesisConsumer 實作無法在 Kinesis 碎片之間提供強有力的排序保證。這可能會導致 Kinesis 串流重新分片期間出現不按順序處理的情況，特別是對於遇到處理延遲的 Flink 應用程式而言。在某些情況下，例如根據事件時間的 Windows 運算子，事件可能會因為產生的延遲而被捨棄。

![\[Diagram showing shards and shard consumers with time progression and trim horizon.\]](http://docs.aws.amazon.com/zh_tw/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>

檢閱下列常見問答集和疑難排解章節，以疑難排解即時向量內嵌藍圖問題。如需即時向量內嵌藍圖的詳細資訊，請參閱[即時向量內嵌藍圖](https://docs.aws.amazon.com/msk/latest/developerguide/ai-vector-embedding-integration-learn-more.html)。

如需一般 Managed Service for Apache Flink 應用程式故障診斷，請參閱 https：//[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>

檢閱下列有關即時向量內嵌藍圖的常見問答集。如需即時向量內嵌藍圖的詳細資訊，請參閱[即時向量內嵌藍圖](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 主題 (Amazon MSK) 中的資料結構應該是什麼？](#troubleshooting-blueprints-3)
+ [我可以指定要內嵌的訊息部分嗎？](#troubleshooting-blueprints-4)
+ [我可以從多個 Amazon MSK 主題讀取資料嗎？](#troubleshooting-blueprints-5)
+ [我可以使用 regex 來設定 Amazon MSK 主題名稱嗎？](#troubleshooting-blueprints-6)
+ [可以從 Amazon MSK 主題讀取的訊息大小上限是多少？](#troubleshooting-blueprints-7)
+ [支援哪種類型的 OpenSearch？](#troubleshooting-blueprints-8)
+ [為什麼我需要在 OpenSearch Serverless colelction 中使用向量搜尋集合、向量索引和新增向量欄位？](#troubleshooting-blueprints-9)
+ [我應該將什麼設定為向量欄位的維度？](#troubleshooting-blueprints-10)
+ [在設定的 OpenSearch 索引中，輸出看起來像什麼？](#troubleshooting-blueprints-11)
+ [我可以指定中繼資料欄位以新增至儲存在 OpenSearch 索引中的文件嗎？](#troubleshooting-blueprints-12)
+ [我應該預期 OpenSearch 索引中重複的項目嗎？](#troubleshooting-blueprints-13)
+ [我可以將資料傳送至多個 OpenSearch 索引嗎？](#troubleshooting-blueprints-14)
+ [我可以在單一 中部署多個即時向量內嵌應用程式 AWS 帳戶嗎？](#troubleshooting-blueprints-15)
+ [多個即時向量內嵌應用程式是否可以使用相同的資料來源或接收器？](#troubleshooting-blueprints-16)
+ [應用程式是否支援跨帳戶連線？](#troubleshooting-blueprints-17)
+ [應用程式是否支援跨區域連線？](#troubleshooting-blueprints-18)
+ [我的 Amazon MSK 叢集和 OpenSearch 集合是否可以位於不同的 VPCs或子網路中？](#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 函數
+ Lambdas、Managed Service for Apache Flink 應用程式以及存取 Amazon Bedrock 和 Amazon OpenSearch Service 的 IAM 角色和政策
+ 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：//[https://github.com/awslabs/real-time-vectorization-of-streaming-data/releases](https://github.com/awslabs/real-time-vectorization-of-streaming-data/releases)。

## 來源 Amazon MSK 主題 (Amazon MSK) 中的資料結構應該是什麼？
<a name="troubleshooting-blueprints-3"></a>

我們目前支援結構化和非結構化來源資料。
+ 非結構化資料在 `STRING`中由 表示`source.msk.data.type`。資料會依原樣從傳入訊息讀取。
+ 我們目前支援結構化 JSON 資料，在 `JSON`中由 表示`source.msk.data.type`。資料必須一律採用 JSON 格式。如果應用程式收到格式不正確的 JSON，應用程式將會失敗。
+ 使用 JSON 做為來源資料類型時，請確定所有來源主題中的每則訊息都是有效的 JSON。如果您訂閱的一或多個主題不包含具有此設定的 JSON 物件，應用程式將會失敗。如果一個或多個主題混合了結構化和非結構化資料，建議您在 Managed Service for Apache Flink 應用程式中將來源資料設定為非結構化。

## 我可以指定要內嵌的訊息部分嗎？
<a name="troubleshooting-blueprints-4"></a>
+ 對於 `source.msk.data.type`為 的非結構化輸入資料`STRING`，應用程式將一律嵌入整個訊息，並將整個訊息存放在設定的 OpenSearch 索引中。
+ 對於 `source.msk.data.type`為 的結構化輸入資料`JSON`，您可以設定 `embed.input.config.json.fieldsToEmbed`來指定應該在 JSON 物件中選取哪個欄位以進行內嵌。這僅適用於最上層 JSON 欄位，不適用於巢狀 JSONs 和包含 JSON 陣列的訊息。使用 .\$1 內嵌整個 JSON。

## 我可以從多個 Amazon MSK 主題讀取資料嗎？
<a name="troubleshooting-blueprints-5"></a>

可以，您可以使用此應用程式從多個 Amazon MSK 主題讀取資料。所有主題的資料都必須是相同類型 (STRING 或 JSON)，否則可能會導致應用程式失敗。來自所有主題的資料一律存放在單一 OpenSearch 索引中。

## 我可以使用 regex 來設定 Amazon MSK 主題名稱嗎？
<a name="troubleshooting-blueprints-6"></a>

`source.msk.topic.names` 不支援 regex 的清單。我們支援以逗號分隔的主題名稱清單或 regex `.*` 來包含所有主題。

## 可以從 Amazon MSK 主題讀取的訊息大小上限是多少？
<a name="troubleshooting-blueprints-7"></a>

可處理的訊息大小上限受限於目前設定為 25，000，000 的 Amazon Bedrock InvokeModel 內文限制。如需詳細資訊，請參閱 [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 colelction 中使用向量搜尋集合、向量索引和新增向量欄位？
<a name="troubleshooting-blueprints-9"></a>

OpenSearch Serverless 中的*向量搜尋*集合類型提供可擴展且高效能的相似性搜尋功能。它簡化了建置現代機器學習 (ML) 增強型搜尋體驗和生成式人工智慧 (AI) 應用程式。如需詳細資訊，請參閱[使用向量搜尋集合](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 文字內嵌 V1  | 1,536 | 
|  Amazon Titan 文本嵌入 V2  | 1，024 （預設）、384、256 | 
|  Amazon Titan Multimodal Embeddings G1  | 1，024 （預設）、384、256 | 
|  Cohere Embed 英文  | 1,024 | 
|  Cohere Embed 多語言  | 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 產生的內嵌向量浮點數陣列
+ **日期**：文件存放在 OpenSearch 中的 UTC 時間戳記

## 我可以指定中繼資料欄位以新增至儲存在 OpenSearch 索引中的文件嗎？
<a name="troubleshooting-blueprints-12"></a>

否，目前我們不支援將其他欄位新增至儲存在 OpenSearch 索引中的最終文件。

## 我應該預期 OpenSearch 索引中重複的項目嗎？
<a name="troubleshooting-blueprints-13"></a>

根據您設定應用程式的方式，您可能會在索引中看到重複的訊息。其中一個常見原因是應用程式重新啟動。根據預設，應用程式會設定為從來源主題中最早的訊息開始讀取。當您變更組態時，應用程式會重新啟動，並再次處理主題中的所有訊息。若要避免重新處理，請參閱有關如何使用 source.msk.starting.offset 的文件，並正確設定應用程式的起始位移。

## 我可以將資料傳送至多個 OpenSearch 索引嗎？
<a name="troubleshooting-blueprints-14"></a>

否，應用程式支援將資料儲存到單一 OpenSearch 索引。若要將向量化輸出設定為多個索引，您必須部署個別的 Managed Service for Apache Flink 應用程式。

## 我可以在單一 中部署多個即時向量內嵌應用程式 AWS 帳戶嗎？
<a name="troubleshooting-blueprints-15"></a>

可以， AWS 帳戶 如果每個應用程式都有唯一的名稱，您可以在單一 中部署多個即時向量內嵌 Managed Service for Apache Flink 應用程式。

## 多個即時向量內嵌應用程式是否可以使用相同的資料來源或接收器？
<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>

否，應用程式只允許您在 Managed Service for Apache Flink 應用程式的相同區域中，使用 Amazon MSK 叢集和 OpenSearch 集合部署 Managed Service for Apache Flink 應用程式。

## 我的 Amazon MSK 叢集和 OpenSearch 集合是否可以位於不同的 VPCs或子網路中？
<a name="troubleshooting-blueprints-19"></a>

是，我們支援不同 VPCs 和子網路中的 Amazon MSK 叢集和 OpenSearch 集合，只要它們位於相同位置即可 AWS 帳戶。請參閱 （一般 MSF 疑難排解） 以確保您的設定正確。

## 應用程式支援哪些內嵌模型？
<a name="troubleshooting-blueprints-20"></a>

目前，應用程式支援 Bedrock 支援的所有模型。其中包含：
+ Amazon Titan Embeddings G1 - Text
+  Amazon Titan 文本嵌入 V2
+  Amazon Titan Multimodal Embeddings G1 
+  Cohere Embed 英文 
+  Cohere Embed 多語言 

## 我可以根據工作負載微調應用程式的效能嗎？
<a name="troubleshooting-blueprints-21"></a>

是。應用程式輸送量取決於多種因素，所有因素都可以由客戶控制：

1. **AWS MSF KPUs**：以預設平行處理係數 2 和每個 KPU 1 的平行處理來部署應用程式，並開啟自動擴展。不過，我們建議您根據您的工作負載設定 Managed Service for Apache Flink 應用程式的擴展。如需詳細資訊，請參閱[檢閱 Managed Service for Apache Flink 應用程式資源](https://docs.aws.amazon.com/managed-flink/latest/java/how-resources.html)。

1. **Amazon Bedrock**：根據選取的 Amazon Bedrock 隨需模型，可能會套用不同的配額。檢閱 Bedrock 中的服務配額，以查看服務能夠處理的工作負載。如需詳細資訊，請參閱 [Amazon Bedrock 的配額](https://docs.aws.amazon.com/bedrock/latest/userguide/quotas.html)。

1. **Amazon OpenSearch Service**：此外，在某些情況下，您可能會注意到 OpenSearch 是管道中的瓶頸。如需擴展資訊，請參閱 OpenSearch 擴展[規模調整 Amazon OpenSearch Service 網域](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`我們支援以下五種區塊類型：
+ `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**：只有在原始資料被區塊化時才會出現。包含區塊來自 的 JSON 金鑰`original_data`。例如，它看起來像 `jsonKey1.nestedJsonKeyA` 範例中的巢狀金鑰或*中繼資料*`original_data`。
   + **chunk\$1data**：只有在原始資料被區塊化時才存在。包含用於在 中建立內嵌的原始訊息區塊`embedded_data`。

可以，您可以使用此應用程式從多個 Amazon MSK 主題讀取資料。來自所有主題的資料必須屬於相同類型 (STRING 或 JSON)，否則可能會導致應用程式失敗。來自所有主題的資料一律存放在單一 OpenSearch 索引中。

## 哪裡可以找到原始程式碼的新更新？
<a name="troubleshooting-blueprints-28"></a>

前往 https：//[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>

檢閱下列有關即時向量內嵌藍圖的疑難排解主題。如需即時向量內嵌藍圖的詳細資訊，請參閱[即時向量內嵌藍圖](https://docs.aws.amazon.com/msk/latest/developerguide/ai-vector-embedding-integration-learn-more.html)。

**Topics**
+ [My 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)

## My CloudFormation 堆疊部署失敗或已復原。我可以做什麼來修正此問題？
<a name="troubleshooting-blueprints-deployment"></a>
+ 前往您的 CFN 堆疊，並尋找堆疊失敗的原因。它可能與缺少許可、 AWS 資源名稱衝突以及其他原因有關。修正部署失敗的根本原因。如需詳細資訊，請參閱 [ CloudWatch 疑難排解指南](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/troubleshooting.html#basic-ts-guide)。
+  【選用】 每個 VPC 每個服務只能有一個 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 應用程式的所有指標都可協助您監控應用程式。如需詳細資訊，請參閱 [Managed Service for Apache Flink 中的指標和維度](https://docs.aws.amazon.com/managed-flink/latest/java/metrics-dimensions.html)。
+ 若要監控 Amazon Bedrock 指標，請參閱 [Amazon Bedrock 的 Amazon CloudWatch 指標](https://docs.aws.amazon.com/bedrock/latest/userguide/monitoring.html#runtime-cloudwatch-metrics)。
+ 我們已新增兩個新的指標來監控產生內嵌的效能。在 CloudWatch 中的`EmbeddingGeneration`操作名稱下尋找它們。這兩個指標為：
  + **BedrockTitanEmbeddingTokenCount**：Amazon Bedrock 的單一請求中存在的字符數量。
  + **BedrockEmbeddingGenerationLatencyMs**：報告從 Amazon Bedrock 傳送和接收回應以產生內嵌所需的時間，以毫秒為單位。
+ 對於 Amazon OpenSearch Service 無伺服器集合，您可以使用 等指標`IngestionDataRate``IngestionDocumentErrors`和其他指標。如需詳細資訊，請參閱[使用 Amazon CloudWatch 監控 OpenSearch Serverless](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/monitoring-cloudwatch.html)。
+ 如需 OpenSearch 佈建指標，請參閱[使用 Amazon CloudWatch 監控 OpenSearch 叢集指標](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/managedomains-cloudwatchmetrics.html)。