チュートリアル: AWS CLI を使用して IPAM とプールを作成する - Amazon Virtual Private Cloud

チュートリアル: AWS CLI を使用して IPAM とプールを作成する

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

次に、このセクションのステップに従って作成するプール構造の階層の例を示します。

  • AWS リージョン 1、AWS リージョン 2 で運用されているIPAM

    • プライベートスコープ

      • 最上位プール

        • AWS リージョン 2 のリージョンプール

          • 開発プール

            • VPC の割り当て

注記

このセクションでは、IPAM を作成します。デフォルトでは、作成できる IPAM は 1 つだけです。詳細については、「IPAM のクォータ」を参照してください。既に IPAM アカウントを委任し、IPAM を作成済みの場合は、ステップ 1 と 2 をスキップできます。

ステップ 1: 組織で IPAM を有効にする

この手順は省略可能です。このステップを実行して、AWS CLI を使用して組織で IPAM を有効にし、委任された IPAM を構成します。IPAM アカウントのロールの詳細については、IPAM を AWS Organizations 内のアカウントと統合する を参照してください。

このリクエストは、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 を作成し、作成されたスコープに関する追加情報を表示します。この IPAM は、後のステップでプールを作成し、それらのプールの IP アドレス範囲をプロビジョニングするときに使用します。

注記

運用リージョンオプションによって、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" } ] }

Step 5. 最上位プールから取得された CIDR を使用してリージョンプールを作成する

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": [] } }
  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。アカウント間の IP 割り当てを有効にするために RAM 共有を作成する

この手順は省略可能です。このステップは、IPAM を AWS Organizations 内のアカウントと統合するを完了した場合にのみ完了できます。

IPAM プールの AWS RAM 共有を作成すると、アカウント間の IP 割り当てが有効になります。RAM 共有は、ホーム AWS リージョンでのみ使用できます。この共有は、プールのローカルリージョンではなく、IPAM と同じリージョンに作成することに注意してください。IPAM リソースに対するすべての管理操作は、IPAM のホームリージョンを通じて行われます。このチュートリアルの例では 1 つのプールに対して 1 つの共有を作成しますが、1 つの共有に複数のプールを追加できます。入力する必要があるオプションの説明など、詳細については、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 内のプールから 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。クリーンアップ

このセクションのステップに従って、このチュートリアルで作成した 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