

# 从 IPAM 池中分配连续弹性 IP 地址
<a name="tutorials-eip-pool"></a>

IPAM 允许您向 IPAM 池预调配 Amazon 拥有的公有 IPv4 块，并将这些池中的[连续弹性 IP 地址](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html)分配给 AWS 资源。

连续分配的弹性 IP 地址是按顺序分配的公有 IPv4 地址。例如，如果 Amazon 为您提供了一个公有 IPv4 CIDR 块 `192.0.2.0/30`，而您从该 CIDR 块中分配了四个可用的公有 IPv4 地址，则四个连续弹性 IP 地址的示例是 `192.0.2.0`、`192.0.2.1`、`192.0.2.2` 和 `192.0.2.3`。

连续分配的弹性 IP 地址使您能够通过以下方式来简化安全和联网规则：
+ **安全管理**：使用连续的 IPv4 地址可以降低防火墙管理开销。您可以使用单个规则添加整个前缀，并在扩展时关联来自同一前缀的 IP，从而节省时间和精力。
+ **企业访问**：您可以使用整个 CIDR 块而不是一长串单独的公有 IPv4 地址，以简化与客户端共享的地址空间。这样就无需在应用程序在 AWS 上扩展时不断沟通 IP 变更。
+ **简化的 IP 管理**：使用连续的 IPv4 地址可以简化中央网络团队的公有 IP 管理，因为它减少了跟踪单个公有 IP 的需求，而是使他们能够专注于有限数量的 IP 前缀。

在本教程中，您将完成从 IPAM 池中分配连续弹性 IP 地址所需的步骤。您将使用 Amazon 提供的连续公有 IPv4 CIDR 块创建 IPAM 池，从池中分配弹性 IP 地址，并了解如何监控 IPAM 池的分配。

**注意**  
预调配 Amazon 拥有的公有 IPv4 CIDR 块会产生相关费用。有关更多信息，请参阅 [Amazon VPC 定价页面](https://aws.amazon.com//vpc/pricing/)上的 **Amazon 提供的连续 IPv4 块**选项卡。
本教程假设您想要[将 IPAM 用于单个账户](enable-single-user-ipam.md)以创建 IPAM。如果您想跨账户共享 Amazon 拥有的连续公有 IPv4 区，请先 [将 IPAM 与 AWS Organization 中的账户集成](enable-integ-ipam.md)，然后 [使用 AWS RAM 共享 IPAM 池](share-pool-ipam.md)。如果您与 AWS Organizations 集成，则可以选择创建[服务控制策略](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)，以防止取消预调配分配给池的连续 IPv4 块。
您无法将从 IPAM 池中分配的连续弹性 IP 地址[转移](https://docs.aws.amazon.com/vpc/latest/userguide/WorkWithEIPs.html#transfer-EIPs-intro)到其他 AWS 账户。相反，通过将 IPAM 与 AWS Organizations 集成，IPAM 允许跨 AWS 账户共享 IPAM 池（如上所述）。
您可以预调配的 Amazon 拥有的公有 IPv4 CIDR 块的数量及其大小有限制。有关更多信息，请参阅 [IPAM 的配额](quotas-ipam.md)。

**Topics**
+ [步骤 1：创建 IPAM](#tutorials-eip-pool-1)
+ [步骤 2：创建 IPAM 池并预置 CIDR](#tutorials-eip-pool-2)
+ [步骤 3：从池中分配弹性 IP 地址](#tutorials-eip-pool-3)
+ [步骤 4：将弹性 IP 地址与 EC2 实例相关联](#tutorials-eip-pool-4)
+ [步骤 5：跟踪和监控池使用情况](#track-monitor-eips-ipam)
+ [清理](#tutorials-eip-pool-cleanup)

## 步骤 1：创建 IPAM
<a name="tutorials-eip-pool-1"></a>

完成本部分中的步骤创建 IPAM。

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

**创建 IPAM**

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

1. 在 AWS 管理控制台中，选择您要在其中创建 IPAM 的 AWS 区域。在主操作区域创建 IPAM。

1. 在服务主页上，选择**创建 IPAM**。

1. 选择 **Allow Amazon VPC IP Address Manager to replicate data from source account(s) into the IPAM delegate account**（允许 Amazon VPC IP 地址管理器将数据从源账户复制到 IPAM 委托账户中）。如果未选中此选项，则无法创建 IPAM。

1. 选择 **IPAM 等级**。有关每种套餐中提供的功能以及与套餐相关的费用的更多信息，请参阅 [Amazon VPC 定价页面](https://aws.amazon.com//vpc/pricing/)中的 IPAM 选项卡。

1. 在**运营区域**下，选择此 IPAM 可以在其中管理和发现资源的 AWS 区域。默认情况下，您要在其中创建 IPAM 的AWS区域被选为运营区域之一。例如，如果您在 AWS 区域 `us-east-1` 中创建此 IPAM，但是您希望稍后创建区域 IPAM 池，以便在 `us-west-2` 中向 VPC 提供 CIDR，请在此选择 `us-west-2`。如果忘记了运营区域，可以稍后返回并编辑 IPAM 设置。
**注意**  
如果您在免费等级中创建 IPAM，则可以为 IPAM 选择多个运营区域，但唯一可在运营区域中使用的 IPAM 功能是[公共 IP 洞察功能](view-public-ip-insights.md)。您无法跨 IPAM 运营区域中使用免费等级中的其他功能，例如 BYOIP。你只能在 IPAM 的主区域中只能使用这些功能。要跨运营区域使用所有 IPAM 功能，[请在高级等级中创建 IPAM](mod-ipam-tier.md)。

1. 选择**创建 IPAM**。

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

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

使用 [create-ipam](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-ipam.html) 命令创建 IPAM：

```
aws ec2 create-ipam --region us-east-1
```

示例响应：

```
{
    "Ipam": {
        "OwnerId": "320805250157",
        "IpamId": "ipam-0755477df834ea06b",
        "IpamArn": "arn:aws:ec2::320805250157:ipam/ipam-0755477df834ea06b",
        "IpamRegion": "us-east-1",
        "PublicDefaultScopeId": "ipam-scope-01bc7290e4a9202f9",
        "PrivateDefaultScopeId": "ipam-scope-0a50983b97a7a583a",
        "ScopeCount": 2,
        "OperatingRegions": [
            {
                "RegionName": "us-east-1"
            }
        ],
        "State": "create-in-progress",
        "Tags": [],
        "DefaultResourceDiscoveryId": "ipam-res-disco-02cc5b34cc3f04f09",
        "DefaultResourceDiscoveryAssociationId": "ipam-res-disco-assoc-06b3a4dccfc81f7c1",
        "ResourceDiscoveryAssociationCount": 1,
        "Tier": "advanced"
    }
}
```

在下一步中，您将需要 PublicDefaultScopeId。有关范围的更多信息，请参阅 [IPAM 的工作原理](how-it-works-ipam.md)。

------

## 步骤 2：创建 IPAM 池并预置 CIDR
<a name="tutorials-eip-pool-2"></a>

完成本部分中的步骤创建 IPAM 池，您将从中分配弹性 IP 地址。

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

**如需创建池**

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

1. 在导航窗格中，选择**池**。

1. 选择公有范围。有关范围的更多信息，请参阅 [IPAM 的工作原理](how-it-works-ipam.md)。

1. 选择**创建池**。

1. （可选）添加池的**名称标签**和池的**描述**。

1. 在**源**下，选择 **IPAM 范围**。

1. 在**地址系列**下，选择 **IPv4**。

1. 在**资源规划**下，保持选中**在范围内规划 IP 空间**。

1. 在 **Locale**（区域设置）下，选择池的区域设置。区域设置是您希望此 IPAM 池可用于分配的 AWS 区域。可用的选项来自您在创建 IPAM 时选择的运营区域。

1. 在**服务**下，选择 **EC2 (EIP/VPC)**。您选择的服务将决定传播 CIDR 的 AWS 服务。目前，唯一的选择是 **EC2（EIP/VPC）**，这意味着从此池中分配的 CIDR 将在 Amazon EC2 服务（适用于弹性 IP 地址）中传播。

1. 在**公有 IP 来源**下，选择 **Amazon 拥有**。

1. 在**要预调配的 CIDR** 下，选择**添加 Amazon 拥有的公有 CIDR**。选择介于 `/29`（8 个 IP 地址）和 `/30`（4 个 IP 地址）之间的**网络掩码**长度。默认情况下，您最多可以添加 2 个 CIDR。有关提高 Amazon 提供的连续公有 IPv4 CIDR 限制的信息，请参阅 [IPAM 的配额](quotas-ipam.md)。

1. 将**配置此池的分配规则设置**保持未选中状态。

1. （可选）为池选择 **Tags**（标签）。

1. 选择**创建池**。

在继续之前，请确保已预置此 CIDR。您可以在池详细信息页面的 **CIDR** 选项卡中查看资源调配状态。

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

**如需创建池**

1. 使用 [create-ipam-pool](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/create-ipam-pool.html) 命令创建 IPAM 池。区域设置是您希望此 IPAM 池可用于分配的 AWS 区域。可用的选项来自您在创建 IPAM 时选择的运营区域。

   ```
   aws ec2 create-ipam-pool --region us-east-1 --ipam-scope-id ipam-scope-01bc7290e4a9202f9 --address-family ipv4 --locale us-east-1 --aws-service ec2 --public-ip-source amazon
   ```

   带有 `create-in-progress` 状态的示例响应：

   ```
   {                                                                                               
       "IpamPool": {                                                                           
           "OwnerId": "320805250157",                                                          
           "IpamPoolId": "ipam-pool-07ccc86aa41bef7ce",                                        
           "IpamPoolArn": "arn:aws:ec2::320805250157:ipam-pool/ipam-pool-07ccc86aa41bef7ce",   
           "IpamScopeArn": "arn:aws:ec2::320805250157:ipam-scope/ipam-scope-01bc7290e4a9202f9",
           "IpamScopeType": "public",                                                          
           "IpamArn": "arn:aws:ec2::320805250157:ipam/ipam-0755477df834ea06b",                 
           "IpamRegion": "us-east-1",                                                          
           "Locale": "us-east-1",                                                              
           "PoolDepth": 1,                                                                     
           "State": "create-in-progress",                                                      
           "AutoImport": false,                                                                
           "AddressFamily": "ipv4",                                                            
           "Tags": [],                                                                         
           "AwsService": "ec2",                                                                
           "PublicIpSource": "amazon"                                                          
       }                                                                                       
   }
   ```

1. 使用 [describe-ipam-pools](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-ipam-pools.html) 命令检查池是否已成功创建。

   ```
   aws ec2 describe-ipam-pools --region us-east-1 --ipam-pool-ids ipam-pool-07ccc86aa41bef7ce
   ```

   带有 `create-complete` 状态的示例响应：

   ```
   {                                                                                               
       "IpamPools": [
           {
               "OwnerId": "320805250157",
               "IpamPoolId": "ipam-pool-07ccc86aa41bef7ce",
               "IpamPoolArn": "arn:aws:ec2::320805250157:ipam-pool/ipam-pool-07ccc86aa41bef7ce",
               "IpamScopeArn": "arn:aws:ec2::320805250157:ipam-scope/ipam-scope-01bc7290e4a9202f9",
               "IpamScopeType": "public",
               "IpamArn": "arn:aws:ec2::320805250157:ipam/ipam-0755477df834ea06b",
               "IpamRegion": "us-east-1",
               "Locale": "us-east-1",
               "PoolDepth": 1,
               "State": "create-complete",
               "AutoImport": false,
               "AddressFamily": "ipv4",
               "Tags": [],
               "AwsService": "ec2",
               "PublicIpSource": "amazon"
           }
       ]
   }
   ```

1. 使用 [provision-ipam-pool-cidr](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/provision-ipam-pool-cidr.html) 命令向池预置 CIDR。选择介于 `/29`（8 个 IP 地址）和 `/30`（4 个 IP 地址）之间的 `--netmask-length`。默认情况下，您最多可以添加 2 个 CIDR。有关提高 Amazon 提供的连续公有 IPv4 CIDR 限制的信息，请参阅 [IPAM 的配额](quotas-ipam.md)。

   ```
   aws ec2 provision-ipam-pool-cidr --region us-east-1 --ipam-pool-id ipam-pool-07ccc86aa41bef7ce --netmask-length 29
   ```

   带有 `pending-provision` 状态的示例响应：

   ```
   {                                                                                               
       "IpamPoolCidr": {
           "State": "pending-provision",
           "IpamPoolCidrId": "ipam-pool-cidr-01856e43994df4913b7bc6aac47adf983",
           "NetmaskLength": 29
       }
   }
   ```

1. 在继续之前，请确保已预置此 CIDR。您可以使用 [get-ipam-pool-cidrs](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/get-ipam-pool-cidrs.html) 命令查看预置状态。

   ```
   aws ec2 get-ipam-pool-cidrs --region us-east-1 --ipam-pool-id ipam-pool-07ccc86aa41bef7ce
   ```

   带有 `provisioned` 状态的示例响应：

   ```
   {                                                                                               
       "IpamPoolCidrs": [
           {
               "Cidr": "18.97.0.40/29",
               "State": "provisioned",
               "IpamPoolCidrId": "ipam-pool-cidr-01856e43994df4913b7bc6aac47adf983",
               "NetmaskLength": 29
           }
       ]
   }
   ```

------

## 步骤 3：从池中分配弹性 IP 地址
<a name="tutorials-eip-pool-3"></a>

完成本部分中的步骤，以从池中分配弹性 IP 地址。

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

按照《Amazon EC2 用户指南》**中的[分配弹性 IP 地址](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-eips.html#using-instance-addressing-eips-allocating)中的步骤分配地址，但请注意以下几点：
+ 确保您的 EC2 控制台所在的 AWS 区域与您在步骤 2 中创建池时选择的区域设置选项相匹配。
+ 选择地址池时，选择**使用 IPv4 IPAM 池分配**选项，然后选择您在步骤 1 中创建的池。

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

使用 [allocate-address](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/allocate-address.html) 命令从池中分配一个地址。您使用的 `--region` 必须与您在步骤 2 中创建池时选择的 `-locale` 选项相匹配。包括您在 `--ipam-pool-id` 中在步骤 2 中创建的 IPAM 池的 ID。

```
aws ec2 allocate-address --region us-east-1 --ipam-pool-id ipam-pool-07ccc86aa41bef7ce
```

示例响应：

```
{                                                    
    "PublicIp": "18.97.0.41",                        
    "AllocationId": "eipalloc-056cdd6019c0f4b46",    
    "PublicIpv4Pool": "ipam-pool-07ccc86aa41bef7ce", 
    "NetworkBorderGroup": "us-east-1",               
    "Domain": "vpc"                                  
}
```

或者，您也可以使用 `--address` 选项在 IPAM 池中选择特定的 `/32`。

```
aws ec2 allocate-address --region us-east-1 --ipam-pool-id ipam-pool-07ccc86aa41bef7ce --address 18.97.0.41
```

示例响应：

```
{                                                    
    "PublicIp": "18.97.0.41",                        
    "AllocationId": "eipalloc-056cdd6019c0f4b46",    
    "PublicIpv4Pool": "ipam-pool-07ccc86aa41bef7ce", 
    "NetworkBorderGroup": "us-east-1",               
    "Domain": "vpc"                                  
}
```

有关更多信息，请参阅《Amazon EC2 用户指南》**中的[分配弹性 IP 地址](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-eips.html#using-instance-addressing-eips-allocating)。

------

## 步骤 4：将弹性 IP 地址与 EC2 实例相关联
<a name="tutorials-eip-pool-4"></a>

完成本部分中的步骤将弹性 IP 地址与 EC2 实例相关联。

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

按照《Amazon EC2 用户指南》**中的[关联弹性 IP 地址](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-eips.html#using-instance-addressing-eips-associating)中的步骤从 IPAM 池中分配弹性 IP 地址，但请注意以下几点：使用 AWS 管理控制台选项时，您关联弹性 IP 地址所在的 AWS 区域必须与您在步骤 2 中创建池时选择的区域设置选项相匹配。

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

使用 [associate-address](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/allocate-address.html) 命令将弹性 IP 地址与实例相关联。您关联弹性 IP 地址所在的 `--region` 区域必须与您在步骤 2 中创建池时选择的 `--locale` 选项匹配。

```
aws ec2 associate-address --region us-east-1 --instance-id i-07459a6fca5b35823 --public-ip 18.97.0.41
```

示例响应：

```
{                                                
    "AssociationId": "eipassoc-06aa85073d3936e0e"
}
```

有关更多信息，请参阅《Amazon EC2 用户指南》**中的[将弹性 IP 地址与实例或网络接口相关联](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/elastic-ip-addresses-eip.html#using-instance-addressing-eips-associating)。

------

## 步骤 5：跟踪和监控池使用情况
<a name="track-monitor-eips-ipam"></a>

从 IPAM 池中分配弹性 IP 地址之后，您可以跟踪和监控 IPAM 池的分配：

------
#### [ AWS Management Console ]
+ 在 IPAM 控制台的**分配**选项卡中查看 IPAM 池详细信息。从 IPAM 池分配的任何弹性 IP 地址的**资源类型**均为 **EIP**。
+ 使用[公共 IP 洞察功能](view-public-ip-insights.md)：
  + 在**公有 IP 类型**下，按 **Amazon 拥有的 EIP** 进行筛选。这显示了分配给 Amazon 拥有的弹性 IP 地址的公有 IPv4 地址的总数。如果您按此衡量标准进行筛选并滚动到页面底部的**公有 IP 地址**，则将看到您分配的弹性 IP 地址。
  + 在 **EIP 使用情况**下，按**Amazon 拥有的关联的 EIP**或 **Amazon 拥有的未关联的 EIP** 进行筛选。这将显示您在 AWS 账户中分配且将其与 EC2 实例、网络接口或 AWS 资源关联或未关联的弹性 IP 地址总数。如果您按此衡量标准进行筛选并滚动到页面底部的**公有 IP 地址**，您将会看到有关已筛选资源的详细信息。
  + 在 **Amazon 拥有的 IPv4 连续 IP 使用情况**下，监控一段时间内连续的公有 IPv4 地址使用情况以及 Amazon 拥有的相关的 IPv4 IPAM 池。
+ 使用 Amazon CloudWatch 跟踪和监控与 Amazon 提供的已预调配到 IPAM 池的连续公有 IPv4 区块相关的指标。有关特定于连续 IPv4 区块的可用指标，请参阅 [IPAM 指标](cloudwatch-ipam-ip-address-usage.md) 下方的**公有 IP 指标**。除查看指标外，您还可以在 Amazon CloudWatch 中创建警报，以便在达到阈值时通知您。使用 Amazon CloudWatch 创建告警和设置通知不在本教程的范围内。有关更多信息，请参阅 *Amazon CloudWatch 用户指南*中的[使用 Amazon CloudWatch 警报](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)。

------
#### [ Command line ]
+ 使用 [get-ipam-pool-allocations](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-ipam-pool-allocations.html) 命令查看 IPAM 池分配。从 IPAM 池分配的任何弹性 IP 地址的**资源类型**均为 **eip**。

  ```
  aws ec2 get-ipam-pool-allocations --region us-east-1 --ipam-pool-id ipam-pool-07ccc86aa41bef7ce
  ```

  示例响应：

  ```
  {
       "IpamPoolAllocations": [
          {
              "Cidr": "18.97.0.40/32",
              "IpamPoolAllocationId": "ipam-pool-alloc-0bd07df786e8148aba2763e2b6c1c44bd",
              "ResourceId": "eipalloc-0c9decaa541d89aa9",
              "ResourceType": "eip",
              "ResourceRegion": "us-east-1",
              "ResourceOwner": "320805250157"
          }
      ]
  }
  ```
+ 使用 Amazon CloudWatch 跟踪和监控与 Amazon 提供的已预调配到 IPAM 池的连续公有 IPv4 区块相关的指标。有关特定于连续 IPv4 区块的可用指标，请参阅 [IPAM 指标](cloudwatch-ipam-ip-address-usage.md) 下方的**公有 IP 指标**。除查看指标外，您还可以在 Amazon CloudWatch 中创建警报，以便在达到阈值时通知您。使用 Amazon CloudWatch 创建告警和设置通知不在本教程的范围内。有关更多信息，请参阅 *Amazon CloudWatch 用户指南*中的[使用 Amazon CloudWatch 警报](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)。

------

本教程现已完成。您已经使用 Amazon 提供的连续公有 IPv4 CIDR 块创建 IPAM 池，从池中分配弹性 IP 地址，并了解了如何监控 IPAM 池的分配。继续下一部分以删除您在本教程中创建的资源。

## 清理
<a name="tutorials-eip-pool-cleanup"></a>

按照本部分中的步骤清除您在本教程中创建的资源。

**步骤 1：解除弹性 IP 地址的关联**

完成《Amazon EC2 用户指南》**中的[解除弹性 IP 地址的关联](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/working-with-eips.html#using-instance-addressing-eips-associating-different)的步骤，以解除弹性 IP 地址的关联。

**步骤 2：释放弹性 IP 地址**

完成《Amazon EC2 用户指南》**中的[释放弹性 IP 地址](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing-eips-releasing.html)的步骤，从公有 IPv4 池释放弹性 IP 地址。

**步骤 3：从 IPAM 池中取消预调配 CIDR**

完成 [从池中取消预置 CIDR](depro-pool-cidr-ipam.md) 中的步骤，从 IPAM 池中取消预调配 Amazon 拥有的公有 CIDR。此步骤是删除池所必需的。在此步骤完成之前，您需要为 Amazon 提供的连续 IPv4 块付费。

**步骤 4：删除 IPAM 池**

完成 [删除池](delete-pool-ipam.md) 中的步骤以删除 IPAM 池。

**步骤 5：删除 IPAM**

完成 [删除 IPAM](delete-ipam.md) 中的步骤以删除 IPAM。

本教程清理已完成。