

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

# 疑難排解
<a name="s3-image-troubleshooting"></a>

## 未交付至 Amazon S3 儲存貯體的影像
<a name="s3-images-not-delivered"></a>

若要疑難排解此問題，需要注意幾件事：

1. 缺少許可

1. 映像產生組態不正確

1. 標籤未新增至片段

### 缺少許可
<a name="s3-missing-permissions"></a>

如果您使用的是客戶受管 KMS 金鑰，請確定執行`PutMedia`呼叫的角色 （上傳者） 具有適當的加密和解密許可，並可存取 Amazon S3 儲存貯體，如下所示：
+ `kms:Encrypt`
+ `kms:GenerateDataKey`
+ `kms:Decrypt`
+ `s3:PutObject`

如需詳細資訊，請參閱[如何開始使用伺服器端加密？](how-kms.md#getting-started-with-sse-akvs)。

### 驗證目的地
<a name="s3-verify-destination"></a>

使用 AWS CLI 呼叫串流的 DescribeImageGenerationConfiguration API。

```
aws kinesisvideo describe-image-generation-configuration \
  --stream-name "{{demo-stream}}"
```

檢閱回應`DestinationConfig`中的 ，並確認它看起來正確。

### 確認映像產生標籤已新增至片段
<a name="s3-verify-tag-added"></a>

1. 檢查`putKinesisVideoEventMetadata`呼叫是否成功。

   `putKinesisVideoEventMetadata` 方法會在成功時傳回狀態碼 0。建議您檢查 0 函數的傳回值。如果傳回非零狀態碼，請將其轉換為十六進位，並檢查 [錯誤碼參考](producer-sdk-errors.md) 以取得詳細資訊。

   請確定您已開啟錯誤日誌，並檢閱日誌是否有應用程式中的任何其他錯誤。檢閱並比較應用程式的影格提交呼叫模式與建議的實作：[將影像產生標籤新增至片段](s3-real-time-image-create.md#s3-adding-image-tags)。

1. 驗證本機產生的 MKV 檔案

   確認生產者開發套件或範例應用程式已正確附加標籤。

   1. 設定 `KVS_DEBUG_DUMP_DATA_FILE_DIR` 環境變數。如果設定此值，生產者開發套件會寫入已傳送至 Kinesis Video Streams 的媒體檔案，並傳送至指定位置。

      ```
      export KVS_DEBUG_DUMP_DATA_FILE_DIR=/path/to/output/directory
      ```
**注意**  
如果路徑不存在，則 SDK 不會建立新的目錄。視需要建立 資料夾。

   1. 再次執行應用程式。您應該會看到寫入指定輸出目錄`.mkv`的檔案。

   1. 使用 MKVToolNix 或其他軟體驗證內容以確保標籤存在。

      1. 安裝 MKVToolNix： `brew install mkvtoolnix`

      1. 使用輸出目錄中的其中一個`.mkv`檔案來執行 MKVToolNix。

         ```
         mkvinfo -v ./path/to/video/file
         ```

      1. 檢閱 MKVToolNix 輸出。如果正確叫用`KinesisVideoStream::PutFragmentMetadata`生產者 SDK 方法，您應該會看到下列 MKV 標籤。

         ```
         |+ Tags
         | + Tag
         |  + Simple
         |   + Name: AWS_KINESISVIDEO_IMAGE_GENERATION
         ```
**注意**  
標籤在之前屬於叢集。

   1. 如果 MKV 標籤不存在，請確定已使用 `STREAM_EVENT_TYPE_IMAGE_GENERATION`引數呼叫`KinesisVideoStream::PutEventMetadata`生產者 SDK 方法，且傳回成功 (0) 程式碼。