本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Kinesis Video Streams 中使用 IPv6
您可以将 Kinesis Video Streams 配置为使用 IPv6 进行控制平面和数据平面操作。这使您的应用程序能够通过双栈端点使用 IPv6 地址与 Kinesis Video Streams 服务进行通信。
注意
IPv6 支持需要特定的软件开发工具包版本和配置设置。确保你的 Kinesis Video Streams SDK AWS 和 SDK 版本支持 IPv6 双栈端点。 Dual-stack 终端节点同时支持 IPv4 和 IPv6 流量,并且适用于某些地区的某些服务。
Kinesis Video Streams 通过双栈端点为生产者和消费者应用程序支持 IPv6。您可以将应用程序配置为使用 IPv6 进行控制平面 API 调用和数据平面流式传输操作。
配置 AWS IPv6 版 SDK
如果你在生产设置中使用 AWS 软件开发工具包调用 Kinesis Video Streams 控制平面 API,则可以通过配置双栈端点来启用 IPv6。S AWS DK 提供了几种标准化方法来启用双堆栈端点。
重要
启用双堆栈终端节点后,SDK 会尝试使用双堆栈终端节点发出网络请求。如果服务或区域不存在双堆栈终端节点,则请求将失败。
使用环境变量
设置以下环境变量以启用 IPv6 双栈端点:
export AWS_USE_DUALSTACK_ENDPOINT=true
使用 AWS 配置文件
将以下设置添加到您的 AWS 配置文件 (~/.aws/config):
[default] use_dualstack_endpoint = true
使用 JVM 系统属性(仅限 Java 和 Kotlin 软件开发工具包)
对于 Java 和 Kotlin 应用程序,请设置以下 JVM 系统属性:
-Daws.useDualstackEndpoint=true
或者在你的 Java 代码中以编程方式:
System.setProperty("aws.useDualstackEndpoint", "true");
SDK 支持
以下 AWS SDK 支持双栈端点配置:
| SDK | 支持 | 配置方法 |
|---|---|---|
| AWS CLI v2 | 是 | 环境变量,配置文件 |
| 适用于 C++ 的 SDK | 是 | 环境变量,配置文件 |
| 适用于 Go V2 (1.x) 的 SDK | 是 | 环境变量,配置文件 |
| 适用于 Java 2.x 的 SDK | 是 | 环境变量、配置文件、JVM 属性 |
| 适用于 Java 1.x 的 SDK | 否 | 不支持 |
| 适用于 JavaScript 3.x 的软件开发工具包 | 是 | 环境变量,配置文件 |
| 适用于 Python (Boto3) 的 SDK | 是 | 环境变量,配置文件 |
配置双栈终端节点后,软件开发工具包在调用 AWS Kinesis Video Streams 控制平面 API 时会自动使用 IPv6 端点。
配置适用于 IPv6 的 Kinesis Video Streams Producer SDK
Kinesis Video Streams Producer SDK 为控制平面和数据平面操作提供 IPv6 配置选项。这些设置 AWS 适用于 SDK 双栈端点配置。
配置 C/C ++ 制作器 SDK
默认端点和 DNS 解析链由 KVS Producer-C SDK 版本 1.6.0 实现。它会按顺序检查每个可以为这些参数设置配置的地方,然后选择你设置的第一个位置。预定义顺序如下:
有关 Producer SDK 的更多信息,请参阅适用于 C 的制作人 SDK、适用于
端点配置
-
的
controlPlaneUrl参数createAbstractDefaultCallbacksProvider。 -
端点配置 CMake 参数:(
-DAWS_KVS_USE_LEGACY_ENDPOINT_ONLY=TRUE,-DAWS_KVS_USE_DUAL_STACK_ENDPOINT_ONLY=TRUE) -
环境变量:(
export AWS_USE_DUALSTACK_ENDPOINT=TRUE)-
如果
AWS_USE_DUALSTACK_ENDPOINT是TRUE(不区分大小写),则将使用双栈端点。
-
-
否则,将构造和使用传统端点。
对于 2、3 和 4,将根据提供给的区域来构造端点createAbstractDefaultCallbacksProvider。
DNS 过滤
KVS Producer SDK 将根据配置设置相应的CURLOPT_IPRESOLVE参数:
-
DNS 解析 cMake 参数:(
-DAWS_KVS_IPV4_ONLY=TRUE,-DAWS_KVS_IPV6_ONLY=TRUE,-DAWS_KVS_IPV4_AND_IPV6_ONLY=TRUE) -
环境变量 (
export AWS_KVS_USE_IPV4=TRUE,export AWS_KVS_USE_IPV6=TRUE) -
否则,将不会进行过滤。如果由 DNS 返回,则可以同时使用 IPv4 和 IPv6 的 IP 地址。
注意
如果 DNS 筛选器设置设置为筛选 IPV6 IP 地址,但 SDK 配置为使用传统端点(返回 IPV4-only 地址),则请求将失败。
C++ Producer SDK 版本 3.5.0 使用 Producer-C 软件开发工具包 1.6.0 进行 KVS API 调用。
配置 gStreamer 插件
gStreamer 插件使用底层 C Producer SDK,因此,当你按照前面所述为 IPv6 配置 C SDK 时,会自动处理 IPv6 配置。
无需修改代码,只需使用 CMake 参数构建 SDK 或按照上一节所述设置相应的环境变量即可。
数据平面端点分辨率
对于数据平面操作,请使用 GetDataEndpoint API 检索相应的双堆栈数据平面端点。该服务根据请求网址返回相应的端点。
示例:
-
如果向以结尾的旧版终端节点发出
GetDataEndpointAPI 请求.amazonaws.com,Kinesis Video Streams 将返回以结尾.amazonaws.com的传统数据平面端点。 -
如果向结尾为的双栈终端节点发出
GetDataEndpointAPI 请求.api.aws,Kinesis Video Streams 将返回结尾为的双栈数据平面终端节点。.api.aws
配置 AWS CLI 适用于 IPv6
如果您使用用 AWS CLI 于 Kinesis Video Streams 操作(通常用于概念验证工作),则可以通过配置双栈端点来启用 IPv6。
使用环境变量
export AWS_USE_DUALSTACK_ENDPOINT=true
使用 AWS 配置文件
将以下内容添加到您的 AWS CLI 配置文件 (~/.aws/config):
[default] use_dualstack_endpoint = true
配置示例
C 软件开发工具包示例
要在 IPV6-only 模式下构建 KVS Producer-C SDK 并忽略环境变量配置,请使用以下命令构建 SDK:
cmake .. -DAWS_KVS_USE_DUAL_STACK_ENDPOINT_ONLY=TRUE -DAWS_KVS_IPV6_ONLY=TRUE make -j
注意
如果您已经构建了 SDK,则需要执行干净的构建。在运行构建命令之前,请删除现有的构建、开源和依赖文件夹。
注意事项
网络要求
-
确保您的网络基础设施支持 IPv6 连接
-
确认您的安全组和网络 ACL 允许 IPv6 流量
-
测试部署环境与 AWS IPv6 端点的连接
-
Dual-stack 某些区域的某些服务可以使用终端节点——验证目标区域的可用性
SDK 兼容性
-
确保您使用的是受支持的 AWS SDK 版本
-
AWS 适用于 Java 的 SDK 1.x 不支持双栈端点配置
-
对于 SDK for Go 1.x (V1),必须启用从配置文件加载才能使用共享配置文件设置
测试和验证
在将 IPv6-enabled Kinesis Video Streams 应用程序部署到生产环境之前:
-
测试控制平面操作(直播创建、删除、上线)
-
验证数据平面操作(视频摄取和消费)
-
验证您的网络环境中的性能和连通性
-
运行灰度测试以确保一致的 IPv6 功能
-
在双栈端点不可用时测试故障转移行为
受 IPv6 升级影响的客户
在为 Kinesis Video Streams Video Streams 启用 IPv6 时,可能需要在多个领域更新现有配置和策略,以确保持续运行。
IAM 策略和 IP 地址筛选
如果您在 IAM 用户策略、角色策略或基于资源的策略中使用源 IP 地址筛选,则需要更新这些策略以包含 IPv6 地址范围。
重要
在IpAddress或NotIpAddress条件中使用 IPv4 CIDR 块的现有 IAM 策略不会自动适用于 IPv6 地址。必须明确添加 IPv6 范围才能保持访问控制。
IPv6 的 IAM 策略更新示例:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": "*", "Action": "kinesisvideo:*", "Resource": "*", "Condition": { "IpAddress": { "aws:SourceIp": [ "192.0.2.0/24", "203.0.113.0/24", "2001:db8::/32" ] } } } ] }
日志记录和监控
IPv6 地址的格式与 IPv4 地址不同,这可能会影响您的日志、监控和分析系统。
logs
当通过 IPv6 发出请求时,日志将在sourceIPAddress字段中包含 IPv6 地址。更新您的日志解析工具和脚本以处理 IPv6 地址格式。
日志中的 IPv6 地址示例:
{ "sourceIPAddress": "2001:db8::1", "eventName": "CreateStream", "eventSource": "kinesisvideo.amazonaws.com" }
问题排查
常见问题
-
连接失败-验证 IPv6 网络连接和 DNS 解析
-
SDK 错误 — 确保您使用的是支持双栈端点的兼容 SDK 版本
-
身份验证问题 — 确认 IAM 策略和证书适用于 IPv6 终端节点
-
终端节点不可用-如果服务或区域不存在双栈终端节点,则请求将失败
验证步骤
-
检查您的配置文件中
use_dualstack_endpoint = true是否已设置或已设置AWS_USE_DUALSTACK_ENDPOINT=true -
验证 Kinesis Video Streams SDK IPv6 配置标志是否设置正确
-
测试与 AWS IPv6 端点的网络连接
-
查看应用程序日志以获取 IPv6-specific 错误消息
-
确认您所在的地区支持 Kinesis Video Streams 的双栈终端节点
配置验证
您可以通过检查以下内容来验证您的双栈终端节点配置:
-
环境变量:
echo $AWS_USE_DUALSTACK_ENDPOINT -
AWS 配置文件:
cat ~/.aws/config | grep use_dualstack_endpoint -
JVM 属性 (Java):检查应用程序日志中的系统属性