AWS CLI를 사용하여 IPAM 시작하기 - Amazon Virtual Private Cloud

AWS CLI를 사용하여 IPAM 시작하기

이 튜토리얼에서는 단일 AWS 계정을 사용하여 AWS CLI로 Amazon VPC IP Address Manager(IPAM)를 설정 및 사용하는 프로세스를 안내합니다. 이 튜토리얼을 마치면 IPAM을 생성하고, IP 주소 풀의 계층 구조를 생성하며, CIDR을 VPC에 할당하게 됩니다.

사전 조건

튜토리얼 시작 전에 확인해야 할 사항:

  • IPAM 리소스를 생성 및 관리할 수 있는 권한이 있는 AWS 계정.

  • 적절한 자격 증명으로 AWS CLI 설치 및 구성. AWS CLI 설치 관련 정보는 최신 버전의 AWS CLI 설치 또는 업데이트를 참조하세요. AWS CLI 구성 관련 정보는 구성 기본 사항을 참조하세요.

  • IP 주소 지정 및 CIDR 표기법에 대한 기본적인 이해.

  • Amazon VPC 개념에 대한 기본적인 지식.

  • 튜토리얼 완료에는 약 30분이 소요됩니다.

IPAM 생성

첫 번째 단계는 운영 리전이 있는 IPAM을 생성하는 것입니다. IPAM을 사용하면 AWS 워크로드의 IP 주소를 계획, 추적 및 모니터링할 수 있습니다.

us-east-1 및 us-west-2의 운영 리전이 포함된 IPAM 생성:

aws ec2 create-ipam \ --description "My IPAM" \ --operating-regions RegionName=us-east-1 RegionName=us-west-2

이 명령을 실행하면 IPAM이 생성되고 지정된 리전의 IP 주소를 관리할 수 있습니다. 운영 리전은 IPAM이 IP 주소 CIDR을 관리할 수 있는 AWS 리전입니다.

IPAM 생성 확인:

aws ec2 describe-ipams

후속 단계에서 필요하므로 출력의 IPAM ID를 확인합니다.

IPAM이 완전히 생성되고 사용 가능할 때까지 기다립니다(약 20초).

sleep 20

IPAM 범위 ID 가져오기

IPAM을 생성하면 AWS에서 프라이빗 및 퍼블릭 범위를 자동으로 생성합니다. 이 튜토리얼에서는 프라이빗 범위를 사용합니다.

IPAM 세부 정보 검색 및 프라이빗 범위 ID 추출:

aws ec2 describe-ipams --ipam-id ipam-0abcd1234

ipam-0abcd1234를 실제 IPAM ID로 바꿉니다.

출력의 PrivateDefaultScopeId 필드에서 프라이빗 범위 ID를 찾고 기록합니다. 파일은 ipam-scope-0abcd1234와 같이 표시됩니다.

최상위 IPv4 풀 생성

이제 프라이빗 범위에서 최상위 풀을 생성합니다. 이 풀은 계층 구조에서 다른 모든 풀의 상위 역할을 합니다.

최상위 IPv4 풀 생성:

aws ec2 create-ipam-pool \ --ipam-scope-id ipam-scope-0abcd1234 \ --address-family ipv4 \ --description "Top-level pool"

ipam-scope-0abcd1234를 실제 프라이빗 범위 ID로 바꿉니다.

풀이 완전히 생성되고 사용 가능할 때까지 대기:

aws ec2 describe-ipam-pools --ipam-pool-ids ipam-pool-0abcd1234 --query 'IpamPools[0].State' --output text

ipam-pool-0abcd1234를 실제 최상위 풀 ID로 바꿉니다. 계속하기 전에 create-complete 상태가 되어야 합니다.

풀을 사용할 수 있게 되면 CIDR 블록 프로비저닝:

aws ec2 provision-ipam-pool-cidr \ --ipam-pool-id ipam-pool-0abcd1234 \ --cidr 10.0.0.0/8

CIDR이 완전히 프로비저닝될 때까지 대기:

aws ec2 get-ipam-pool-cidrs --ipam-pool-id ipam-pool-0abcd1234 --query "IpamPoolCidrs[?Cidr=='10.0.0.0/8'].State" --output text

계속하기 전에 provisioned 상태가 되어야 합니다.

리전 IPv4 풀 생성

다음으로 최상위 풀 내에 리전 풀을 생성합니다. 이 풀은 특정 AWS 리전에만 해당됩니다.

리전 IPv4 풀 생성:

aws ec2 create-ipam-pool \ --ipam-scope-id ipam-scope-0abcd1234 \ --source-ipam-pool-id ipam-pool-0abcd1234 \ --locale us-east-1 \ --address-family ipv4 \ --description "Regional pool in us-east-1"

ipam-scope-0abcd1234를 실제 프라이빗 범위 ID로 바꾸고, ipam-pool-0abcd1234를 최상위 풀 ID로 바꿉니다.

리전 풀이 완전히 생성되고 사용 가능할 때까지 대기:

aws ec2 describe-ipam-pools --ipam-pool-ids ipam-pool-1abcd1234 --query 'IpamPools[0].State' --output text

ipam-pool-1abcd1234를 실제 리전 풀 ID로 바꿉니다. 계속하기 전에 create-complete 상태가 되어야 합니다.

풀을 사용할 수 있게 되면 CIDR 블록 프로비저닝:

aws ec2 provision-ipam-pool-cidr \ --ipam-pool-id ipam-pool-1abcd1234 \ --cidr 10.0.0.0/16

CIDR이 완전히 프로비저닝될 때까지 대기:

aws ec2 get-ipam-pool-cidrs --ipam-pool-id ipam-pool-1abcd1234 --query "IpamPoolCidrs[?Cidr=='10.0.0.0/16'].State" --output text

계속하기 전에 provisioned 상태가 되어야 합니다.

개발 IPv4 풀 생성

이제 리전 풀 내에 개발 풀을 생성합니다. 이 풀은 개발 환경에 사용됩니다.

개발 IPv4 풀 생성:

aws ec2 create-ipam-pool \ --ipam-scope-id ipam-scope-0abcd1234 \ --source-ipam-pool-id ipam-pool-1abcd1234 \ --locale us-east-1 \ --address-family ipv4 \ --description "Development pool"

ipam-scope-0abcd1234를 실제 프라이빗 범위 ID로 바꾸고, ipam-pool-1abcd1234를 리전 풀 ID로 바꿉니다.

참고: 상위 풀의 로캘과 일치하도록 --locale 파라미터를 포함해야 합니다.

개발 풀이 완전히 생성되고 사용 가능할 때까지 대기:

aws ec2 describe-ipam-pools --ipam-pool-ids ipam-pool-2abcd1234 --query 'IpamPools[0].State' --output text

ipam-pool-2abcd1234를 실제 개발 풀 ID로 바꿉니다. 계속하기 전에 create-complete 상태가 되어야 합니다.

풀을 사용할 수 있게 되면 CIDR 블록 프로비저닝:

aws ec2 provision-ipam-pool-cidr \ --ipam-pool-id ipam-pool-2abcd1234 \ --cidr 10.0.0.0/24

CIDR이 완전히 프로비저닝될 때까지 대기:

aws ec2 get-ipam-pool-cidrs --ipam-pool-id ipam-pool-2abcd1234 --query "IpamPoolCidrs[?Cidr=='10.0.0.0/24'].State" --output text

계속하기 전에 provisioned 상태가 되어야 합니다.

IPAM 풀 CIDR을 사용하는 VPC 생성

마지막으로 IPAM 풀의 CIDR을 사용하는 VPC를 생성합니다. IPAM을 사용하여 AWS 리소스에 IP 주소 공간을 어떻게 할당할 수 있는지 보여줍니다.

IPAM 풀 CIDR을 사용하는 VPC 생성:

aws ec2 create-vpc \ --ipv4-ipam-pool-id ipam-pool-2abcd1234 \ --ipv4-netmask-length 26 \ --tag-specifications 'ResourceType=vpc,Tags=[{Key=Name,Value=IPAM-VPC}]'

ipam-pool-2abcd1234를 실제 개발 풀 ID로 바꿉니다.

--ipv4-netmask-length 26 파라미터는 풀에서 /26 CIDR 블록(64개 IP 주소)을 할당하도록 지정합니다. 이 넷마스크 길이는 풀의 CIDR 블록(/24)보다 작도록 선택됩니다.

VPC 생성 확인:

aws ec2 describe-vpcs --filters "Name=tag:Name,Values=IPAM-VPC"

IPAM 풀 할당 확인

CIDR이 IPAM 풀에서 할당되었는지 확인:

aws ec2 get-ipam-pool-allocations \ --ipam-pool-id ipam-pool-2abcd1234

ipam-pool-2abcd1234를 실제 개발 풀 ID로 바꿉니다.

이 명령을 실행하면 방금 생성한 VPC를 포함하여 지정된 IPAM 풀의 모든 할당이 표시됩니다.

문제 해결

다음은 IPAM을 사용할 때 발생할 수 있는 몇 가지 일반적인 문제입니다.

  • 권한 오류: IAM 사용자 또는 역할에 IPAM 리소스를 생성 및 관리하는 데 필요한 권한이 있는지 확인하세요. ec2:CreateIpam, ec2:CreateIpamPool 및 기타 관련 권한이 필요할 수 있습니다.

  • 리소스 제한 초과: 기본적으로 계정당 하나의 IPAM만 생성할 수 있습니다. 이미 IPAM이 있는 경우 새 IPAM을 생성하거나 기존 IPAM을 사용하기 전에 IPAM을 삭제해야 합니다.

  • CIDR 할당 실패: 풀에 CIDR을 프로비저닝할 때 프로비저닝하려는 CIDR이 다른 풀의 기존 할당과 겹치지 않아야 합니다.

  • API 요청 시간 초과: "RequestExpired" 오류가 발생하는 경우 네트워크 지연 시간 또는 시간 동기화 문제가 원인일 수 있습니다. 명령을 다시 시도하세요.

  • 잘못된 상태 오류: "IncorrectState" 오류가 발생하면 올바른 상태가 아닌 리소스에서 작업을 수행하려고 하는 것이 원인일 수 있습니다. 계속하기 전에 리소스가 완전히 생성되거나 프로비저닝될 때까지 기다립니다.

  • 할당 크기 오류: 할당 크기와 관련하여 "InvalidParameterValue" 오류가 발생하는 경우 요청 중인 넷마스크 길이가 풀 크기에 적합한지 확인합니다. 예를 들어 /24 풀에서 /25 CIDR을 할당할 수는 없습니다.

  • 종속성 위반: 리소스를 정리할 때 "DependencyViolation" 오류가 발생할 수 있습니다. 리소스가 서로 종속되어 있기 때문입니다. 풀을 삭제하기 전에 생성 역순으로 리소스를 삭제하고 CIDR 프로비저닝을 해제해야 합니다.

리소스 정리

이 튜토리얼을 완료하면 불필요한 요금이 발생하지 않도록 생성한 리소스를 정리하세요.

  1. VPC를 삭제합니다.

    aws ec2 delete-vpc --vpc-id vpc-0abcd1234
  2. 개발 풀에서 CIDR 프로비저닝 해제:

    aws ec2 deprovision-ipam-pool-cidr --ipam-pool-id ipam-pool-2abcd1234 --cidr 10.0.0.0/24
  3. 개발 풀 삭제:

    aws ec2 delete-ipam-pool --ipam-pool-id ipam-pool-2abcd1234
  4. 리전 풀에서 CIDR 프로비저닝 해제:

    aws ec2 deprovision-ipam-pool-cidr --ipam-pool-id ipam-pool-1abcd1234 --cidr 10.0.0.0/16
  5. 리전 풀 삭제:

    aws ec2 delete-ipam-pool --ipam-pool-id ipam-pool-1abcd1234
  6. 최상위 풀에서 CIDR 프로비저닝 해제:

    aws ec2 deprovision-ipam-pool-cidr --ipam-pool-id ipam-pool-0abcd1234 --cidr 10.0.0.0/8
  7. 최상위 풀 삭제:

    aws ec2 delete-ipam-pool --ipam-pool-id ipam-pool-0abcd1234
  8. IPAM 삭제:

    aws ec2 delete-ipam --ipam-id ipam-0abcd1234

모든 ID를 실제 리소스 ID로 바꿉니다.

참고

다음 단계로 진행하기 전에 리소스가 완전히 삭제되도록 작업 간에 대기해야 할 수 있습니다. 종속성 위반이 발생하면 몇 초 정도 기다린 다음 다시 시도하세요.

다음 단계

이제 AWS CLI에서 IPAM을 생성하고 사용하는 방법을 학습했으니 고급 기능을 살펴보는 것이 좋습니다.