

# 자습서: 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 하나만 생성할 수 있습니다. 자세한 내용은 [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>

이 단계는 선택 사항입니다. 조직에서 IPAM을 사용 설정하고 AWS CLI를 사용하여 위임된 IPAM을 구성하려면 이 단계를 완료하세요. IPAM 계정의 역할에 대한 자세한 내용은 [AWS Organization에서 계정과 IPAM 통합](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) 섹션을 참조하세요.

**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와 동일한 리전에 있어야 합니다. IPAM 리전 이외의 리전의 서비스에서 풀을 사용할 수 있도록 해당 풀을 생성하는 경우 `--locale` 옵션을 선택할 수 있습니다. 이 섹션의 단계를 따르면 다른 로캘에서 리전 풀을 생성할 수 있습니다.

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

이 단계는 선택 사항입니다. [AWS Organization에서 계정과 IPAM 통합](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의 풀에서 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
   ```