

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

# IPv6 与 Kinesis Video Streams 配合使用
<a name="ipv6-support"></a>

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

**注意**  
IPv6 支持需要特定的 SDK 版本和配置设置。确保你的 Kinesis Video Streams SDK AWS 和 SDK 版本 IPv6 支持双栈端点。双栈终端节点同时支持 IPv4 和 IPv6 流量，并且适用于某些地区的某些服务。

Kinesis Video Streams 通过双栈端点 IPv6 支持生产者和消费者应用程序。您可以将应用程序配置 IPv6 为用于控制平面 API 调用和数据平面流式传输操作。

## 将 AWS SDK 配置为 IPv6
<a name="configure-aws-sdk-ipv6"></a>

如果你在制作设置中使用 AWS 软件开发工具包调用 Kinesis Video Streams 控制 APIs 平面，则可以通过配置双栈端点来 IPv6 启用。S AWS DK 提供了几种标准化方法来启用双堆栈端点。

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

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

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

```
export AWS_USE_DUALSTACK_ENDPOINT=true
```

### 使用 AWS 配置文件
<a name="ipv6-config-file"></a>

将以下设置添加到您的 AWS 配置文件 (`~/.aws/config`)：

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

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

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

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

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

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

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

以下 AWS SDKs 支持双栈端点配置：


| 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 SDK 在调用 Kinesis Video Streams 控制平面时会自动使用 IPv6 终端节点。 APIs

## 将 Kinesis Video Streams Producer SDK 配置为 IPv6
<a name="configure-producer-sdk-ipv6"></a>

Kinesis Video Streams Producer SDK 为控制平面和数据平面操作 IPv6 提供了配置选项。这些设置 AWS 适用于 SDK 双栈端点配置。

### 配置 C/C\+\+ 制作器开发工具包
<a name="configure-c-cpp-producer-sdk"></a>

默认端点和 DNS 解析链由 KVS Producer-C SDK 版本 1.6.0 实现。它会按顺序检查每个可以为这些参数设置配置的地方，然后选择你设置的第一个位置。预定义顺序如下：

有关制作器的更多信息 SDKs，请参阅适用于 C 的制作[人 SDK、适用于 C](https://github.com/awslabs/amazon-kinesis-video-streams-producer-c) [\+\+ 的制作人 SDK](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp) 和[制作人 SDK 相关主题](https://docs.aws.amazon.com/kinesisvideostreams/latest/dg/producer-sdk.html#producer-sdk-related-topics)。

#### 端点配置
<a name="endpoint-configuration"></a>

1. 的`controlPlaneUrl`参数`createAbstractDefaultCallbacksProvider`。

1. 端点配置 CMake 参数：(`-DAWS_KVS_USE_LEGACY_ENDPOINT_ONLY=TRUE`,`-DAWS_KVS_USE_DUAL_STACK_ENDPOINT_ONLY=TRUE`)

1. 环境变量:(`export AWS_USE_DUALSTACK_ENDPOINT=TRUE`)
   + 如果`AWS_USE_DUALSTACK_ENDPOINT`是`TRUE`（不区分大小写），则将使用双栈端点。

1. 否则，将构造和使用传统端点。

对于 2、3 和 4，将根据提供给的区域来构造端点`createAbstractDefaultCallbacksProvider`。

#### DNS 过滤
<a name="dns-filtering"></a>

KVS Producer SDK 将根据配置设置相应的`CURLOPT_IPRESOLVE`参数：

1. DNS 解析 CMake 参数：(`-DAWS_KVS_IPV4_ONLY=TRUE`、`-DAWS_KVS_IPV6_ONLY=TRUE`、`-DAWS_KVS_IPV4_AND_IPV6_ONLY=TRUE`)

1. 环境变量 (`export AWS_KVS_USE_IPV4=TRUE`,`export AWS_KVS_USE_IPV6=TRUE`)

1. 否则，将不会进行过滤。如果由 DNS 返回，则可以同时 IPv4 使用 IPv6 IP 地址。

**注意**  
如果 DNS 筛选器设置设置为筛选 IPV6 IP 地址，但 SDK 配置为使用传统终端节点（ IPV4仅返回地址），则请求将失败。

C\+\+ Producer SDK 版本 3.5.0 使用 Producer-C SDK 1.6.0 进行 KVS API 调用。

### 配置 GStreamer 插件
<a name="configure-gstreamer-plugin"></a>

该 GStreamer 插件使用底层 C Producer SDK，因此 IPv6 在按照前面所述配置 C SDK 时 IPv6 ，会自动处理配置。

无需修改代码，只需使用 CMake 参数构建 SDK 或按照上一节所述设置相应的环境变量即可。

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

对于数据平面操作，请使用 `GetDataEndpoint` API 检索相应的双堆栈数据平面端点。该服务根据请求网址返回相应的端点。

示例：
+ 如果向以结尾的旧版终端节点发出 `GetDataEndpoint` API 请求`.amazonaws.com`，Kinesis Video Streams 将返回以结尾`.amazonaws.com`的传统数据平面端点。
+ 如果向结尾为的双栈终端节点发出 `GetDataEndpoint` API 请求`.api.aws`，Kinesis Video Streams 将返回结尾为的双栈数据平面终端节点。`.api.aws`

## 配置 fo AWS CLI r IPv6
<a name="configure-aws-cli-ipv6"></a>

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

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

```
export AWS_USE_DUALSTACK_ENDPOINT=true
```

### 使用 AWS 配置文件
<a name="cli-config-file"></a>

将以下内容添加到您的 AWS CLI 配置文件 (`~/.aws/config`)：

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

## 配置示例
<a name="configuration-examples"></a>

### C 软件开发工具包示例
<a name="c-sdk-example"></a>

要在 IPV6仅限模式下构建 KVS Producer-C SDK 并忽略环境变量配置，请使用以下命令构建 SDK：

```
cmake .. -DAWS_KVS_USE_DUAL_STACK_ENDPOINT_ONLY=TRUE -DAWS_KVS_IPV6_ONLY=TRUE
make -j
```

**注意**  
如果您已经构建了 SDK，则需要执行干净的构建。在运行构建命令之前，请删除现有的构建、开源和依赖文件夹。

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

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

### SDK 兼容性
<a name="sdk-compatibility"></a>
+ 确保您使用的是受支持的 AWS SDK 版本
+  AWS 适用于 Java 的 SDK 1.x 不支持双栈端点配置
+ 对于 SDK for Go 1.x (V1)，必须启用从配置文件加载才能使用共享配置文件设置

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

在将 IPv6启用了 Kinesis Video Streams 应用程序部署到生产环境之前，请执行以下操作：
+ 测试控制平面操作（直播创建、删除、上线）
+ 验证数据平面操作（视频摄取和消费）
+ 验证您的网络环境中的性能和连通性
+ 运行 canary 测试以确保 IPv6 功能一致
+ 在双栈端点不可用时测试故障转移行为

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

启 IPv6 用 Kinesis Video Streams 后，可能需要在多个区域更新现有配置和策略，以确保持续运行。

### IAM 策略和 IP 地址筛选
<a name="iam-policies-ip-filtering"></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"
          ]
        }
      }
    }
  ]
}
```

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

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

#### logs
<a name="cloudtrail-logs"></a>

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

日志中的 IPv6 地址示例：

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

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

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

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

### 配置验证
<a name="configuration-validation"></a>

您可以通过检查以下内容来验证您的双栈终端节点配置：
+ 环境变量：`echo $AWS_USE_DUALSTACK_ENDPOINT`
+ AWS 配置文件：`cat ~/.aws/config | grep use_dualstack_endpoint`
+ JVM 属性 (Java)：检查应用程序日志中的系统属性