You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Amazon Connect触发的Kinesis视频流名称不被识别问题排查

问题描述

我在Amazon Connect中创建了包含Start Streaming Data块的流程,已验证呼叫可触发Kinesis Video Streams的实时音频流。通过AWS CLI命令aws resourcegroupstaggingapi get-resources获取到流ARN如下:

{
    "ResourceTagMappingList": [
        {
            "ResourceARN": "arn:aws:kinesisvideo:us-west-2:0123456789012:stream/<my-prefix>-connect-<my-username>-contact-b7443850-6b5b-4def-b3c2-d5b7d92cfc53/1691776084391",
            "Tags": [
                {
                    "Key": "connect:source-type",
                    "Value": "contact"
                },
                {
                    "Key": "connect:instance-id",
                    "Value": <my-connect-instance-id>
                }
            ]
        }
    ]
}

我推断流名称为<my-prefix>-connect-<my-username>-contact-b7443850-6b5b-4def-b3c2-d5b7d92cfc53/1691776084391,但执行AWS CLI命令时出现错误:

aws kinesis describe-stream --stream-name "<my-prefix>-connect-<my-username>-contact-b7443850-6b5b-4def-b3c2-d5b7d92cfc53/1691776084391"

错误信息:

An error occurred (ValidationException) when calling the DescribeStream operation: 1 validation error detected: Value '<prefix>-connect-<username>-contact-fdc70c90-0153-4b78-9012-00316c829524/1691776086035' at 'streamName' failed to satisfy constraint: Member must satisfy regular expression pattern: [a-zA-Z0-9_.-]+

我的疑问:

  1. 此处的流名称到底是什么?
  2. 若名称正确,为何describe-stream命令会报错?

注:我的最终目标是搭建一个Go应用以读取实时音频流,需要在呼叫触发时接入对应的Kinesis Video Stream,且不使用AWS Lambda等AWS服务,实现外部应用在流启动时触发并读取音频流。


解答

1. 正确的流名称

Kinesis Video Stream的ARN格式为arn:aws:kinesisvideo:<region>:<account-id>:stream/<stream-name>/<creation-timestamp>,其中斜杠/后的1691776084391是流的创建时间戳,不属于流名称的一部分。

正确的流名称为:
<my-prefix>-connect-<my-username>-contact-b7443850-6b5b-4def-b3c2-d5b7d92cfc53

其中b7443850-6b5b-4def-b3c2-d5b7d92cfc53是Amazon Connect的联系ID,用于唯一标识该呼叫对应的流。

2. describe-stream命令报错的原因

你存在两个核心错误:

  • 误用命令:你使用的是Kinesis Data Streams的aws kinesis describe-stream命令,但实际操作的是Kinesis Video Streams,对应的CLI命令应为aws kinesisvideo describe-stream。
  • 流名称格式错误:你传入的名称包含了创建时间戳,导致不符合命令要求的正则表达式[a-zA-Z0-9_.-]+(该规则不允许斜杠/)。

使用正确的命令和流名称即可解决问题,示例命令:

aws kinesisvideo describe-stream --stream-name "<my-prefix>-connect-<my-username>-contact-b7443850-6b5b-4def-b3c2-d5b7d92cfc53" --region us-west-2

3. Go应用读取实时音频流的实现思路

要实现外部Go应用在流启动时触发并读取音频流,可按以下步骤操作:

  • 监听流创建事件:通过Amazon EventBridge监听Kinesis Video Stream的创建事件(事件类型为aws.kinesisvideo),外部应用可通过轮询EventBridge或配置Webhook接收流创建通知。
  • 获取流的媒体端点:使用Go SDK中的kinesisvideo客户端调用GetDataEndpoint接口,获取流的媒体访问端点。
  • 读取实时流数据:通过获取的端点,使用kinesis-video-media客户端调用GetMedia接口,以字节流形式读取实时音频数据。
  • 解码音频数据:按照Connect默认的G.711编码格式解码音频数据,完成后续业务逻辑。

注意:需为Go应用配置足够的IAM权限,包括kinesisvideo:DescribeStream、kinesisvideo:GetDataEndpoint、kinesisvideo:GetMedia等。


内容的提问来源于stack exchange,提问作者Kode Charlie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 09:23:18