教學課程:使用 AWS CLI 建立 IPAM 和集區 - Amazon Virtual Private Cloud

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

教學課程:使用 AWS CLI 建立 IPAM 和集區

請按照本教學課程中的步驟,使用 AWS CLI 建立 IPAM、建立 IP 地址集區,以及使用 IPAM 集區的 CIDR 配置 VPC。

只要依照本節中的步驟,即可建立如下的集區結構階層範例:

  • IPAM 執行於 AWS 區域 1、AWS 區域 2

    • 私有範圍

      • 最上層集區

        • AWS 區域 2 中的區域集區

          • 開發集區

            • VPC 的配置

注意

在本節中,您會建立 IPAM。預設情況下,只能建立一個 IPAM。如需更多詳細資訊,請參閱 IPAM 的配額。如果已委派 IPAM 帳戶並建立 IPAM,則可略過步驟 1 和 2。

步驟 1:在您的組織中啟用 IPAM

此為選用步驟。完成此步驟可在您的組織中啟用 IPAM,並使用 AWS CLI 來設定您的委派 IPAM。如需有關 IPAM 帳戶角色的詳細資訊,請參閱 將 IPAM 與組 AWS 織中的帳戶整合

只有 AWS Organizations 管理帳戶才能提出此請求。執行下列命令時,請務必使用具備 IAM 政策的角色,如此才能執行下列動作:

  • ec2:EnableIpamOrganizationAdminAccount

  • organizations:EnableAwsServiceAccess

  • organizations:RegisterDelegatedAdministrator

  • iam:CreateServiceLinkedRole

aws ec2 enable-ipam-organization-admin-account --region us-east-1 --delegated-admin-account-id 11111111111

您應會看到表示啟用成功的以下輸出結果。

{ "Success": true }

步驟 2:建立 IPAM

請按照本節中的步驟來建立 IPAM,並檢視與建立之範圍有關的更多資訊。在稍後的步驟中為這些集區建立集區並佈建 IP 地址範圍時,將會用到此 IPAM。

注意

作業區域選項可決定 IPAM 集區用於哪些 AWS 區域。如需有關作業區域的詳細資訊,請參閱 建立 IPAM

使用 AWS CLI 建立 IPAM
  1. 執行下列命令以建立 IPAM 執行個體。

    aws ec2 create-ipam --description my-ipam --region us-east-1 --operating-regions RegionName=us-west-2

    建立 IPAM 時,AWS 會自動執行以下操作:

    • 傳回 IPAM 的全域唯一資源 ID (IpamId)。

    • 建立預設的公有範圍 (PublicDefaultScopeId) 和預設的私有範圍 (PrivateDefaultScopeId)。

    { "Ipam": { "OwnerId": "123456789012", "IpamId": "ipam-0de83dba6694560a9", "IpamArn": "arn:aws:ec2::123456789012:ipam/ipam-0de83dba6694560a9", "PublicDefaultScopeId": "ipam-scope-02a24107598e982c5", "PrivateDefaultScopeId": "ipam-scope-065e7dfe880df679c", "ScopeCount": 2, "Description": "my-ipam", "OperatingRegions": [ { "RegionName": "us-west-2" }, { "RegionName": "us-east-1" } ], "Tags": [] } }
  2. 執行下列命令以檢視與範圍相關的更多資訊。公有範圍專用於要透過公有網際網路存取的 IP 地址。私有範圍專用於不透過公有網際網路存取的 IP 地址。

    aws ec2 describe-ipam-scopes --region us-east-1

    輸出結果會顯示可用的範圍。您將在下一個步驟中用到私有範圍 ID。

    { "IpamScopes": [ { "OwnerId": "123456789012", "IpamScopeId": "ipam-scope-02a24107598e982c5", "IpamScopeArn": "arn:aws:ec2::123456789012:ipam-scope/ipam-scope-02a24107598e982c5", "IpamArn": "arn:aws:ec2::123456789012:ipam/ipam-0de83dba6694560a9", "IpamScopeType": "public", "IsDefault": true, "PoolCount": 0 }, { "OwnerId": "123456789012", "IpamScopeId": "ipam-scope-065e7dfe880df679c", "IpamScopeArn": "arn:aws:ec2::123456789012:ipam-scope/ipam-scope-065e7dfe880df679c", "IpamArn": "arn:aws:ec2::123456789012:ipam/ipam-0de83dba6694560a9", "IpamScopeType": "private", "IsDefault": true, "PoolCount": 0 } ] }

步驟 3:建立 IPv4 地址集區

請依照本節中的步驟來建立 IPv4 地址集區。

重要

您不會在此頂層集區使用 --locale 選項。您稍後會設定區域集區上的地區設定選項。地區設定為您希望集區可供 CIDR 分配使用的 AWS 區域。由於未在頂層集區上設定地區設定,地區設定會預設為 None。如果集區的地區設定為 None,則該集區不可用於任何 AWS 區域的 VPC 資源。您只能在集區中手動分配 IP 地址空間以保留空間。

使用 AWS CLI 為您的所有 AWS 資源建立 IPv4 地址集區
  1. 執行下列命令以建立 IPv4 地址集區。使用您在上一個步驟中建立的 IPAM 私有範圍 ID。

    aws ec2 create-ipam-pool --ipam-scope-id ipam-scope-065e7dfe880df679c --description "top-level-pool" --address-family ipv4

    輸出結果會顯示集區的 create-in-progress 狀態。

    { "IpamPool": { "OwnerId": "123456789012", "IpamPoolId": "ipam-pool-0008f25d7187a08d9", "IpamPoolArn": "arn:aws:ec2::123456789012:ipam-pool/ipam-pool-0008f25d7187a08d9", "IpamScopeArn": "arn:aws:ec2::123456789012:ipam-scope/ipam-scope-065e7dfe880df679c", "IpamScopeType": "private", "IpamArn": "arn:aws:ec2::123456789012:ipam/ipam-0de83dba6694560a9", "Locale": "None", "PoolDepth": 1, "State": "create-in-progress", "Description": "top-level-pool", "AutoImport": false, "AddressFamily": "ipv4", "Tags": [] } }
  2. 執行下列命令,直到輸出結果顯示 create-complete 的狀態為止。

    aws ec2 describe-ipam-pools

    下例的輸出結果顯示正確狀態。

    { "IpamPools": [ { "OwnerId": "123456789012", "IpamPoolId": "ipam-pool-0008f25d7187a08d9", "IpamPoolArn": "arn:aws:ec2::123456789012:ipam-pool/ipam-pool-0008f25d7187a08d9", "IpamScopeArn": "arn:aws:ec2::123456789012:ipam-scope/ipam-scope-065e7dfe880df679c", "IpamScopeType": "private", "IpamArn": "arn:aws:ec2::123456789012:ipam/ipam-0de83dba6694560a9", "Locale": "None", "PoolDepth": 1, "State": "create-complete", "Description": "top-level-pool", "AutoImport": false, "AddressFamily": "ipv4" } ] }

步驟 4:在最上層集區佈建 CIDR

依照本節中的步驟來佈建最上層集區的 CIDR,然後確認 CIDR 已佈建。如需更多詳細資訊,請參閱 佈建集區的 CIDR

使用 AWS CLI 在集區中佈建 CIDR 區塊
  1. 執行下列命令以佈建 CIDR。

    aws ec2 provision-ipam-pool-cidr --region us-east-1 --ipam-pool-id ipam-pool-0008f25d7187a08d9 --cidr 10.0.0.0/8

    您可在輸出結果中確認佈建的狀態。

    { "IpamPoolCidr": { "Cidr": "10.0.0.0/8", "State": "pending-provision" } }
  2. 執行下列命令,直到輸出結果顯示 provisioned 的狀態為止。

    aws ec2 get-ipam-pool-cidrs --region us-east-1 --ipam-pool-id ipam-pool-0008f25d7187a08d9

    下例的輸出結果顯示正確狀態。

    { "IpamPoolCidrs": [ { "Cidr": "10.0.0.0/8", "State": "provisioned" } ] }

步驟 5. 利用最上層集區中的 CIDR 建立區域集區

當您建立 IPAM 集區時,在預設情況下,集區屬於該 IPAM 的 AWS 區域。用來建立 VPC 的集區需與該 VPC 位於相同的區域。建立集區時若使用 --locale 選項,則 IPAM 區域以外之其他區域內的服務可使用該集區。請依照本節中的步驟,以其他地區設定建立區域集區。

使用 AWS CLI 建立包含先前集區之 CIDR 的集區
  1. 執行下列命令以建立集區並插入空間,該空間包含先前集區的已知可用 CIDR。

    aws ec2 create-ipam-pool --description "regional--pool" --region us-east-1 --ipam-scope-id ipam-scope-065e7dfe880df679c --source-ipam-pool-id ipam-pool-0008f25d7187a08d9 --locale us-west-2 --address-family ipv4

    輸出結果會顯示您所建立之集區的 ID。下一個步驟需要用到此 ID。

    { "IpamPool": { "OwnerId": "123456789012", "IpamPoolId": "ipam-pool-0da89c821626f1e4b", "SourceIpamPoolId": "ipam-pool-0008f25d7187a08d9", "IpamPoolArn": "arn:aws:ec2::123456789012:ipam-pool/ipam-pool-0da89c821626f1e4b", "IpamScopeArn": "arn:aws:ec2::123456789012:ipam-scope/ipam-scope-065e7dfe880df679c", "IpamScopeType": "private", "IpamArn": "arn:aws:ec2::123456789012:ipam/ipam-0de83dba6694560a9", "Locale": "us-west-2", "PoolDepth": 2, "State": "create-in-progress", "Description": "regional--pool", "AutoImport": false, "AddressFamily": "ipv4", "Tags": [] } }
  2. 執行下列命令,直到輸出結果顯示 create-complete 的狀態為止。

    aws ec2 describe-ipam-pools

    您會在輸出結果中看到 IPAM 內的集區。在本教學課程中,我們建立了最上層和區域集區,所以這兩種集區您都會看到。

    { "IpamPools": [ { "OwnerId": "123456789012", "IpamPoolId": "ipam-pool-0008f25d7187a08d9", "IpamPoolArn": "arn:aws:ec2::123456789012:ipam-pool/ipam-pool-0008f25d7187a08d9", "IpamScopeArn": "arn:aws:ec2::123456789012:ipam-scope/ipam-scope-065e7dfe880df679c", "IpamScopeType": "private", "IpamArn": "arn:aws:ec2::123456789012:ipam/ipam-0de83dba6694560a9", "Locale": "None", "PoolDepth": 1, "State": "create-complete", "Description": "top-level-pool", "AutoImport": false, "AddressFamily": "ipv4" }, { "OwnerId": "123456789012", "IpamPoolId": "ipam-pool-0da89c821626f1e4b", "SourceIpamPoolId": "ipam-pool-0008f25d7187a08d9", "IpamPoolArn": "arn:aws:ec2::123456789012:ipam-pool/ipam-pool-0da89c821626f1e4b", "IpamScopeArn": "arn:aws:ec2::123456789012:ipam-scope/ipam-scope-065e7dfe880df679c", "IpamScopeType": "private", "IpamArn": "arn:aws:ec2::123456789012:ipam/ipam-0de83dba6694560a9", "Locale": "us-west-2", "PoolDepth": 2, "State": "create-complete", "Description": "regional--pool", "AutoImport": false, "AddressFamily": "ipv4" } ] }

步驟 6:在區域集區中佈建 CIDR

依照本節中的步驟將 CIDR 區塊指派給集區,並確認佈建成功。

使用 AWS CLI 將 CIDR 區塊指派給區域集區
  1. 執行下列命令以佈建 CIDR。

    aws ec2 provision-ipam-pool-cidr --region us-east-1 --ipam-pool-id ipam-pool-0da89c821626f1e4b --cidr 10.0.0.0/16

    輸出結果會顯示集區的狀態。

    { "IpamPoolCidr": { "Cidr": "10.0.0.0/16", "State": "pending-provision" } }
  2. 執行下列命令,直到輸出結果顯示 provisioned 的狀態為止。

    aws ec2 get-ipam-pool-cidrs --region us-east-1 --ipam-pool-id ipam-pool-0da89c821626f1e4b

    下例的輸出結果顯示正確狀態。

    { "IpamPoolCidrs": [ { "Cidr": "10.0.0.0/16", "State": "provisioned" } ] }
  3. 執行下列命令以查詢最上層集區,藉此檢視配置。區域集區會被視為是最上層集區內的配置。

    aws ec2 get-ipam-pool-allocations --region us-east-1 --ipam-pool-id ipam-pool-0008f25d7187a08d9

    輸出結果會顯示區域集區配置於最上層集區中。

    { "IpamPoolAllocations": [ { "Cidr": "10.0.0.0/16", "IpamPoolAllocationId": "ipam-pool-alloc-fbd525f6c2bf4e77a75690fc2d93479a", "ResourceId": "ipam-pool-0da89c821626f1e4b", "ResourceType": "ipam-pool", "ResourceOwner": "123456789012" } ] }

步驟 7. 建立 RAM 共用以啟用跨帳戶的 IP 指派

此為選用步驟。必須先完成 將 IPAM 與組 AWS 織中的帳戶整合 才能完成此步驟。

當您建立 IPAM 集區 AWS RAM 共用時,它會啟用跨帳戶的 IP 指派。RAM 共用功能僅適用於本地 AWS 區域。請注意,此共用是在 IPAM 所在的區域中建立,而不是在集區的本機區域中建立。IPAM 資源的一切管理作業都是透過 IPAM 的主區域進行。本教學課程中的範例會為單一集區建立單一共用,但您可在單一共用中新增多個集區。如需詳細資訊 (包括必須輸入之選項的相關說明),請參閱 透過 AWS RAM 共用 IPAM 集區

執行下列命令以建立資源共用。

aws ram create-resource-share --region us-east-1 --name pool_share --resource-arns arn:aws:ec2::123456789012:ipam-pool/ipam-pool-0dec9695bca83e606 --principals 123456

輸出結果會顯示集區已建立。

{ "resourceShare": { "resourceShareArn": "arn:aws:ram:us-west-2:123456789012:resource-share/3ab63985-99d9-1cd2-7d24-75e93EXAMPLE", "name": "pool_share", "owningAccountId": "123456789012", "allowExternalPrincipals": false, "status": "ACTIVE", "creationTime": 1565295733.282, "lastUpdatedTime": 1565295733.282 } }

步驟 8. 建立 VPC

執行下列命令以建立 VPC,並將新建 IPAM 集區的 CIDR 區塊指派給 VPC。

aws ec2 create-vpc --region us-east-1 --ipv4-ipam-pool-id ipam-pool-04111dca0d960186e --cidr-block 10.0.0.0/24

輸出結果會顯示 VPC 已建立。

{ "Vpc": { "CidrBlock": "10.0.0.0/24", "DhcpOptionsId": "dopt-19edf471", "State": "pending", "VpcId": "vpc-0983f3c454f3d8be5", "OwnerId": "123456789012", "InstanceTenancy": "default", "Ipv6CidrBlockAssociationSet": [], "CidrBlockAssociationSet": [ { "AssociationId": "vpc-cidr-assoc-00b24cc1c2EXAMPLE", "CidrBlock": "10.0.0.0/24", "CidrBlockState": { "State": "associated" } } ], "IsDefault": false } }

步驟 9. 清除

請依照本節中的步驟刪除您在本教學課程中建立的 IPAM 資源。

  1. 刪除 VPC。

    aws ec2 delete-vpc --vpc-id vpc-0983f3c454f3d8be5
  2. 刪除 IPAM 集區 RAM 共用。

    aws ram delete-resource-share --resource-share-arn arn:aws:ram:us-west-2:123456789012:resource-share/3ab63985-99d9-1cd2-7d24-75e93EXAMPLE
  3. 解除佈建區域集區的集區 CIDR。

    aws ec2 deprovision-ipam-pool-cidr --ipam-pool-id ipam-pool-0da89c821626f1e4b --region us-east-1
  4. 解除佈建最上層集區的集區 CIDR。

    aws ec2 deprovision-ipam-pool-cidr --ipam-pool-id ipam-pool-0008f25d7187a08d9 --region us-east-1
  5. 刪除 IPAM

    aws ec2 delete-ipam --region us-east-1