当前位置: 首页 > news >正文

【ZeroRange WebRTC】Amazon Kinesis Video Streams WebRTC Control Plane API 深度解析

Amazon Kinesis Video Streams WebRTC Control Plane API 深度解析

基于官方文档与 amazon-kinesis-video-streams-webrtc-sdk-c-main 源码(v1.7.0+)


1. 职责定位

维度说明
所属平面Control Plane(控制面)
主要用途1. 信令通道生命周期(创建/描述/删除)
2. 端点发现(获取 Data-Plane HTTPS/WSS/WEBRTC 终端)
3. 权限与配额管理
协议HTTPS(TLS 1.2+)+ SigV4 签名
终端节点https://kinesisvideo.{region}.amazonaws.com
幂等性除 List 外均为幂等
默认配额5–20 TPS/Region/Account(见下表)

2. 接口速览

API典型调用者幂等默认配额SDK 封装函数
CreateSignalingChannel启动脚本10 TPScreateChannelLws()
DescribeSignalingChannel所有客户端20 TPSdescribeChannelLws()
GetSignalingChannelEndpoint所有客户端20 TPSgetChannelEndpointLws()
UpdateSignalingChannel运维/存储场景5 TPS—(直接 REST)
DeleteSignalingChannel清理脚本5 TPS—(直接 REST)
ListSignalingChannels控制台/运维5 TPS—(直接 REST)

配额提升路径:AWS Support → Service Quotas → Kinesis Video Streams


3. 端到端交互时序

Client (SDK)Control Plane1. 通道存在性校验POST /describeSignalingChannel {ChannelName}POST /createSignalingChannel {ChannelName}200 {ChannelARN}POST /describeSignalingChannelalt[404 ResourceNotFound & auto-create=true]200 {ChannelARN, Version, CreationTime}2. 获取数据面终端POST /getSignalingChannelEndpoint {ChannelARN, Protocols:[HTTPS,WSS], Role:MASTER}200 {ResourceEndpointList:[{Protocol:HTTPS, ResourceEndpoint:...}, {Protocol:WSS, ...}]}Client (SDK)Control Plane

4. 请求/响应详解

4.1 DescribeSignalingChannel

  • Method: POST
  • URI: /describeSignalingChannel
  • Body:
{"ChannelName": "myChannel"
}
  • Response:
{"ChannelInfo": {"ChannelName": "myChannel","ChannelARN": "arn:aws:kinesisvideo:us-east-1:123456789012:channel/myChannel/12345678901234567","CreationTime": 1.23456789E9,"Version": "1.0"}
}

4.2 GetSignalingChannelEndpoint

  • Method: POST
  • URI: /getSignalingChannelEndpoint
  • Body:
{"ChannelARN": "arn:aws:kinesisvideo:us-east-1:123456789012:channel/myChannel/12345678901234567","SingleMasterChannelEndpointConfiguration": {"Protocols": ["HTTPS", "WSS"],"Role": "MASTER"      // 或 VIEWER}
}
  • Response:
{"ResourceEndpointList": [{"Protocol": "HTTPS","ResourceEndpoint": "https://b-12345678.kinesisvideo.us-east-1.amazonaws.com"},{"Protocol": "WSS","ResourceEndpoint": "wss://v-12345678.kinesisvideo.us-east-1.amazonaws.com"}]
}

4.3 CreateSignalingChannel

  • URI: /createSignalingChannel
  • Body:
{"ChannelName": "myChannel","ChannelType": "SINGLE_MASTER",   // 目前唯一合法值"Tags": [{"Key": "Project", "Value": "WebRTC"}]
}
  • Response 同 Describe,含新生成 ARN。

5. SigV4 签名与代码实现

  • 签名入口:createRequestInfo()generateSignature() @ src/source/Common/Auth.c
  • 关键头:
Authorization: AWS4-HMAC-SHA256 Credential=AKIA.../20251114/us-east-1/kinesisvideo/aws4_request, SignedHeaders=host;x-amz-date, Signature=...
nX-Amz-Date: 20251114T123456Z
X-Amz-Security-Token: <session-token>   # 临时凭证时
  • 时钟偏差 > 5 min 将返回 RequestTimeTooSkewed;SDK 自动校正(clockSkew 逻辑 @ LwsApiCalls.c:92)

6. SDK 源码映射

| API | 封装函数 | HTTPS 实现 | 状态机推进 | 关键日志 |
n| ---- | ---- | ---- | ---- | ---- |
| DescribeSignalingChannel | describeChannel() | describeChannelLws() @ LwsApiCalls.c:798 | SIGNALING_STATE_DESCRIBEGET_ENDPOINT | Perform secure synchronous call for URL: .../describeSignalingChannel |
| GetSignalingChannelEndpoint | getChannelEndpoint() | getChannelEndpointLws() @ LwsApiCalls.c:1039 | GET_ENDPOINTGET_ICE_CONFIG | ResourceEndpointList/WSS/HTTPS |
| CreateSignalingChannel | createSignalingChannel() | createChannelLws() @ LwsApiCalls.c:850 | 启动时若 404 则自动插入 CREATE | Creating signaling channel |

所有 HTTPS 请求统一走 lwsCompleteSync()lwsHttpCallbackRoutine(),SigV4 由 createRequestInfo() 注入


7. 状态机简图

404 & auto-create=true
200
200
200
200
WSS connected
DESCRIBE
CREATE
GET_ENDPOINT
GET_ICE_CONFIG
CONNECT
READY
  • 任何步骤 4xx/5xx 均触发指数退避重试(初始 100 ms → 最大 30 s)

8. IAM 最小权限模板

{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": ["kinesisvideo:DescribeSignalingChannel","kinesisvideo:GetSignalingChannelEndpoint","kinesisvideo:CreateSignalingChannel"],"Resource": "arn:aws:kinesisvideo:*:*:channel/myAppPrefix*"}]
}

删除通道需额外 kinesisvideo:DeleteSignalingChannel;列表需 kinesisvideo:ListSignalingChannels


9. 日志关键词与快速检索

# 控制面调用
grep -E "describeChannelLws|getChannelEndpointLws|createChannelLws" master.log# SigV4 头
grep -E "Authorization:|X-Amz-Date:|X-Amz-Security-Token" master.log# 时钟偏差
grep "Clock skew" master.log# 状态机推进
grep "Signaling client state changed" master.log

10. 常见错误与处置

HTTP错误名根因排查
403AccessDeniedIAM 未授权/签名错误核对 IAM、Region、时钟
404ResourceNotFound通道不存在确认 ChannelName/ARN;是否已 Delete
400RequestTimeTooSkewed本地时间 > 5 minNTP 同步;检查容器/VM 时区
400ThrottlingException超配额控制台提升 TPS;退避重试已内置

11. 小结

  • 职责:控制面仅负责“资源发现”与“生命周期”,不涉媒体与信令内容
  • 协议:统一 HTTPS + SigV4 + JSON,区域级终端节点,幂等设计
  • SDK:C-SDK 用 libwebsockets 封装,状态机驱动,指数退避重试,自动时钟校正
  • 排错:先看 IAM → 时钟 → 配额 → 日志关键词;80% 问题为权限/时钟/拼写

附录:引用源码(行号随版本略有浮动)

  • describeChannelLws() → src/source/Signaling/LwsApiCalls.c:798
  • getChannelEndpointLws() → src/source/Signaling/LwsApiCalls.c:1039
  • createChannelLws() → src/source/Signaling/LwsApiCalls.c:850
  • 状态机定义 → src/source/Signaling/StateMachine.c
  • SigV4 生成 → src/source/Common/Auth.c

如需 PlantUML 高清时序图、IAM 策略生成脚本或 CloudWatch Insights 查询语句,请告诉我!

http://www.dtcms.com/a/610501.html

相关文章:

  • 网站域名续费多少钱珠海市企业网络推广
  • 电力系统暂态信号多尺度时频分析与卷积循环神经网络驱动的故障快速识别技术
  • 贵州建设公司网站868868域名查询
  • 建立网站链接结构的基本方式是模拟创建一个公司
  • 5-基于C5G 开发板的FPGA 串口通信设计 (FT232R, Altera UART IP和Nios II系统串口收发命令)
  • 手机视频网站怎么做宁夏石嘴山市城乡建设局提意见网站
  • 基于LLM 的 RAG 应用开发实战
  • 服务端开发案例(不定期更新)
  • 济宁网站建设培训班怎么提高网站加载速度慢
  • 简写单词
  • c2c模式的网站微网站在哪制作的
  • 双语版网站案例html中秋节网页制作代码
  • SSM快递代收系统00pay(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • occ中设置V3d_View视图方法
  • 顺德制作网站价格多少在线购物商城的设计与实现
  • Go语言编译器下载 | 完整安装教程与环境配置指南
  • 基于XTOM蓝光扫描的自由曲面微电路制造:一种增材制造的微尺寸几何重建与精度保障方法
  • 零陵区住房和城乡建设局网站首页哪里建设网站不需要备案
  • 网站建设软件排行两学一做网站是多少
  • 选商务手机需全面考量性能便携续航通信与办公功能
  • 网站地区分站系统重庆ssc做号网站
  • 高校5G实验室如何规划?核心设备、架构与应用场景详解
  • 做的好的网站有哪些重庆网站建设之
  • 【强化学习基础概念】
  • 有什么较好的网站开发框架广州做网站如何
  • KP2801SGA准谐振式升压型恒压功率因数校正控制器芯片详细解析
  • Java实现MySQL用户登录注册系统
  • 三门峡网站开发重庆颐众达网站
  • 解构智慧养老:当科技成为银发族的“隐形守护者”
  • 看不见的核安全:核控制系统如何降低测试风险?