

# DAX 和 IPv6
<a name="DAX.create-cluster.DAX_and_IPV6"></a>

DynamoDB DAX 现在支持 IPv6 寻址，这样您就可以创建在仅 IPv4、仅 IPv6 或双栈联网模式下工作的集群。这有助于增强网络能力，满足不断变化的基础设施需求。

**网络类型：**

您可以使用下列网络类型之一创建集群：
+ 仅 IPv4
+ 仅 IPv6
+ 双栈（同时支持 IPv4 和 IPv6）

**主要功能**

利用 IPv6 支持，您可以：
+ **网络配置选项：**
  + `dual_stack subnets` 上的仅 IPv4 集群和双栈集群。
  + 仅 IPv6 的子网上的仅 IPv6 集群。
+ **子网组管理：**
  + 创建子网组，支持仅 IPv4、仅 IPv6 或双栈模式
  + 使用其他 VPC 子网修改现有子网组
  + 向配置为支持 IPv6 的子网组添加仅 IPv6 子网
  + 向配置为支持 IPv4 和双栈的子网组添加 IPv4 或双栈子网
+ **客户端配置：**
  + 在进行数据面板调用时，您可以使用以下方法为 dual\$1stack 集群设置首选 IP 协议：
    + Python SDK 中的 `ip_discovery` 参数
    + 其他 SDK 中的 `ipDiscovery` 参数
  + 默认值：未指定协议首选项时为 IPv4

在 DAX 集群中实施 IPv6 之前，您必须考虑以下事项：
+ 创建集群后，网络类型将无法更改
+ 对于双栈集群，客户端配置中的 `ip_discovery/ipDiscovery` 参数确定使用哪个 IP 协议（IPv4 或 IPv6）
+ 不同的应用程序可以根据其配置，使用不同的 IP 协议连接到同一个双栈集群

**Example 示例客户端配置**  

```
DynamoDbAsyncClient client = ClusterDaxAsyncClient.builder()
        .overrideConfiguration(Configuration.builder()
            .url(endpoint)             // DAX cluster endpoint
            .ipDiscovery(ipDiscovery)       // IP discovery type (IPv4 or IPv6)
            .build())
        .build();
```

**重要**  
使用 DAX 时，当您通过基于资源的 IAM 策略，在仅 IPv6 的环境中限制 DynamoDB 表的 IP 地址时，如果您屏蔽 IPv4 地址空间（`0.0.0.0/0`），则必须为 DAX 集群的 IAM 角色创建一个特例。在您的策略中添加 `ArnNotEquals` 条件，专门允许 DAX 集群的 IAM 角色进行访问，同时保持对其他访问路径的基于 IP 的限制。如无此特例，DAX 将无法访问您的 DynamoDB 表。  
例如：  

**Example**    
****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Principal": "*",
      "Action": "dynamodb:PutItem",
      "Resource": "arn:aws:dynamodb:us-east-1:123456789012:table/MusicCollection",
      "Condition": {
        "ArnNotEquals": {
          "aws:PrincipalArn": "arn:aws:iam::123456789012:role/DAXServiceRoleForDynamoDBAccess"
        },
        "IpAddress": {
          "aws:SourceIp": "0.0.0.0/0"
        }
      }
    }
  ]
}
```