

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 搭配 Kinesis Video Streams 使用 IPv6
<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 呼叫和資料平面串流操作。

## 設定適用於 IPv6 的 AWS SDK
<a name="configure-aws-sdk-ipv6"></a>

如果您使用 AWS SDK 在生產設定中呼叫 Kinesis Video Streams 控制平面 APIs，您可以透過設定雙堆疊端點來啟用 IPv6。 AWS 開發套件提供多種標準化方法來啟用雙堆疊端點。

**重要**  
啟用雙堆疊端點時，軟體開發套件會嘗試使用雙堆疊端點來提出網路請求。如果服務或區域不存在雙堆疊端點，則請求會失敗。

### 使用環境變數
<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");
```

### 開發套件支援
<a name="sdk-support-table"></a>

下列 AWS SDKs支援雙堆疊端點組態：


| SDK | 支援 | 組態方法 | 
| --- | --- | --- | 
| AWS CLI v2 | 是 | 環境變數、組態檔案 | 
| 適用於 C\+\+ 的 SDK | 是 | 環境變數、組態檔案 | 
| 適用於 Go V2 的 SDK (1.x) | 是 | 環境變數、組態檔案 | 
| 適用於 Java 2.x 的 SDK | 是 | 環境變數、組態檔案、JVM 屬性 | 
| 適用於 Java 1.x 的 SDK | 否 | 不支援 | 
| 適用於 JavaScript 3.x 的 SDK | 是 | 環境變數、組態檔案 | 
| 適用於 Python 的 SDK (Boto3) | 是 | 環境變數、組態檔案 | 

設定雙堆疊端點之後，軟體 AWS 開發套件會在呼叫 Kinesis Video Streams 控制平面 APIs 時自動使用 IPv6 端點。

## 設定適用於 IPv6 的 Kinesis Video Streams Producer SDK
<a name="configure-producer-sdk-ipv6"></a>

Kinesis Video Streams Producer SDK 為控制平面和資料平面操作提供 IPv6 組態選項。這些設定適用於 AWS SDK 雙堆疊端點組態。

### 設定 C/C\+\+ Producer SDK
<a name="configure-c-cpp-producer-sdk"></a>

預設端點和 DNS 解析鏈是由 KVS Producer-C SDK 1.6.0 版實作。它會依序檢查您可以設定這些參數組態的每個位置，然後選取您設定的第一個。預先定義的序列如下：

如需 Producer SDKs 的詳細資訊，請參閱 [Producer SDK for C](https://github.com/awslabs/amazon-kinesis-video-streams-producer-c)、[Producer SDK for C\+\+](https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp) 和 [Producer 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-only 的地址），則請求將會失敗。

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 擷取適當的雙堆疊資料平面端點。服務會根據請求 URL 傳回對應的端點。

範例：
+ 如果對結尾為 的舊版端點提出 `GetDataEndpoint` API 請求`.amazonaws.com`，Kinesis Video Streams 會傳回結尾為 的舊版資料平面端點`.amazonaws.com`。
+ 如果對以 結尾的雙堆疊端點提出 `GetDataEndpoint` API 請求`.api.aws`，Kinesis Video Streams 會傳回以 結尾的雙堆疊資料平面端點`.api.aws`。

## 設定 IPv6 AWS CLI 的
<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 SDK 範例
<a name="c-sdk-example"></a>

若要以IPV6-only Producer-C SDK，並忽略環境變數組態，請使用下列命令來建置 SDK：

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

**注意**  
如果您已建置 開發套件，則需要執行乾淨的建置。在執行建置命令之前，刪除現有的建置、開放原始碼和相依性資料夾。

## 考量事項
<a name="ipv6-considerations"></a>

### 網路需求
<a name="network-requirements"></a>
+ 確保您的網路基礎設施支援 IPv6 連線
+ 確認您的安全群組和網路 ACLs IPv6 流量
+ 從部署環境測試對 AWS IPv6 端點的連線
+ 某些 區域中的某些服務可使用雙堆疊端點 - 驗證目標區域的可用性

### 開發套件相容性
<a name="sdk-compatibility"></a>
+ 確保您使用的是支援的 AWS SDK 版本
+ 適用於 Java 的 AWS SDK 1.x 不支援雙堆疊端點組態
+ 對於適用於 Go 1.x (V1) 的 SDK，您必須啟用從組態檔案載入，才能使用共用的組態檔案設定

### 測試和驗證
<a name="testing-validation"></a>

將IPv6-enabled Kinesis Video Streams 應用程式部署到生產環境之前：
+ 測試控制平面操作 （串流建立、刪除、列出）
+ 驗證資料平面操作 （影片擷取和取用）
+ 驗證網路環境中的效能和連線
+ 執行 Canary 測試以確保一致的 IPv6 功能
+ 雙堆疊端點無法使用時的測試容錯移轉行為

## 受 IPv6 升級影響的客戶
<a name="customers-impacted-ipv6"></a>

當您為 Kinesis Video Streams 啟用 IPv6 時，有幾個區域可能需要更新現有的組態和政策，以確保持續功能。

### IAM 政策和 IP 地址篩選
<a name="iam-policies-ip-filtering"></a>

如果您在 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"
          ]
        }
      }
    }
  ]
}
```

### 日誌記錄和監控
<a name="logging-monitoring-ipv6"></a>

IPv6 地址的格式與 IPv4 地址不同，這可能會影響您的記錄、監控和分析系統。

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

 當透過 IPv6 提出請求時， 日誌會在 `sourceIPAddress` 欄位中包含 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>
+ 檢查 `AWS_USE_DUALSTACK_ENDPOINT=true` 是否已在您的組態檔案中設定`use_dualstack_endpoint = true`或
+ 確認 Kinesis Video Streams SDK IPv6 組態旗標已正確設定
+ 測試 AWS IPv6 端點的網路連線能力
+ 檢閱應用程式日誌是否有 IPv6-specific錯誤訊息
+ 確認您的區域支援 Kinesis Video Streams 的雙堆疊端點

### 組態驗證
<a name="configuration-validation"></a>

您可以檢查以下項目來驗證雙堆疊端點組態：
+ 環境變數： `echo $AWS_USE_DUALSTACK_ENDPOINT`
+ AWS 組態檔案： `cat ~/.aws/config | grep use_dualstack_endpoint`
+ JVM 屬性 (Java)：檢查應用程式日誌中的系統屬性