

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

# 将 IPv6 /Dual-Stack 终端节点与 Amazon Kinesis Video WebRTC 配合使用
<a name="kvswebrtc-ipv6"></a>

您可以将 Amazon Kinesis Video WebRTC 配置 IPv6 为用于控制平面和数据平面操作。这使您的应用程序能够使用通过双堆栈端点的地址与 Kinesis Video WebRTC 服务进行通信。 IPv6 

**注意**  
IPv6 支持需要特定的 SDK 版本和配置设置。确保您的 Kinesis Video WebRTC 软件开发工具包和亚马逊 Web Services 软件开发工具包版本支持双堆栈终端节点。 IPv6 双栈终端节点同时支持 IPv4 和 IPv6 流量，并且适用于某些地区的某些服务。

Amazon Kinesis Video WebRTC IPv6 通过双堆栈终端节点支持主应用程序和查看器应用程序。您可以将应用程序配置为使用 IPv6 /Dual-Stack 端点进行控制平面 API 调用和数据平面操作。

## 为 IPv6双栈终端节点配置 Amazon Web Services 软件开发工具包
<a name="kvswebrtc-ipv6-aws-sdk"></a>

如果您在生产设置中使用亚马逊 Web Services SDK 调用 Kinesis Video WebRTC 控制平面 APIs ，则可以通过配置双栈终端节点来启用。 IPv6 Amazon Web Services 软件开发工具包提供了多种标准化方法来启用双堆栈终端节点。

**重要**  
启用双堆栈终端节点后，SDK 会尝试使用双堆栈终端节点发出网络请求。如果服务或区域不存在双堆栈终端节点，则请求将失败。

### 使用环境变量
<a name="kvswebrtc-ipv6-environment-variables"></a>

设置以下环境变量以启用 IPv6 双栈端点：

```
export AWS_USE_DUALSTACK_ENDPOINT=true
```

### 使用亚马逊 Web Services 配置文件
<a name="kvswebrtc-ipv6-config-file"></a>

将以下设置添加到您的亚马逊 Web Services 配置文件 (\~/.aws/config) 中：

```
[default]
use_dualstack_endpoint = true
```

### 使用 JVM 系统属性（仅限 Java 和 Kotlin SDKs ）
<a name="kvswebrtc-ipv6-jvm-properties"></a>

对于 Java 和 Kotlin 应用程序，请设置以下 JVM 系统属性：

```
-Daws.useDualstackEndpoint=true
```

或者在你的 Java 代码中以编程方式：

```
System.setProperty("aws.useDualstackEndpoint", "true");
```

### SDK 支持
<a name="kvswebrtc-ipv6-sdk-support"></a>

以下 Amazon Web Services SDKs 支持双栈终端节点配置：


| SDK | 支持 | 配置方法 | 
| --- | --- | --- | 
| AWS CLI v2 | 是 | 环境变量，配置文件 | 
| 适用于 C\+\+ 的 SDK | 是 | 环境变量，配置文件 | 
| 适用于 Go V2 (1.x) 的 SDK | 是 | 环境变量，配置文件 | 
| 适用于 Go 1.x（V1）的 SDK | 是 | 环境变量，配置文件 | 
| 适用于 Java 2.x 的 SDK | 是 | 环境变量、配置文件、JVM 属性 | 
| 适用于 Java 1.x 的 SDK | 否 | 不支持 | 
| 适用于 JavaScript 3.x 的软件开发工具包 | 是 | 环境变量，配置文件 | 
| 适用于 JavaScript 2.x 的 SDK | 是 | 环境变量，配置文件 | 
| 适用于 Kotlin 的 SDK | 是 | 环境变量、配置文件、JVM 属性 | 
| 适用于.NET 4.x 的 SDK | 是 | 环境变量，配置文件 | 
| 适用于 .NET 3.x 的 SDK | 是 | 环境变量，配置文件 | 
| 适用于 PHP 3.x 的 SDK | 是 | 环境变量，配置文件 | 
| 适用于 Python (Boto3) 的 SDK | 是 | 环境变量，配置文件 | 
| 适用于 Ruby 3.x 的 SDK | 是 | 环境变量，配置文件 | 
| 适用于 Rust 的 SDK | 是 | 环境变量，配置文件 | 
| 适用于 Swift 的 SDK | 是 | 环境变量，配置文件 | 
| 适用于 PowerShell V5 的工具 | 是 | 环境变量，配置文件 | 
| 适用于 PowerShell V4 的工具 | 是 | 环境变量，配置文件 | 

配置双栈终端节点后，Amazon Web Services SDK 在调用 Kinesis Video WebRTC 控制平面时会自动使用 IPv6 终端节点。 APIs

## 为 /Dual-Stack 端点配置 Kinesis 视频 WebRTC 软件开发工具包 IPv6
<a name="kvswebrtc-ipv6-webRTC-C-sdk"></a>

Kinesis Video WebRTC SDK 为控制平面和数据平面操作提供了双栈配置选项。这些设置适用于亚马逊 Web Services 软件开发工具包双栈终端节点配置。

## 配置 WebRTC C 开发工具包
<a name="kvswebrtc-ipv6-webRTC-C-SDK"></a>

要使用双栈 AWS KVS 端点并尝试收集 IPv6 ICE 候选端点，请设置以下环境变量：

```
export KVS_DUALSTACK_ENDPOINTS=ON
```

在双栈模式下，ICE 收集将尝试包含 IPv6 候选对象，但兼容性最终取决于本地网络配置和接收对等体的功能。

要禁用双栈模式，请取消设置环境变量：

```
unset KVS_DUALSTACK_ENDPOINTS
```

## 数据平面端点分辨率
<a name="kvswebrtc-ipv6-data-plane"></a>

对于数据平面操作，Kinesis Video WebRTC SDK 使用 GetSignalingChannelEndpoint 该 API 来检索相应的 /dual-Stack 数据平面端点。 IPv6配置 /Dual-Stack 后，SDK 会自动请求 IPv6 /Dual-stack 端点 IPv6。

**重要**  
 GetSignalingChannelEndpoint API 已更新为支持 IPv6 端点。确保您使用的是支持此功能的兼容 SDK 版本。

## 为 IPv6 /Dual- AWS CLI Stack 配置
<a name="kvswebrtc-ipv6-aws-cli"></a>

如果您使用用 AWS CLI 于 Kinesis Video WebRTC 操作（通常用于 proof-of-concept工作），则可以通过配置双堆栈端点来启用。 IPv6 

### 使用环境变量
<a name="kvswebrtc-ipv6-cli-environment"></a>

```
export AWS_USE_DUALSTACK_ENDPOINT=true
```

### 使用亚马逊 Web Services 配置文件
<a name="kvswebrtc-ipv6-cli-config"></a>

将以下内容添加到您的 AWS CLI 配置文件中（\~/.aws/config）：

```
[default]
use_dualstack_endpoint = true
```

配置双堆栈终端节点后，将 AWS CLI 使用 IPv6 双堆栈终端节点进行所有亚马逊网络服务调用，包括 Kinesis Video WebRTC 操作。

## 注意事项
<a name="kvswebrtc-ipv6-considerations"></a>

### 物联网凭证提供商
<a name="kvswebrtc-ipv6-iot-credentials"></a>

如果您使用物联网凭据进行身份验证：
+ 物联网凭证端点支持 IPv6
+ 使用前面描述的标准 Amazon Web Services 软件开发工具包配置方法配置双栈终端节点
+ 物联网凭证流程与 Kinesis Video Webrtc 特定的配置是分开的 IPv6 

### 网络要求
<a name="kvswebrtc-ipv6-network-requirements"></a>
+ 确保您的网络基础设施支持 IPv6 连接
+ 验证您的安全组和网络是否 ACLs 允许 IPv6 流量
+ 测试部署环境中与 Amazon Web S IPv6 ervices 终端节点的连接
+ 某些地区的某些服务可以使用双栈终端节点，请验证目标区域的可用性

### SDK 兼容性
<a name="kvswebrtc-ipv6-sdk-compatibility"></a>
+ 确保您使用的是受支持的 Amazon Web Services 软件开发工具包版本（参见兼容性表）
+ 适用于 Java 的 Amazon Web Services SDK 1.x 不支持双栈终端节点配置
+ 对于 SDK for Go 1.x (V1)，必须启用从配置文件加载才能使用共享配置文件设置

### 测试和验证
<a name="kvswebrtc-ipv6-testing"></a>

在将 IPv6启用了 Kinesis Video 的 WebRTC 应用程序部署到生产环境之前，请执行以下操作：
+ 测试控制平面操作（频道创建、删除、列出）
+ 验证数据平面操作（眩晕、转弯和 WebRTC 信令）
+ 验证 peer-to-peer直播会话成功建立
+ 验证您的网络环境中的性能和连通性
+ 运行 canary 测试以确保 IPv6 功能一致
+ 在双栈端点不可用时测试故障转移行为

## 受升级影响的客户包括 IPv6
<a name="kvswebrtc-ipv6-customers-impacted"></a>

当您启 IPv6 用 Amazon Kinesis Video WebRTC 时，您可能需要在多个领域更新现有配置和策略，以确保持续运行。本节概述了过渡到 IPv6启用了的端点时需要注意的关键区域。

### IAM 策略和 IP 地址筛选
<a name="kvswebrtc-ipv6-iam-policies"></a>

如果您在 IAM 用户策略、角色策略或基于资源的策略中使用源 IP 地址筛选，则需要更新这些策略以包含 IPv6 地址范围。

**重要**  
在 IpAddress 或 NotIpAddress 条件中使用 IPv4 CIDR 块的现有 IAM 策略不会自动适用于 IPv6 地址。您必须明确添加 IPv6 范围以维护访问控制。

以下内容的 IAM 政策更新示例 IPv6：

```
{
  "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"
          ]
        }
      }
    }
  ]
}
```

IAM 政策更新的关键注意事项：
+ 在现有 IPv4 范围旁边添加 IPv6 CIDR 块
+ 对两个 IPv6 地址都 IPv4 使用 aws: SourceIp 条件密钥
+ 在部署之前，先在非生产环境中测试策略
+ 考虑使用 aw RequestedRegion s: 作为增强安全性的附加条件

### 网络安全组和访问控制列表
<a name="kvswebrtc-ipv6-network-security"></a>

如果您在亚马逊实例或其他 EC2 亚马逊云科技服务上运行 Kinesis Video WebRTC 应用程序，则需要更新安全组和网络以允许流量。 ACLs IPv6 
+ **安全组**-为 IPv6 CIDR 块添加入站和出站规则（:: /0 适用于所有 IPv6 流量或特定 IPv6 范围）
+ **网络 ACLs**-更新子网级别的网络 ACLs 以允许所需 IPv6 端口上的流量
+ **路由表** — 确保您的 VPC 路由表包含 IPv6 流量到达互联网网关或 NAT 网关的路由

### 日志记录和监控
<a name="kvswebrtc-ipv6-logging-monitoring"></a>

IPv6 地址的格式与 IPv4 地址不同，这可能会影响您的日志、监控和分析系统。

#### AWS CloudTrail 日志
<a name="kvswebrtc-ipv6-cloudtrail"></a>

AWS CloudTrail 发出请求时，日志将在源IPAddress 字段中包含 IPv6 地址 IPv6。更新您的日志解析工具和脚本以处理 IPv6 地址格式。

 AWS CloudTrail 日志中的 IPv6 地址示例：

```
{
  "sourceIPAddress": "2001:db8::1",
  "eventName": "CreateSignalingChannel",
  "eventSource": "kinesisvideo.amazonaws.com"
}
```

#### 应用程序日志
<a name="kvswebrtc-ipv6-application-logs"></a>

如果您的应用程序记录客户端 IP 地址或执行基于 IP 的分析，请确保您的日志基础架构可以处理 IPv6 地址：
+ 更新日志解析正则表达式以匹配格式 IPv6 
+ 如果您使用固定长度字段存储 IP 地址，请修改数据库架构
+ 更新分析查询和仪表板以使用 IPv6 地址
+ 考虑使用 IP 地址标准化库进行一致的处理

#### 监控和提醒
<a name="kvswebrtc-ipv6-monitoring-alerting"></a>

更新您的监控和警报系统以考虑 IPv6 流量：
+ 按 IP 地址筛选的 Amazon CloudWatch 指标和警报
+ 跟踪基于 IP 的模式的自定义指标
+ 用于分析流量模式的安全监控工具
+ 将 IP 地址映射到位置的地理定位服务

### 第三方集成
<a name="kvswebrtc-ipv6-third-party"></a>

查看并更新与您的 Kinesis Video WebRTC 应用程序集成的第三方服务和工具：
+ **内容分发网络 (CDNs)** — IPv6 如果您使用 CDNs 视频分发，请确保 CDN 配置支持
+ **负载均衡器**-配置应用程序负载均衡器或网络负载均衡器以处理流量 IPv6 
+ **DNS 服务** — 更新 DNS 记录以包含 AAAA 地址记录 IPv6 
+ **防火墙和安全设备**-配置网络安全设备以允许 IPv6 流量
+ **监控工具**-验证第三方监控和分析工具是否支持 IPv6 地址格式

### 应用程序代码更新
<a name="kvswebrtc-ipv6-application-code"></a>

查看您的应用程序代码，了解可能需要更新的 IPv4特定假设：
+ **IP 地址验证**-更新输入验证以接受 IPv6 地址格式
+ **数据库架构**-确保 IP 地址字段可以存储 IPv6 地址（通常需要更大的字段大小）
+ **配置文件**-更新所有硬编码 IPv4 地址或 CIDR 块
+ **客户端库**-验证 HTTP 客户端和网络库是否支持 IPv6
+ **错误处理**-更新错误处理以解决 IPv6特定网络错误

### 测试和验证
<a name="kvswebrtc-ipv6-testing-validation"></a>

在生产环境 IPv6 中启用之前，请彻底测试您的应用程序和基础架构：
+ **连接测试**-验证所有组件均可通过以下方式进行通信 IPv6
+ **性能测试** — 比较 IPv6 和 IPv4 性能以发现任何问题
+ **安全测试** — 验证安全控制是否能正常处理 IPv6 流量
+ **故障转移测试**- IPv6 连接不可用时测试行为
+ **日志分析**-验证日志和监控系统是否正确处理 IPv6 地址
+ **集成测试**-在启用后测试所有第三方集成 IPv6 

### 迁移策略
<a name="kvswebrtc-ipv6-migration-strategy"></a>

考虑采用分阶段的方法进行 IPv6 采用：

1. **评估阶段** — 清点所有系统并确定 IPv6 准备情况

1. **准备阶段**-更新策略、安全组和应用程序代码

1. **测试阶段**- IPv6 在开发和暂存环境中启用

1. **试点阶段** — IPv6 为部分生产流量启用

1. **全面部署**-逐步增加 IPv6 流量，直到完全部署

1. **监控阶段** — 持续监控问题并优化性能

## 问题排查
<a name="kvswebrtc-ipv6-troubleshooting"></a>

### 常见问题
<a name="kvswebrtc-ipv6-common-issues"></a>
+ **连接失败**-验证 IPv6 网络连接和 DNS 解析
+ **SDK 错误** — 确保您使用的是支持双栈端点的兼容 SDK 版本
+ **身份验证问题** — 确认 IAM 策略和证书适用于 IPv6 终端节点
+ **终端节点不可用**-如果服务或区域不存在双栈终端节点，则请求将失败

### 验证步骤
<a name="kvswebrtc-ipv6-verification"></a>
+ 检查配置文件中是否设置了 AWS\_USE \_dualstack\_endpoint=True 或者配置文件中是否设置了 use\_dualstack\_endpoint = true
+ 验证 Kinesis Video WebRTC SDK 配置标志是否设置正确 IPv6 
+ 测试与 Amazon Web Services IPv6 终端节点的网络连接
+ 查看应用程序日志，了解 IPv6特定于具体的错误消息
+ 确认您所在的地区支持 Kinesis Video WebRTC 的双栈终端节点

### 配置验证
<a name="kvswebrtc-ipv6-config-validation"></a>

您可以通过检查以下内容来验证您的双栈终端节点配置：
+ **环境变量：**echo $ AWS\_USE \_DUALSTACK\_ENDPOINT
+ **亚马逊 Web Services 配置文件：**cat \~/.aws/config \| grep use\_dualstack\_endpoint
+ **JVM 属性 (Java)：**检查应用程序日志中的系统属性

如需其他支持和疑难解答，请参阅 AWS 文档或联系信息 AWS。