仅使用 AWS CLI 自带公有 IPv4 CIDR 到 IPAM 中
按照以下步骤将 IPv4 CIDR 带入 IPAM 中,然后仅使用 AWS CLI 使用 CIDR 分配弹性 IP 地址 (EIP)。
重要
本教程假定您已完成以下部分中的步骤:
-
本教程的每个步骤都必须由以下三个 AWS Organizations 账户之一完成:
管理账户。
将 IPAM 与 AWS Organization 中的账户集成 中配置为 IPAM 管理员的成员账户。在本教程中,此账户将被称为 IPAM 账户。
将从 IPAM 池中分配 CIDR 的企业中的成员账户。在本教程中,此账户将被称为成员账户。
内容
第 1 步:创建 AWS CLI 命名配置文件和 IAM 角色
要以单个 AWS 用户的身份完成本教程,您可以使用 AWS CLI 命名配置文件在 IAM 角色之间切换。命名配置文件 是您在将 --profile
选项与 AWS CLI 结合使用时引用的设置和凭证集合。有关如何为 AWS 账户创建 IAM 角色和命名配置文件的更多信息,请参阅《AWS Identity and Access Management 用户指南》中的 在 AWS CLI 中使用 IAM 角色。
为您将在本教程中使用的三个 AWS 账户分别创建一个角色和一个命名配置文件:
为 AWS Organizations 管理账户创建名为
management-account
的配置文件。为配置为 IPAM 管理员的 AWS Organizations 成员账户创建名为
ipam-account
的配置文件。为将从 IPAM 池中分配 CIDR 的企业中的 AWS Organizations 成员账户创建名为
member-account
的配置文件。
创建 IAM 角色和命名配置文件后,请返回本页面并转至下一步。在本教程的其余部分中,您将注意到示例 AWS CLI 命令会将 --profile
选项与其中一个命名配置文件一起使用,以指示哪个账户必须运行该命令。
步骤 2:创建 IPAM
此为可选步骤。如果您已在创建了 us-east-1
和 us-west-2
的运营区域的情况下创建了 IPAM,您可以跳过此步骤。创建 IPAM 并指定 us-east-1
和 us-west-2
的运营区域。您必须选择一个运营区域,以便在创建 IPAM 池时可以使用区域设置选项。IPAM 与 BYOIP 集成要求在将用于 BYOIP CIDR 的任何一个池上设置区域设置。
此步骤必须由 IPAM 账户完成。
运行以下命令:
aws ec2 create-ipam --description
my-ipam
--regionus-east-1
--operating-regionsRegionName=us-west-2
--profileipam-account
在输出中,您将看到您创建的 IPAM。记下 PublicDefaultScopeId
值。在下一步中,您将需要使用公有范围 ID。您使用公有范围是因为 BYOIP CIDR 是公有 IP 地址,这就是公有范围的用途。
{
"Ipam": {
"OwnerId": "123456789012",
"IpamId": "ipam-090e48e75758de279",
"IpamArn": "arn:aws:ec2::123456789012:ipam/ipam-090e48e75758de279",
"PublicDefaultScopeId": "ipam-scope-0087d83896280b594",
"PrivateDefaultScopeId": "ipam-scope-08b70b04fbd524f8d",
"ScopeCount": 2,
"Description": "my-ipam",
"OperatingRegions": [
{
"RegionName": "us-east-1"
},
{
"RegionName": "us-west-2"
}
],
"Tags": []
}
}
步骤 3:创建顶级 IPAM 池
完成本部分中的步骤创建顶级 IPAM 池。
此步骤必须由 IPAM 账户完成。
使用 AWS CLI 为您的所有 AWS 资源创建 IPv4 地址池
-
运行以下命令以创建 IPAM 池。请使用您在上一步中创建的 IPAM 的公有范围的 ID。
此步骤必须由 IPAM 账户完成。
aws ec2 create-ipam-pool --region
us-east-1
--ipam-scope-idipam-scope-0087d83896280b594
--description"top-level-IPv4-pool"
--address-familyipv4
--profileipam-account
在输出中,您将会看到
create-in-progress
,这表明池的创建正在进行中。{ "IpamPool": { "OwnerId": "123456789012", "IpamPoolId": "ipam-pool-0a03d430ca3f5c035", "IpamPoolArn": "arn:aws:ec2::123456789012:ipam-pool/ipam-pool-0a03d430ca3f5c035", "IpamScopeArn": "arn:aws:ec2::123456789012:ipam-scope/ipam-scope-0087d83896280b594", "IpamScopeType": "public", "IpamArn": "arn:aws:ec2::123456789012:ipam/ipam-090e48e75758de279", "Locale": "None", "PoolDepth": 1, "State": "create-in-progress", "Description": "top-level-pool", "AutoImport": false, "AddressFamily": "ipv4", "Tags": [] } }
-
运行以下命令,直到您在输出中看到
create-complete
的状态。aws ec2 describe-ipam-pools --region
us-east-1
--profileipam-account
下面的示例输出显示池的状态。
{ "IpamPools": [ { "OwnerId": "123456789012", "IpamPoolId": "ipam-pool-0a03d430ca3f5c035", "IpamPoolArn": "arn:aws:ec2::123456789012:ipam-pool/ipam-pool-0a03d430ca3f5c035", "IpamScopeArn": "arn:aws:ec2::123456789012:ipam-scope/ipam-scope-0087d83896280b594", "IpamScopeType": "public", "IpamArn": "arn:aws:ec2::123456789012:ipam/ipam-090e48e75758de279", "Locale": "None", "PoolDepth": 1, "State": "create-complete", "Description": "top-level-IPV4-pool", "AutoImport": false, "AddressFamily": "ipv4", "Tags": [] } ] }
步骤 4:向顶级池预置 CIDR
向顶级池预置 CIDR 块。请注意,将 IPv4 CIDR 预置到顶级池中的资源池时,您可以预置的最低 IPv4 CIDR 为 /24
;不允许使用更具体的 CIDR(例如 /25
)。
注意
-
如果使用 X.509 证书验证域控制权,则必须包含 CIDR 和 BYOIP 消息以及在该步骤中创建的证书签名,以便我们验证您是否控制了公共空间。
-
如果使用 DNS TXT 记录验证域控制权,则必须包含 CIDR 和 IPAM 消息以及在该步骤中创建的验证令牌,以便我们验证您是否控制了公共空间。
在向顶级池预置 BYOIP CIDR 时,您只需要验证域控制权。对于顶级池中的区域池,您可以省略域所有权验证选项。
此步骤必须由 IPAM 账户完成。
重要
在向顶级池预置 BYOIP CIDR 时,您只需要验证域控制权。对于顶级池中的区域池,您可以省略域控制权选项。一旦您将自己的 BYOIP 登录到 IPAM,在跨区域和账户划分 BYOIP 时,您无需执行所有权验证。
使用 AWS CLI 向池预置 CIDR 块
-
要为 CIDR 预置证书信息,请使用以下示例命令。除了根据需要替换示例中的值外,务必还要将
Message
和Signature
值替换为在 使用 X.509 证书验证域 中获得的text_message
和signed_message
值。aws ec2 provision-ipam-pool-cidr --region
us-east-1
--ipam-pool-idipam-pool-0a03d430ca3f5c035
--cidr130.137.245.0/24
--verification-method remarks-x509 --cidr-authorization-context Message="1|aws|470889052444|130.137.245.0/24|20250101|SHA256|RSAPSS
",Signature="W3gdQ9PZHLjPmrnGM~cvGx~KCIsMaU0P7ENO7VRnfSuf9NuJU5RUveQzus~QmF~Nx42j3z7d65uyZZiDRX7KMdW4KadaLiClyRXN6ps9ArwiUWSp9yHM~U-hApR89Kt6GxRYOdRaNx8yt-uoZWzxct2yIhWngy-du9pnEHBOX6WhoGYjWszPw0iV4cmaAX9DuMs8ASR83K127VvcBcRXElT5URr3gWEB1CQe3rmuyQk~gAdbXiDN-94-oS9AZlafBbrFxRjFWRCTJhc7Cg3ASbRO-VWNci-C~bWAPczbX3wPQSjtWGV3k1bGuD26ohUc02o8oJZQyYXRpgqcWGVJdQ__
" --profileipam-account
要为 CIDR 预置验证令牌信息,请使用以下示例命令。除了根据需要替换示例中的值外,务必还要将
ipam-ext-res-ver-token-0309ce7f67a768cf0
替换为在 使用 DNS TXT 记录验证域 中获得的IpamExternalResourceVerificationTokenId
令牌 ID。aws ec2 provision-ipam-pool-cidr --region
us-east-1
--ipam-pool-idipam-pool-0a03d430ca3f5c035
--cidr130.137.245.0/24
--verification-method dns-token --ipam-external-resource-verification-token-idipam-ext-res-ver-token-0309ce7f67a768cf0
--profileipam-account
在输出中,您将看到 CIDR 待定预置。
{ "IpamPoolCidr": { "Cidr": "130.137.245.0/24", "State": "pending-provision" } }
-
在继续之前,请确保已预置此 CIDR。
重要
虽然大多数预配置将在两小时内完成,但对于公开发布的范围,完成预配置过程可能需要长达一周的时间。
运行以下命令,直到您在输出中看到
provisioned
的状态。aws ec2 get-ipam-pool-cidrs --region
us-east-1
--ipam-pool-idipam-pool-0a03d430ca3f5c035
--profileipam-account
下面的示例输出显示状态。
{ "IpamPoolCidrs": [ { "Cidr": "130.137.245.0/24", "State": "provisioned" } ] }
步骤 5:在顶级池中创建区域池
在顶级池中创建区域池。
池的区域设置应为以下选项之一:
您希望此 IPAM 池可用于分配的 AWS 区域。
您希望此 IPAM 池可用于分配的 AWS 本地区域的网络边界组(支持的本地区域)。此选项仅适用于公共范围内的 IPAM IPv4 池。
AWS 专用本地区域
。要在 AWS 专用本地区域内创建池,请在选择器输入中输入 AWS 专用本地区域。
例如,您只能从与 VPC 的区域共享区域设置的 IPAM 池中为 VPC 分配 CIDR。请注意,当您为池选择了区域设置后,无法对其进行修改。如果 IPAM 的主区域由于中断而不可用,并且池的区域设置与 IPAM 的主区域不同,则该池仍可用于分配 IP 地址。
运行本部分中的命令时,--region
的值必须包括您在创建将用于 BYOIP CIDR 的池时输入的 --locale
选项。例如,如果您使用区域设置 us-east-1 创建 BYOIP 池,则 --region
应为 us-east-1。如果您使用区域设置 us-east-1-scl-1(用于本地区域的网络边界组)创建 BYOIP 池,则 --region
应为 us-east-1,因为该区域管理区域设置 us-east-1-scl-1。
此步骤必须由 IPAM 账户完成。
选择区域设置可确保池与从中分配的资源之间没有跨区域依赖关系。可用的选项来自您在创建 IPAM 时选择的运营区域。在本教程中,我们将使用 us-west-2
作为区域池的区域设置。
重要
创建池时,您必须包括 --aws-service ec2
。您选择的服务将决定可传播 CIDR 的 AWS 服务。目前,唯一的选择是 ec2
,这意味着从此池中分配的 CIDR 在 Amazon EC2 服务(适用于弹性 IP 地址)和 Amazon VPC 服务(适用于与 VPC 关联的 CIDR)中是可传播的。
要使用 AWS CLI 创建区域池
-
运行以下命令以创建池。
aws ec2 create-ipam-pool --description
"Regional-IPv4-pool"
--regionus-east-1
--ipam-scope-idipam-scope-0087d83896280b594
--source-ipam-pool-idipam-pool-0a03d430ca3f5c035
--localeus-west-2
--address-familyipv4
--aws-service ec2 --profileipam-account
在输出中,您将看到创建池的 IPAM。
{ "IpamPool": { "OwnerId": "123456789012", "IpamPoolId": "ipam-pool-0d8f3646b61ca5987", "SourceIpamPoolId": "ipam-pool-0a03d430ca3f5c035", "IpamPoolArn": "arn:aws:ec2::123456789012:ipam-pool/ipam-pool-0d8f3646b61ca5987", "IpamScopeArn": "arn:aws:ec2::123456789012:ipam-scope/ipam-scope-0087d83896280b594", "IpamScopeType": "public", "IpamArn": "arn:aws:ec2::123456789012:ipam/ipam-090e48e75758de279", "Locale": "us-west-2", "PoolDepth": 2, "State": "create-in-progress", "Description": "Regional--pool", "AutoImport": false, "AddressFamily": "ipv4", "Tags": [], "ServiceType": "ec2" } }
-
运行以下命令,直到您在输出中看到
create-complete
的状态。aws ec2 describe-ipam-pools --region
us-east-1
--profileipam-account
在输出中,您可以看到您在 IPAM 中拥有的池。在本教程中,我们创建了一个顶级池和一个区域池,所以您会看到这两个池。
步骤 6:向区域池预置 CIDR
向区域池预置 CIDR 块。
注意
将 CIDR 预置到顶级池中的区域池时,您可以预置的最具体的 IPv4 CIDR 为 /24
;不允许使用更具体的 CIDR(例如 /25
)。创建区域池后,您可以在该区域池内创建较小的池(例如 /25
)。请注意,如果您共享该区域池内的一个或多个区域池,则这些池只能在该区域池上设置的区域中使用。
此步骤必须由 IPAM 账户完成。
要使用 AWS CLI 将 CIDR 块分配到区域池
-
请运行以下命令以预置 CIDR。
aws ec2 provision-ipam-pool-cidr --region
us-east-1
--ipam-pool-idipam-pool-0d8f3646b61ca5987
--cidr130.137.245.0/24
--profileipam-account
在输出中,您将看到 CIDR 待定预置。
{ "IpamPoolCidr": { "Cidr": "130.137.245.0/24", "State": "pending-provision" } }
-
运行以下命令,直到您在输出中看到
provisioned
的状态。aws ec2 get-ipam-pool-cidrs --region
us-east-1
--ipam-pool-idipam-pool-0d8f3646b61ca5987
--profileipam-account
下面的示例输出显示正确的状态。
{ "IpamPoolCidrs": [ { "Cidr": "130.137.245.0/24", "State": "provisioned" } ] }
步骤 7:传播 CIDR
本部分中的步骤必须由 IPAM 账户完成。将弹性 IP 地址 (EIP) 与实例或 Elastic Load Balancer 关联后,您就可以开始传播您带到处于已定义了 --aws-service
ec2
的池中的 AWS 的 CIDR。在本教程中,这就是您的区域池。默认情况下,CIDR 不会被传播,这意味着它不能通过互联网公开访问。运行本部分中的命令时,--region
的值必须与您在创建将用于 BYOIP CIDR 的池时输入的 --locale
选项匹配。
此步骤必须由 IPAM 账户完成。
注意
传播状态不会限制您分配弹性 IP 地址的能力。即使您的 BYOIPv4 CIDR 未传播,您仍然可以从 IPAM 池中创建 EIP。
开始使用 AWS CLI 传播 CIDR
-
请运行以下命令以传播 CIDR。
aws ec2 advertise-byoip-cidr --region
us-west-2
--cidr130.137.245.0/24
--profileipam-account
在输出中,您将看到 CIDR 被传播。
{ "ByoipCidr": { "Cidr": "130.137.245.0/24", "State": "advertised" } }
步骤 8:共享区域池
按照本部分中的步骤使用 AWS Resource Access Manager(RAM)共享 IPAM 池。
在 AWS RAM 中启用资源共享
创建 IPAM 后,您需要与组织中的其他账户共享区域池。在共享 IPAM 池之前,请先完成本部分中的步骤,启用与 AWS RAM 的资源共享。如果要使用 AWS CLI 启用资源共享,请使用 --profile
选项。management-account
启用资源共享
-
使用 AWS Organizations 管理账户打开 AWS RAM 控制台,地址:https://console.aws.amazon.com/ram/
。 -
在左侧导航窗格中,依次选择设置、启用与 AWS Organizations 共享、保存设置。
您现在可以与组织的其他成员共享 IPAM 池。
使用 AWS RAM 共享 IPAM 池
在这一部分,您将与其他 AWS Organizations 成员账户共享区域池。有关共享 IPAM 池的完整说明,例如所需 IAM 权限的相关信息,请参阅 使用 AWS RAM 共享 IPAM 池。如果要使用 AWS CLI 启用资源共享,请使用 --profile
选项。ipam-account
使用 AWS RAM 共享 IPAM 池
-
使用 IPAM 管理员账户打开 IPAM 控制台,地址:https://console.aws.amazon.com/ipam/
。 -
在导航窗格中,选择池。
-
依次选择私有范围、IPAM 池以及操作 > 查看详细信息。
-
在资源共享下,选择创建资源共享。AWS RAM 控制台将打开。您将使用 AWS RAM 来共享该池。
-
选择创建资源共享。
-
在 AWS RAM 控制台中,再次选择创建资源共享。
-
为共享资源添加名称。
-
在选择资源类型下,选择 IPAM 池,然后选择要共享的池的 ARN。
-
选择下一步。
-
选择 AWSRAMPermissionIpamPoolByoipCidrImport 权限。本教程不提供权限选项的详细信息,但您可以在 使用 AWS RAM 共享 IPAM 池 中查看有关这些选项的更多信息。
-
选择下一步。
-
在委托人 > 选择主体类型下,选择 AWS 账户,输入要为 IPAM 提供 IP 地址范围的账户的账户 ID,然后选择添加。
-
选择下一步。
-
查看资源共享选项和要共享的主体,然后选择创建。
-
要允许
member-account
账户从 IPAM 池中分配 IP 地址 CIDRS,请使用AWSRAMDefaultPermissionsIpamPool
创建第二个资源共享。--resource-arns
的值是您在上一部分中创建的 IPAM 池的 ARN。--principals
的值是member-account
的账户 ID。--permission-arns
的值是AWSRAMDefaultPermissionsIpamPool
权限的 ARN。
步骤 9:从池中分配弹性 IP 地址
完成本部分中的步骤,以从池中分配弹性 IP 地址。请注意,如果您使用公有 IPv4 池来分配弹性 IP 地址,则可以使用 步骤 9 的替代方案 中的替代步骤而不是本部分中的步骤。
重要
如果您看到与无权调用 ec2:AllocateAddress 相关的错误,则需要更新当前分配给与您共享的 IPAM 池的托管权限。联系创建资源共享的人员,要求他们将托管权限 AWSRAMPermissionIpamResourceDiscovery
更新为默认版本。有关更多信息,请参阅《AWS RAM 用户指南》中的更新资源共享。
步骤 10:将弹性 IP 地址与 EC2 实例相关联
完成本部分中的步骤将弹性 IP 地址与 EC2 实例相关联。
步骤 11:清除
按照本部分中的步骤清除您在本教程中预置和创建的资源。运行本部分中的命令时,--region
的值必须包括您在创建将用于 BYOIP CIDR 的池时输入的 --locale
选项。
使用 AWS CLI 清除
-
查看 IPAM 中管理的 EIP 分配。
此步骤必须由 IPAM 账户完成。
aws ec2 get-ipam-pool-allocations --region
us-west-2
--ipam-pool-idipam-pool-0d8f3646b61ca5987
--profileipam-account
输出将显示 IPAM 中的分配。
{ "IpamPoolAllocations": [ { "Cidr": "130.137.245.0/24", "IpamPoolAllocationId": "ipam-pool-alloc-5dedc8e7937c4261b56dc3e3eb53dc45", "ResourceId": "ipv4pool-ec2-0019eed22a684e0b2", "ResourceType": "ec2-public-ipv4-pool", "ResourceOwner": "123456789012" } ] }
-
停止传播 IPv4 CIDR。
此步骤必须由 IPAM 账户完成。
aws ec2 withdraw-byoip-cidr --region
us-west-2
--cidr130.137.245.0/24
--profileipam-account
在输出中,您将看到 CIDR 状态从 advertised(已传播)更改为 provisioned(已预置)。
{ "ByoipCidr": { "Cidr": "130.137.245.0/24", "State": "provisioned" } }
-
释放弹性 IP 地址。
此步骤必须由成员账户完成。
aws ec2 release-address --region
us-west-2
--allocation-ideipalloc-0db3405026756dbf6
--profilemember-account
运行此命令时,您不会看到任何输出。
-
查看 IPAM 中不再管理的 EIP 分配。IPAM 可能需要一些时间才能发现弹性 IP 地址已被删除。在看到已从 IPAM 中删除分配之前,您无法继续清理和取消预置 IPAM 池 CIDR。运行本部分中的命令时,
--region
的值必须包括您在创建将用于 BYOIP CIDR 的池时输入的--locale
选项。此步骤必须由 IPAM 账户完成。
aws ec2 get-ipam-pool-allocations --region
us-west-2
--ipam-pool-idipam-pool-0d8f3646b61ca5987
--profileipam-account
输出将显示 IPAM 中的分配。
{ "IpamPoolAllocations": [] }
-
取消预置区域池 CIDR。运行本步骤中的命令时,
--region
的值必须与 IPAM 的区域匹配。此步骤必须由 IPAM 账户完成。
aws ec2 deprovision-ipam-pool-cidr --region
us-east-1
--ipam-pool-idipam-pool-0d8f3646b61ca5987
--cidr130.137.245.0/24
--profileipam-account
在输出中,您将看到 CIDR 待定取消预置。
{ "IpamPoolCidr": { "Cidr": "130.137.245.0/24", "State": "pending-deprovision" } }
取消预置需要一些时间才能完成。检查取消预置的状态。
aws ec2 get-ipam-pool-cidrs --region
us-east-1
--ipam-pool-idipam-pool-0d8f3646b61ca5987
--profileipam-account
等到您看到 deprovisioned(取消预置)后再继续下一步。
{ "IpamPoolCidr": { "Cidr": "130.137.245.0/24", "State": "deprovisioned" } }
-
删除 RAM 共享并禁用与 AWS Organizations 的 RAM 集成。完成《AWS RAM 用户指南》中 删除 AWS RAM 中的资源共享 和 禁用与 AWS Organizations 的资源共享 所述的步骤,删除 RAM 共享并禁用与 AWS Organizations 的 RAM 集成。
此步骤必须分别由 IPAM 账户和管理账户完成。要使用 AWS CLI 删除 RAM 共享并禁用 RAM 集成,请使用
--profile
和ipam-account
--profile
选项。management-account
-
删除区域池。运行本步骤中的命令时,
--region
的值必须与 IPAM 的区域匹配。此步骤必须由 IPAM 账户完成。
aws ec2 delete-ipam-pool --region
us-east-1
--ipam-pool-idipam-pool-0d8f3646b61ca5987
--profileipam-account
在输出中,您可以看到删除状态。
{ "IpamPool": { "OwnerId": "123456789012", "IpamPoolId": "ipam-pool-0d8f3646b61ca5987", "SourceIpamPoolId": "ipam-pool-0a03d430ca3f5c035", "IpamPoolArn": "arn:aws:ec2::123456789012:ipam-pool/ipam-pool-0d8f3646b61ca5987", "IpamScopeArn": "arn:aws:ec2::123456789012:ipam-scope/ipam-scope-0087d83896280b594", "IpamScopeType": "public", "IpamArn": "arn:aws:ec2::123456789012:ipam/ipam-090e48e75758de279", "Locale": "us-east-1", "PoolDepth": 2, "State": "delete-in-progress", "Description": "reg-ipv4-pool", "AutoImport": false, "Advertisable": true, "AddressFamily": "ipv4" } }
-
取消预置顶级池 CIDR。运行本步骤中的命令时,
--region
的值必须与 IPAM 的区域匹配。此步骤必须由 IPAM 账户完成。
aws ec2 deprovision-ipam-pool-cidr --region
us-east-1
--ipam-pool-idipam-pool-0a03d430ca3f5c035
--cidr130.137.245.0/24
--profileipam-account
在输出中,您将看到 CIDR 待定取消预置。
{ "IpamPoolCidr": { "Cidr": "130.137.245.0/24", "State": "pending-deprovision" } }
取消预置需要一些时间才能完成。运行以下命令检查取消预置的状态。
aws ec2 get-ipam-pool-cidrs --region
us-east-1
--ipam-pool-idipam-pool-0a03d430ca3f5c035
--profileipam-account
等到您看到 deprovisioned(取消预置)后再继续下一步。
{ "IpamPoolCidr": { "Cidr": "130.137.245.0/24", "State": "deprovisioned" } }
-
删除顶级池。运行本步骤中的命令时,
--region
的值必须与 IPAM 的区域匹配。此步骤必须由 IPAM 账户完成。
aws ec2 delete-ipam-pool --region
us-east-1
--ipam-pool-idipam-pool-0a03d430ca3f5c035
--profileipam-account
在输出中,您可以看到删除状态。
{ "IpamPool": { "OwnerId": "123456789012", "IpamPoolId": "ipam-pool-0a03d430ca3f5c035", "IpamPoolArn": "arn:aws:ec2::123456789012:ipam-pool/ipam-pool-0a03d430ca3f5c035", "IpamScopeArn": "arn:aws:ec2::123456789012:ipam-scope/ipam-scope-0087d83896280b594", "IpamScopeType": "public", "IpamArn": "arn:aws:ec2::123456789012:ipam/ipam-090e48e75758de279", "Locale": "us-east-1", "PoolDepth": 2, "State": "delete-in-progress", "Description": "top-level-pool", "AutoImport": false, "Advertisable": true, "AddressFamily": "ipv4" } }
-
删除 IPAM。运行本步骤中的命令时,
--region
的值必须与 IPAM 的区域匹配。此步骤必须由 IPAM 账户完成。
aws ec2 delete-ipam --region
us-east-1
--ipam-idipam-090e48e75758de279
--profileipam-account
在输出中,您将看到 IPAM 响应。这意味着 IPAM 已删除。
{ "Ipam": { "OwnerId": "123456789012", "IpamId": "ipam-090e48e75758de279", "IpamArn": "arn:aws:ec2::123456789012:ipam/ipam-090e48e75758de279", "PublicDefaultScopeId": "ipam-scope-0087d83896280b594", "PrivateDefaultScopeId": "ipam-scope-08b70b04fbd524f8d", "ScopeCount": 2, "OperatingRegions": [ { "RegionName": "us-east-1" }, { "RegionName": "us-west-2" } ], } }
步骤 9 的替代方案
如果您使用公有 IPv4 池来分配弹性 IP 地址,则可以本部分中的步骤,而不是 步骤 9:从池中分配弹性 IP 地址 中的步骤。
步骤 1:创建公有 IPv4 池
此步骤通常由不同的想要预调配弹性 IP 地址的 AWS 账户完成,如成员账户。
重要
公有 IPv4 池和 IPAM 池由 AWS 中的不同资源管理。公共 IPv4 池是单一账户资源,使您能够将公有 CIDR 转换为弹性 IP 地址。IPAM 池可用于将公有空间分配给公有 IPv4 池。
要使用 AWS CLI 创建公有 IPv4 池
-
请运行以下命令以预置 CIDR。运行本部分中的命令时,
--region
的值必须与您在创建将用于 BYOIP CIDR 的池时输入的--locale
选项匹配。aws ec2 create-public-ipv4-pool --region
us-west-2
--profilemember-account
在输出中,您将看到公有 IPv4 池 ID。在下一步骤中,您需要用到此 ID。
{ "PoolId": "ipv4pool-ec2-0019eed22a684e0b2" }
步骤 2:将公有 IPv4 CIDR 预调配到您的公有 IPv4 池
将公有 IPv4 CIDR 预置到您的公有 IPv4 池。--region
的值为必须与您在创建将用于 BYOIP CIDR 的池时输入的 --locale
值匹配。您可以定义的最不具体的 --netmask-length
是 24
。
此步骤必须由成员账户完成。
要使用 AWS CLI 创建公有 IPv4 池
-
请运行以下命令以预置 CIDR。
aws ec2 provision-public-ipv4-pool-cidr --region
us-west-2
--ipam-pool-idipam-pool-0d8f3646b61ca5987
--pool-idipv4pool-ec2-0019eed22a684e0b2
--netmask-length24
--profilemember-account
在输出中,您将看到预置的 CIDR。
{ "PoolId": "ipv4pool-ec2-0019eed22a684e0b2", "PoolAddressRange": { "FirstAddress": "130.137.245.0", "LastAddress": "130.137.245.255", "AddressCount": 256, "AvailableAddressCount": 256 } }
-
运行以下命令,以查看公有 IPv4 池中预置的 CIDR。
aws ec2 describe-byoip-cidrs --region
us-west-2
--max-results10
--profilemember-account
在输出中,您将看到预置的 CIDR。默认情况下,CIDR 不会被传播,这意味着它不能通过互联网公开访问。在本教程的最后一步中,您将有机会将此 CIDR 设置为进行传播。
{ "ByoipCidrs": [ { "Cidr": "130.137.245.0/24", "StatusMessage": "Cidr successfully provisioned", "State": "provisioned" } ] }
步骤 3:从公有 IPv4 池创建弹性 IP 地址
从公有 IPv4 池创建弹性 IP 地址 (EIP)。运行本部分中的命令时,--region
的值必须与您在创建将用于 BYOIP CIDR 的池时输入的 --locale
选项匹配。
此步骤必须由成员账户完成。
要使用 AWS CLI 从公有 IPv4 池中创建 EIP
-
运行以下命令以创建 EIP。
aws ec2 allocate-address --region
us-west-2
--public-ipv4-poolipv4pool-ec2-0019eed22a684e0b2
--profilemember-account
在输出中,您将看到分配。
{ "PublicIp": "130.137.245.100", "AllocationId": "eipalloc-0db3405026756dbf6", "PublicIpv4Pool": "ipv4pool-ec2-0019eed22a684e0b2", "NetworkBorderGroup": "us-east-1", "Domain": "vpc" }
-
运行以下命令,以查看 IPAM 中管理的 EIP 分配。
此步骤必须由 IPAM 账户完成。
aws ec2 get-ipam-pool-allocations --region
us-west-2
--ipam-pool-idipam-pool-0d8f3646b61ca5987
--profileipam-account
输出将显示 IPAM 中的分配。
{ "IpamPoolAllocations": [ { "Cidr": "130.137.245.0/24", "IpamPoolAllocationId": "ipam-pool-alloc-5dedc8e7937c4261b56dc3e3eb53dc45", "ResourceId": "ipv4pool-ec2-0019eed22a684e0b2", "ResourceType": "ec2-public-ipv4-pool", "ResourceOwner": "123456789012" } ] }
步骤 9 清理的替代方案
完成以下步骤,以清理使用步骤 9 的替代方法创建的公有 IPv4 池。在 步骤 10:清除 中的标准清理过程中,您应在释放弹性 IP 地址后完成这些步骤。
-
查看您的 BYOIP CIDR。
此步骤必须由成员账户完成。
aws ec2 describe-public-ipv4-pools --region
us-west-2
--profilemember-account
在输出中,您将看到 BYOIP CIDR 中的 IP 地址。
{ "PublicIpv4Pools": [ { "PoolId": "ipv4pool-ec2-0019eed22a684e0b2", "Description": "", "PoolAddressRanges": [ { "FirstAddress": "130.137.245.0", "LastAddress": "130.137.245.255", "AddressCount": 256, "AvailableAddressCount": 256 } ], "TotalAddressCount": 256, "TotalAvailableAddressCount": 256, "NetworkBorderGroup": "us-east-1", "Tags": [] } ] }
-
从公有 IPv4 池中释放 CIDR 中的最后一个 IP 地址。输入网络掩码为 /32 的 IP 地址。您必须为 CIDR 范围内的每个 IP 地址重新运行此命令。如果您的 CIDR 是
/24
,则必须运行此命令才能取消预置/24
CIDR 中 256 个 IP 地址中的每个地址。运行本部分中的命令时,--region
的值必须与 IPAM 的区域匹配。此步骤必须由成员账户完成。
aws ec2 deprovision-public-ipv4-pool-cidr --region
us-east-1
--pool-idipv4pool-ec2-0019eed22a684e0b2
--cidr130.137.245.255/32
--profilemember-account
在输出中,您将看到取消预置的 CIDR。
{ "PoolId": "ipv4pool-ec2-0019eed22a684e0b2", "DeprovisionedAddresses": [ "130.137.245.255" ] }
-
再次查看您的 BYOIP CIDR,并确保没有更多的预置地址。运行本部分中的命令时,
--region
的值必须与 IPAM 的区域匹配。此步骤必须由成员账户完成。
aws ec2 describe-public-ipv4-pools --region
us-east-1
--profilemember-account
在输出中,您将看到公有 IPv4 池中的 IP 地址计数。
{ "PublicIpv4Pools": [ { "PoolId": "ipv4pool-ec2-0019eed22a684e0b2", "Description": "", "PoolAddressRanges": [], "TotalAddressCount": 0, "TotalAvailableAddressCount": 0, "NetworkBorderGroup": "us-east-1", "Tags": [] } ] }