

# チュートリアル: AWS CLI を使用して IPAM とプールを作成する
<a name="tutorials-create-vpc-ipam"></a>

このチュートリアルのステップに従って、AWS CLI を使用して IPAM を作成し、IP アドレスプールを作成して、IPAM プールの CIDR を使って VPC を割り当てます。

次に、このセクションのステップに従って作成するプール構造の階層の例を示します。
+ AWS リージョン 1、AWS リージョン 2 で運用されているIPAM
  + プライベートスコープ
    + 最上位プール
      + AWS リージョン 2 のリージョンプール
        + 開発プール
          + VPC の割り当て

**注記**  
このセクションでは、IPAM を作成します。デフォルトでは、作成できる IPAM は 1 つだけです。詳細については、「[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. アカウント間の IP 割り当てを有効にするために RAM 共有を作成する](#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>

この手順は省略可能です。このステップを実行して、AWS CLI を使用して組織で IPAM を有効にし、委任された 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 を作成し、作成されたスコープに関する追加情報を表示します。この IPAM は、後のステップでプールを作成し、それらのプールの IP アドレス範囲をプロビジョニングするときに使用します。

**注記**  
運用リージョンオプションによって、IPAM プールを使用できる AWS リージョンが決まります。運用リージョンの詳細については、[IPAM を作成する](create-ipam.md)を参照してください。

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

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

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)」を参照してください。

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

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 による取得元のプールは、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": []
       }
   }
   ```

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 ブロックをプールに割り当てて、正常にプロビジョニングされたことを検証します。

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

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. アカウント間の IP 割り当てを有効にするために RAM 共有を作成する
<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 のホームリージョンを通じて行われます。このチュートリアルの例では 1 つのプールに対して 1 つの共有を作成しますが、1 つの共有に複数のプールを追加できます。入力する必要があるオプションの説明など、詳細については、[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 内のプールから VPC に CIDR ブロックを割り当てます。

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