

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

# 教學課程：使用 建立 IPAM 和集區 AWS CLI
<a name="tutorials-create-vpc-ipam"></a>

遵循本教學課程中的步驟，使用 AWS CLI 來建立 IPAM、建立 IP 地址集區，以及使用來自 IPAM 集區的 CIDR 配置 VPC。

只要依照本節中的步驟，即可建立如下的集區結構階層範例：
+ 在 AWS 區域 1、 AWS 區域 2 中操作的 IPAM
  + 私有範圍
    + 最上層集區
      +  AWS 區域 2 中的區域集區
        + 開發集區
          + VPC 的配置

**注意**  
在本節中，您會建立 IPAM。預設情況下，只能建立一個 IPAM。如需詳細資訊，請參閱[IPAM 的配額](quotas-ipam.md)。如果已委派 IPAM 帳戶並建立 IPAM，則可略過步驟 1 和 2。

**Topics**
+ [步驟 1：在您的組織中啟用 IPAM](#cli-tut-enable-org-ipam)
+ [步驟 2：建立 IPAM](#cli-tut-create-ipam)
+ [步驟 3：建立 IPv4 地址集區](#cli-tut-create-top-ipam)
+ [步驟 4：在最上層集區佈建 CIDR](#cli-tut-provision-cidr-ipam)
+ [步驟 5. 利用最上層集區中的 CIDR 建立區域集區](#cli-tut-create-reg-ipam)
+ [步驟 6：在區域集區中佈建 CIDR](#cli-tut-assign-cidr-reg-pool)
+ [步驟 7. 建立 RAM 共用以啟用跨帳戶的 IP 指派](#cli-tut-create-ram-share-ipam)
+ [步驟 8. 建立 VPC](#cli-tut-create-vpc-ipam)
+ [步驟 9. 清除](#cli-tut-cleanup-ipam)

## 步驟 1：在您的組織中啟用 IPAM
<a name="cli-tut-enable-org-ipam"></a>

此為選擇性步驟。完成此步驟以在組織中啟用 IPAM，並使用 CLI AWS 設定委派 IPAM。如需有關 IPAM 帳戶角色的詳細資訊，請參閱 [將 IPAM 與 AWS Organizations 中的帳戶整合](enable-integ-ipam.md)。

此請求必須從 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
<a name="cli-tut-create-ipam"></a>

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

**注意**  
操作區域選項會決定 IPAM 集區可用於哪些 AWS 區域。如需有關作業區域的詳細資訊，請參閱 [建立 IPAM](create-ipam.md)。

**使用 建立 IPAM AWS CLI**

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": []
       }
   }
   ```

1. 執行下列命令以檢視與範圍相關的更多資訊。公有範圍專用於要透過公有網際網路存取的 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 地址集區
<a name="cli-tut-create-top-ipam"></a>

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

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

**使用 為所有 AWS 資源建立 IPv4 地址集區 AWS CLI**

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": []
       }
   }
   ```

1. 執行下列命令，直到輸出結果顯示 `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
<a name="cli-tut-provision-cidr-ipam"></a>

依照本節中的步驟來佈建最上層集區的 CIDR，然後確認 CIDR 已佈建。如需詳細資訊，請參閱[佈建集區的 CIDR](prov-cidr-ipam.md)。

**使用 將 CIDR 區塊佈建至集區 AWS CLI**

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"      
       }                                     
   }
   ```

1. 執行下列命令，直到輸出結果顯示 `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 建立區域集區
<a name="cli-tut-create-reg-ipam"></a>

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

**使用 建立具有來自先前集區的 CIDR 的集區 AWS CLI**

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": []
       }
   }
   ```

1. 執行下列命令，直到輸出結果顯示 `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
<a name="cli-tut-assign-cidr-reg-pool"></a>

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

**使用 將 CIDR 區塊指派給區域集區 AWS CLI**

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"      
       }                                     
   }
   ```

1. 執行下列命令，直到輸出結果顯示 `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"         
           }                                  
       ]                                      
   }
   ```

1. 執行下列命令以查詢最上層集區，藉此檢視配置。區域集區會被視為是最上層集區內的配置。

   ```
   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 指派
<a name="cli-tut-create-ram-share-ipam"></a>

此為選用步驟。必須先完成 [將 IPAM 與 AWS Organizations 中的帳戶整合](enable-integ-ipam.md) 才能完成此步驟。

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

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

```
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
<a name="cli-tut-create-vpc-ipam"></a>

執行下列命令以建立 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. 清除
<a name="cli-tut-cleanup-ipam"></a>

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

1. 刪除 VPC。

   ```
   aws ec2 delete-vpc --vpc-id vpc-0983f3c454f3d8be5
   ```

1. 刪除 IPAM 集區 RAM 共用。

   ```
   aws ram delete-resource-share --resource-share-arn arn:aws:ram:us-west-2:123456789012:resource-share/3ab63985-99d9-1cd2-7d24-75e93EXAMPLE
   ```

1. 解除佈建區域集區的集區 CIDR。

   ```
    aws ec2 deprovision-ipam-pool-cidr --ipam-pool-id ipam-pool-0da89c821626f1e4b --region us-east-1 
   ```

1. 解除佈建最上層集區的集區 CIDR。

   ```
    aws ec2 deprovision-ipam-pool-cidr --ipam-pool-id ipam-pool-0008f25d7187a08d9 --region us-east-1
   ```

1. 刪除 IPAM

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