

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 问题排查
<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>

使用为您的直播调用 DescribeImageGenerationConfiguration API。 AWS CLI 

```
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 文件

   确认 Producer SDK 或示例应用程序正确附加了标签。

   1. 设置 `KVS_DEBUG_DUMP_DATA_FILE_DIR` 环境变量。如果设置了此值，Producer SDK 会将其本应发送到 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.  MKVToolNix 使用输出目录中的一个`.mkv`文件运行。

         ```
         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) 代码。