开始通过 Amazon CLI 使用 IPAM - Amazon Virtual Private Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

开始通过 Amazon CLI 使用 IPAM

本教程将指导您完成使用单个 Amazon 账户在 Amazon CLI 中设置和使用 Amazon VPC IP 地址管理器(IPAM)的过程。到本教程结束时,您将已经创建 IPAM 和 IP 地址池层次结构,并将 CIDR 分配给了 VPC。

先决条件

在开始本教程之前,请确保您具有:

  • 有权创建和管理 IPAM 资源的 Amazon 账户。

  • 已安装 Amazon CLI 并配置了相应的凭证。有关安装 Amazon CLI 的信息,请参阅安装或更新最新版本的 Amazon CLI。有关配置 Amazon CLI 的信息,请参阅基本配置

  • 有关 IP 寻址和 CIDR 表示法的基础知识。

  • 有关 Amazon VPC 概念的基础知识。

  • 完成本教程大约需要 30 分钟。

创建 IPAM

第一步是根据运营区域创建 IPAM。您可以使用 IPAM 来计划、跟踪和监控 Amazon 工作负载的 IP 地址。

创建 IPAM,其运营区域为 us-east-1 和 us-west-2:

aws ec2 create-ipam \ --description "My IPAM" \ --operating-regions RegionName=us-east-1 RegionName=us-west-2

此命令会创建 IPAM 并使其能够管理指定区域中的 IP 地址。运营区域是允许 IPAM 在其中管理 IP 地址 CIDR 的 Amazon 区域。

验证 IPAM 是否已创建:

aws ec2 describe-ipams

记下输出中的 IPAM ID,您将在后续步骤中用到它。

等待 IPAM 创建完毕并可用(约 20 秒):

sleep 20

获取 IPAM 范围 ID

创建 IPAM 时,Amazon 将自动创建一个私有范围和一个公有范围。在本教程中,我们将使用私有范围。

检索 IPAM 详细信息并提取私有范围 ID:

aws ec2 describe-ipams --ipam-id ipam-0abcd1234

ipam-0abcd1234 替换为实际的 IPAM ID。

在输出中,找到 PrivateDefaultScopeId 字段中的私有范围 ID 并记下来。该条目看起来类似于 ipam-scope-0abcd1234

创建顶级 IPv4 池

现在,我们在私有范围中创建一个顶级池。该池将作为层次结构中所有其他池的父池。

创建顶级 IPv4 池:

aws ec2 create-ipam-pool \ --ipam-scope-id ipam-scope-0abcd1234 \ --address-family ipv4 \ --description "Top-level pool"

ipam-scope-0abcd1234 替换为实际的私有范围 ID。

等待池创建完毕并可用:

aws ec2 describe-ipam-pools --ipam-pool-ids ipam-pool-0abcd1234 --query 'IpamPools[0].State' --output text

ipam-pool-0abcd1234 替换为实际的顶级池 ID。应等待状态显示 create-complete 之后,再继续操作。

池可用后,向池预置 CIDR 块:

aws ec2 provision-ipam-pool-cidr \ --ipam-pool-id ipam-pool-0abcd1234 \ --cidr 10.0.0.0/8

等待 CIDR 预置完毕:

aws ec2 get-ipam-pool-cidrs --ipam-pool-id ipam-pool-0abcd1234 --query "IpamPoolCidrs[?Cidr=='10.0.0.0/8'].State" --output text

应等待状态显示 provisioned 之后,再继续操作。

创建区域 IPv4 池

接下来,在顶级池中创建区域池。该池特定于某个特别的 Amazon 区域。

创建区域 IPv4 池:

aws ec2 create-ipam-pool \ --ipam-scope-id ipam-scope-0abcd1234 \ --source-ipam-pool-id ipam-pool-0abcd1234 \ --locale us-east-1 \ --address-family ipv4 \ --description "Regional pool in us-east-1"

ipam-scope-0abcd1234 替换为实际的私有范围 ID,将 ipam-pool-0abcd1234 替换为顶级池 ID。

等待区域池创建完毕并可用:

aws ec2 describe-ipam-pools --ipam-pool-ids ipam-pool-1abcd1234 --query 'IpamPools[0].State' --output text

ipam-pool-1abcd1234 替换为实际的区域池 ID。应等待状态显示 create-complete 之后,再继续操作。

池可用后,向池预置 CIDR 块:

aws ec2 provision-ipam-pool-cidr \ --ipam-pool-id ipam-pool-1abcd1234 \ --cidr 10.0.0.0/16

等待 CIDR 预置完毕:

aws ec2 get-ipam-pool-cidrs --ipam-pool-id ipam-pool-1abcd1234 --query "IpamPoolCidrs[?Cidr=='10.0.0.0/16'].State" --output text

应等待状态显示 provisioned 之后,再继续操作。

创建开发 IPv4 池

现在,在区域池中创建开发池。该池将用于开发环境。

创建开发 IPv4 池:

aws ec2 create-ipam-pool \ --ipam-scope-id ipam-scope-0abcd1234 \ --source-ipam-pool-id ipam-pool-1abcd1234 \ --locale us-east-1 \ --address-family ipv4 \ --description "Development pool"

ipam-scope-0abcd1234 替换为实际的私有范围 ID,将 ipam-pool-1abcd1234 替换为区域池 ID。

注意:务必添加 --locale 参数,以便与父池的区域一致。

等待开发池创建完毕并可用:

aws ec2 describe-ipam-pools --ipam-pool-ids ipam-pool-2abcd1234 --query 'IpamPools[0].State' --output text

ipam-pool-2abcd1234 替换为实际的开发池 ID。应等待状态显示 create-complete 之后,再继续操作。

池可用后,向池预置 CIDR 块:

aws ec2 provision-ipam-pool-cidr \ --ipam-pool-id ipam-pool-2abcd1234 \ --cidr 10.0.0.0/24

等待 CIDR 预置完毕:

aws ec2 get-ipam-pool-cidrs --ipam-pool-id ipam-pool-2abcd1234 --query "IpamPoolCidrs[?Cidr=='10.0.0.0/24'].State" --output text

应等待状态显示 provisioned 之后,再继续操作。

创建使用 IPAM 池 CIDR 的 VPC

最后,创建使用 IPAM 池中 CIDR 的 VPC。此处演示了如何使用 IPAM 为 Amazon 资源分配 IP 地址空间。

创建使用 IPAM 池 CIDR 的 VPC:

aws ec2 create-vpc \ --ipv4-ipam-pool-id ipam-pool-2abcd1234 \ --ipv4-netmask-length 26 \ --tag-specifications 'ResourceType=vpc,Tags=[{Key=Name,Value=IPAM-VPC}]'

ipam-pool-2abcd1234 替换为实际的开发池 ID。

--ipv4-netmask-length 26 参数指定了您希望从池中分配 /26 CIDR 块(64 个 IP 地址)。选择此网络掩码长度是为了确保它小于池的 CIDR 块(/24)。

验证 VPC 是否已创建:

aws ec2 describe-vpcs --filters "Name=tag:Name,Values=IPAM-VPC"

验证 IPAM 池的分配情况

检查 CIDR 是否已从 IPAM 池中分配:

aws ec2 get-ipam-pool-allocations \ --ipam-pool-id ipam-pool-2abcd1234

ipam-pool-2abcd1234 替换为实际的开发池 ID。

此命令显示了来自指定 IPAM 池的所有分配,包括您刚刚创建的 VPC。

故障排除

以下是在使用 IPAM 时可能会遇到的一些常见问题:

  • 权限错误:请确保 IAM 用户或角色具有创建和管理 IPAM 资源所需的权限。您可能需要 ec2:CreateIpamec2:CreateIpamPool 和其他相关权限。

  • 超出资源限制:默认情况下,只能为每个账户创建一个 IPAM。如果已经有一个 IPAM,则需要先将其删除,然后再创建新的 IPAM,或者使用现有的 IPAM。

  • CIDR 分配失败:向池预置 CIDR 时,请确保要预置的 CIDR 不会与其他池中的现有分配重叠。

  • API 请求超时:如果您遇到“RequestExpired”错误,这可能是由于网络延迟或时间同步问题所致。请尝试再次运行命令。

  • “状态错误”报错:如果您收到“IncorrectState”错误,这可能是因为您尝试对其执行操作的资源未处于正确状态。请等待资源创建或预置完毕再继续。

  • 分配大小错误:如果您收到有关分配大小的“InvalidParameterValue”错误,请确保您请求的网络掩码长度适合池大小。例如,您不能从 /24 池中分配 /25 CIDR。

  • 依赖项冲突:清理资源时,您可能会遇到“DependencyViolation”错误。这是因为资源之间存在依赖关系。在删除池之前,请确保按照与创建时相反的顺序删除资源,并取消预置 CIDR。

清理资源

完成本教程后,应清除您创建的资源,以免产生不必要的费用。

  1. 删除 VPC:

    aws ec2 delete-vpc --vpc-id vpc-0abcd1234
  2. 从开发池中取消预置 CIDR:

    aws ec2 deprovision-ipam-pool-cidr --ipam-pool-id ipam-pool-2abcd1234 --cidr 10.0.0.0/24
  3. 删除开发池:

    aws ec2 delete-ipam-pool --ipam-pool-id ipam-pool-2abcd1234
  4. 从区域池中取消预置 CIDR:

    aws ec2 deprovision-ipam-pool-cidr --ipam-pool-id ipam-pool-1abcd1234 --cidr 10.0.0.0/16
  5. 删除区域池:

    aws ec2 delete-ipam-pool --ipam-pool-id ipam-pool-1abcd1234
  6. 从顶级池中取消预置 CIDR:

    aws ec2 deprovision-ipam-pool-cidr --ipam-pool-id ipam-pool-0abcd1234 --cidr 10.0.0.0/8
  7. 删除顶级池:

    aws ec2 delete-ipam-pool --ipam-pool-id ipam-pool-0abcd1234
  8. 删除 IPAM:

    aws ec2 delete-ipam --ipam-id ipam-0abcd1234

将所有 ID 替换为实际的资源 ID。

注意

前后两个操作的间隔时间应稍微延长一些,以确保资源完全删除,然后再继续下一步操作。如果您遇到依赖项冲突的问题,请等待几秒,然后重试。

后续步骤

现在,您已经学会了如何通过 Amazon CLI 创建和使用 IPAM,您可能需要探索更多高级功能: