

# 使用 IPAM 自动更新前缀列表
<a name="automate-prefix-list-updates"></a>

[托管前缀列表](https://docs.aws.amazon.com/vpc/latest/userguide/managed-prefix-lists.html)是一组 CIDR 块，您可以在安全组规则和路由表中引用这些块，而无需指定单个 IP 地址。例如，可以创建一个包含所有三个 CIDR 的前缀列表，并在单个规则中引用它，而不必为 `10.1.0.0/16`、`10.2.0.0/16` 和 `10.3.0.0/16` 创建单独的安全组规则。

这些变量分为两种类型：
+ **客户管理的前缀列表**：您定义和管理的 IP 范围
+ **AWS 管理的前缀列表**：AWS 服务的 IP 范围（例如 S3 或 CloudFront）

IPAM 功能通过使您的 CIDR 条目与网络更改保持同步，自动管理**客户管理的前缀列表**。

## 它解决的问题
<a name="the-problem-this-solves"></a>

如果没有自动化，网络团队在基础设施发生变化时需要花费大量时间手动更新前缀列表，并在不同环境和区域之间维护一致的前缀列表。

IPAM 通过允许您创建自动填充前缀列表的规则来解决此问题。您可以使用两种方法：引用 IPAM 池中的 CIDR，或者基于实际的 AWS 资源创建规则，例如“包含所有标记为 env=prod 的 VPC”、“包含 us-east-1 中的所有子网”或“包含账户 123456789 拥有的所有弹性 IP 地址”。当您添加或删除这些资源时，IPAM 会自动使用其 CIDR 更新前缀列表。

## 工作原理
<a name="how-it-works"></a>

您可以创建规则，告诉 IPAM 要将哪些 IP 地址包含在前缀列表中。例如，“包含所有标记为 env=prod 的 VPC CIDR”。当您添加或删除生产 VPC 时，IPAM 会自动更新前缀列表。

## 何时使用
<a name="when-to-use-it"></a>
+ **安全组**：创建一条规则“包含所有标记为 env=prod 的 VPC”，这样，当您添加新的生产 VPC 时，它们会自动被允许出现在您的安全组规则中
+ **多区域**：在多个区域部署相同的 IPAM 规则，无需手动复制 CIDR 条目即可保持前缀列表一致。
+ **动态基础设施**：创建/删除 VPC 或子网时，它们的 CIDR 会自动添加到前缀列表/从前缀列表中删除，无需手动更新。

## 先决条件
<a name="prerequisites"></a>

在开始之前，请确保您满足以下条件：
+ 启用了[高级](https://docs.aws.amazon.com/vpc/latest/ipam/mod-ipam-tier.html)层的 [IPAM](https://docs.aws.amazon.com/vpc/latest/ipam/create-ipam.html)
+ [客户管理的前缀列表](https://docs.aws.amazon.com/vpc/latest/userguide/managed-prefix-lists.html#create-prefix-list)（或在设置过程中创建一个）
+ IPAM 和 EC2 前缀列表操作的 [IAM 权限](https://docs.aws.amazon.com/vpc/latest/ipam/iam-ipam.html)

## 设置步骤
<a name="setup-steps"></a>

### 步骤 1：创建 IPAM 前缀列表解析器
<a name="step-1-create-ipam-prefix-list-resolver"></a>

通过创建 IPAM 前缀列表解析器来定义要在前缀列表中包含哪些 CIDR。

------
#### [ AWS Management Console ]

**创建 IPAM 前缀列表解析器**

1. 打开 [IAM 控制台](https://console.aws.amazon.com/ipam/)。

1. 在导航窗格中，选择**前缀列表解析器**。

1. 选择**创建前缀列表解析器**。

1. 在**步骤 1：配置解析器详细信息**中，选择以下项：
   + **IPAM**：IPAM 实例
   + **地址系列**：IPv4 或 IPv6
   + **名称标签 - 可选**：描述性名称
   + **描述 - 可选**：描述
   + **标签**：资源标签

1. 选择**下一步**。

1. 在**步骤 2：配置规则**中，选择**添加规则**。您最多可以添加 99 个规则。
**重要**  
您可以创建一个不含任何 CIDR 选择规则的前缀列表解析器，但它会生成空版本（不包含任何 CIDR），直到您添加规则为止。

1. 选择以下规则类型之一：
   + **静态 CIDR**：固定不变的 CIDR 列表（例如，跨区域复制的手动列表）
   + **IPAM 池 CIDR**：来自特定 IPAM 池的 CIDR（例如，来自 IPAM 生产池的所有 CIDR）

     如果选择此选项，请选择以下项：
     + **IPAM 范围**：选择 IPAM 范围以搜索资源
     + **条件：**
       + **属性**
         + **IPAM 池 ID**：选择包含资源的 IPAM 池
         + **CIDR**（如 10.24.34.0/23）
       + **运算**：等于/不等于
       + **值**：要匹配条件的值
   + **范围资源 CIDR**：来自 IPAM 范围内的 VPC、子网、EIP 等 AWS 资源的 CIDR

     如果选择此选项，请选择以下项：
     + **IPAM 范围**：选择 IPAM 范围以搜索资源
     + **资源类型**：选择资源（例如 VPC 或子网）。
     + **条件**：
       + **属性**：
         + 资源 ID：资源的唯一 ID（例如 vpc-1234567890abcdef0）
         + 资源所有者（例如 111122223333）
         + 资源区域（例如 us-east-1）
         + 资源标签（例如：键：name，值：dev-vpc-1）
         + CIDR（如 10.24.34.0/23）
       + **运算**：等于/不等于
       + **值**：要匹配条件的值

1. 选择**下一步**。

1. 选择**验证并创建**。

------
#### [ Command line ]

本节中的命令链接到《AWS CLI 命令参考》**。本文档提供了运行命令时可以使用的选项的详细说明。

使用下面的 AWS CLI 命令创建 IPAM 前缀列表解析器：
+ 使用 [create-ipam-prefix-list-resolver](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-ipam-prefix-list-resolver.html) 命令并保存步骤 2 返回的解析器 ID。

------

### 步骤 2：创建用于连接到前缀列表的解析器目标
<a name="step-2-create-resolver-target"></a>

通过创建解析器目标，将解析器链接到现有前缀列表。使用步骤 1 中返回的解析器 ID。

------
#### [ AWS Management Console ]

**创建 IPAM 前缀列表解析器目标**

1. 在 IPAM 控制台中，选择**前缀列表解析器**。

1. 选择在步骤 1 中创建的解析器。

1. 在解析器详细信息页面上，选择**目标**选项卡。

1. 选择**创建目标**。

1. 配置目标：
   + **区域**：选择存在现有托管前缀列表或要创建托管前缀列表的区域。
   + **前缀列表**：选择现有托管前缀列表或创建新的托管前缀列表

1. 在**所需版本**下，选择以下选项之一：
   + **始终跟踪最新版本**：如果希望前缀列表在基础设施变更时保持最新状态，而无需人工干预，请选择此选项进行自动更新。
   + **跟踪特定版本**：如果需要可预测、可控的更新，并且希望手动批准对前缀列表的更改，请选择此选项以获得稳定性。

1. 选择**创建目标**。

------
#### [ Command line ]

本节中的命令链接到《AWS CLI 命令参考》**。本文档提供了运行命令时可以使用的选项的详细说明。

使用下面的 AWS CLI 命令创建 IPAM 前缀列表解析器目标：
+ 使用步骤 1 中的解析器 ID 和现有的前缀列表 ID，执行 [create-ipam-prefix-list-resolver-target](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-ipam-prefix-list-resolver-target.html) 命令。

------

IPAM 现在会根据规则自动更新前缀列表。前缀列表将填充符合您条件的 CIDR。

### 步骤 3：监控版本和同步
<a name="step-3-monitor-versions-synchronization"></a>

创建前缀列表解析器和目标后，前缀列表解析器会根据规则生成 CIDR 版本，然后目标会将这些 CIDR 从解析器同步到特定托管前缀列表。每个版本都是在特定时刻与规则匹配的 CIDR 的快照。每次由于基础设施变更导致 CI​​DR 列表发生变化时，版本号都会递增。

**版本示例：**

**初始状态（版本 1）**

生产环境：
+ vpc-prod-web (10.1.0.0/16) - 标记为 env=prod
+ vpc-prod-db (10.2.0.0/16) - 标记为 env=prod

解析器规则：包含所有标记为 env=prod 的 VPC

**版本 1 CIDR：**10.1.0.0/16、10.2.0.0/16

**基础架构变更（版本 2）**

添加了新的 VPC：
+ vpc-prod-api (10.3.0.0/16) - 标记为 env=prod

IPAM 会自动检测更改并创建新版本。

**版本 2 CIDR：**10.1.0.0/16、10.2.0.0/16、10.3.0.0/16

本节介绍如何使用 AWS 控制台或 AWS CLI 监控版本创建以及如何使用 AWS CLI 监控同步成功情况。

此外，建议您针对故障指标设置 CloudWatch 警报，因为您可能需要重新评估和调整 CIDR 选择规则，以保持在版本和前缀列表大小的限制范围内。有关与 IPAM 前缀列表相关的 CloudWatch 指标的列表，请参阅 [IPAM 前缀列表解析器指标](cloudwatch-ipam-ip-address-usage.md#cloudwatch-ipam-prefix-list-resolver-metrics)。

------
#### [ AWS Management Console ]

**查看创建的版本并监控目标同步**

1. 在 IPAM 控制台中，选择**前缀列表解析器**。

1. 选择在步骤 1 中创建的解析器。

1. 在解析器详细信息页面上，选择**版本**选项卡。在这里，您将看到解析器创建的任何版本以及版本中的所有 CIDR。

1. 在解析器详细信息页面上，选择**监控**选项卡。在此视图中，[IPAM 前缀列表解析器指标](cloudwatch-ipam-ip-address-usage.md#cloudwatch-ipam-prefix-list-resolver-metrics)以图表形式呈现：
   + 前缀列表解析器版本创建成功
   + 前缀列表解析器版本创建失败

1. 在**监控**选项卡中，还可以通过选择**为前缀列表解析器版本创建创建警报**来配置 CloudWatch 警报。您将定向到 CloudWatch 控制台，其中已为指标部分配置了警报。有关如何完成告警创建的更多信息，请参阅《Amazon CloudWatch 用户指南》**中的[根据静态阈值创建 CloudWatch 告警](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ConsoleAlarms.html)。

------
#### [ Command line ]

本节中的命令链接到《AWS CLI 命令参考》**。本文档提供了运行命令时可以使用的选项的详细说明。

使用下面的 AWS CLI 命令监控版本和同步：

1. 使用 [get-ipam-prefix-list-resolver-version-entries](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-ipam-prefix-list-resolver-version-entries.html) 命令查看解析器创建的最新版本。

1. 使用 [describe-ipam-prefix-list-resolver-targets](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-ipam-prefix-list-resolver-targets.html) 命令监控解析器目标同步状态。

监视器命令显示：
+ state - 当前同步状态（create-complete、modify-complete 等）
+ lastSyncedVersion - 上次成功同步的版本
+ desiredVersion - 要同步到的目标版本
+ stateMessage - 同步失败时的错误详细信息

------

**重要**  
为了支持回滚工作流，IPAM 将为其每个目标保留前 10 个前缀列表解析器版本的副本；此外，如果超过此阈值的版本再有 7 天未被引用，IPAM 将删除这些版本。

### 步骤 4：（可选）启用和禁用 IPAM 前缀列表同步
<a name="step-4-optional-enable-disable-sync"></a>

如果已将托管前缀列表配置为 IPAM 前缀列表目标，并且您想要更改前缀列表而无需访问 IPAM 前缀列表解析器目标的权限，则可以[修改托管前缀列表](https://docs.aws.amazon.com/vpc/latest/userguide/work-with-cust-managed-prefix-lists.html#modify-managed-prefix-list)并禁用与 IPAM 前缀列表解析器的同步。禁用后，前缀列表 CIDR 不会自动更新，您可以对其进行更改。启用后，前缀列表 CIDR 将根据关联的解析器的 CIDR 选择规则自动更新。