메뉴
Amazon Virtual Private Cloud
사용 설명서

예: AWS CLI를 사용하여 IPv4 VPC 및 서브넷 생성

다음 예에서는 AWS CLI 명령을 사용하여 IPv4 CIDR 블록이 있는 기본이 아닌 VPC를 만들고, 해당 VPC에 퍼블릭 및 프라이빗 서브넷을 만듭니다. VPC와 서브넷을 만든 후, 퍼블릭 서브넷에서 인스턴스를 시작하고 여기에 연결할 수 있습니다. 시작하려면 먼저 AWS CLI를 설치하고 구성해야 합니다. 자세한 내용은 AWS 명령줄 인터페이스로 설정을 참조하십시오.

1단계: VPC와 서브넷 만들기

첫 번째 단계는 VPC와 서브넷 두 개를 만드는 것입니다. 이 예에서는 VPC에 대해 CIDR 블록 10.0.0.0/16을 사용하지만, 다른 CIDR 블록을 선택할 수 있습니다. 자세한 내용은 VPC 및 서브넷 크기 단원을 참조하십시오.

AWS CLI를 사용하여 VPC와 서브넷을 만들려면

  1. CIDR 블록이 10.0.0.0/16인 VPC를 만듭니다.

    aws ec2 create-vpc --cidr-block 10.0.0.0/16

    반환된 출력에 표시된 VPC ID를 메모해 둡니다.

    { "Vpc": { "VpcId": "vpc-2f09a348", ... } }
  2. 이전 단계에서 메모해 둔 VPC ID를 사용하여 CIDR 블록이 10.0.1.0/24인 서브넷을 만듭니다.

    aws ec2 create-subnet --vpc-id vpc-2f09a348 --cidr-block 10.0.1.0/24
  3. CIDR 블록이 10.0.0.0/24인 VPC에 두 번째 서브넷을 만듭니다.

    aws ec2 create-subnet --vpc-id vpc-2f09a348 --cidr-block 10.0.0.0/24

2단계: 서브넷을 퍼블릭으로 만들기

VPC와 서브넷을 만든 후, VPC에 인터넷 게이트웨이를 연결하고, 사용자 지정 라우팅 테이블을 만들고, 서브넷이 인터넷 게이트웨이로 라우팅되도록 구성하여 서브넷 중 하나를 퍼블릭 서브넷으로 만들 수 있습니다.

서브넷을 퍼블릭 서브넷으로 만들려면

  1. 인터넷 게이트웨이 생성.

    aws ec2 create-internet-gateway

    반환된 출력에 표시된 인터넷 게이트웨이 ID를 메모해 둡니다.

    { "InternetGateway": { ... "InternetGatewayId": "igw-1ff7a07b", ... } }
  2. 이전 단계에서 메모해 둔 ID를 사용하여 VPC에 인터넷 게이트웨이를 연결합니다.

    aws ec2 attach-internet-gateway --vpc-id vpc-2f09a348 --internet-gateway-id igw-1ff7a07b
  3. VPC에 대해 사용자 지정 라우팅 테이블 만듭니다.

    aws ec2 create-route-table --vpc-id vpc-2f09a348

    반환된 출력에 표시된 라우팅 테이블 ID를 메모해 둡니다.

    { "RouteTable": { ... "RouteTableId": "rtb-c1c8faa6", ... } }
  4. 라우팅 테이블에 모든 트래픽(0.0.0.0/0)이 인터넷 게이트웨이를 가리키는 경로를 만듭니다.

    aws ec2 create-route --route-table-id rtb-c1c8faa6 --destination-cidr-block 0.0.0.0/0 --gateway-id igw-1ff7a07b
  5. 경로가 만들어졌고 활성 상태인지 확인하기 위해, 라우팅 테이블을 설명하고 그 결과를 볼 수 있습니다.

    aws ec2 describe-route-tables --route-table-id rtb-c1c8faa6
    { "RouteTables": [ { "Associations": [], "RouteTableId": "rtb-c1c8faa6", "VpcId": "vpc-2f09a348", "PropagatingVgws": [], "Tags": [], "Routes": [ { "GatewayId": "local", "DestinationCidrBlock": "10.0.0.0/16", "State": "active", "Origin": "CreateRouteTable" }, { "GatewayId": "igw-1ff7a07b", "DestinationCidrBlock": "0.0.0.0/0", "State": "active", "Origin": "CreateRoute" } ] } ] }
  6. 라우팅 테이블이 현재 서브넷과 연결되지 않았습니다. 서브넷에서 보내는 트래픽이 인터넷 게이트웨이로 라우팅되도록 라우팅 테이블을 VPC의 해당 서브넷과 연결해야 합니다. 먼저 describe-subnets 명령을 사용하여 서브넷 ID를 가져옵니다. --filter 옵션을 사용하여 새 VPC의 서브넷만 반환하고, --query 옵션을 사용하여 서브넷 ID와 그 CIDR 블록만 반환할 수 있습니다.

    aws ec2 describe-subnets --filters "Name=vpc-id,Values=vpc-2f09a348" --query 'Subnets[*].{ID:SubnetId,CIDR:CidrBlock}'
    [ { "CIDR": "10.0.1.0/24", "ID": "subnet-b46032ec" }, { "CIDR": "10.0.0.0/24", "ID": "subnet-a46032fc" } ]
  7. 사용자 지정 라우팅 테이블과 연결할 서브넷을 선택할 수 있습니다(예: subnet-b46032ec). 이 서브넷이 퍼블릭 서브넷이 됩니다.

    aws ec2 associate-route-table --subnet-id subnet-b46032ec --route-table-id rtb-c1c8faa6
  8. 또는 서브넷에서 시작된 인스턴스가 퍼블릭 IP 주소를 자동으로 받도록 서브넷의 퍼블릭 IP 주소 지정 동작을 수정할 수 있습니다. 그렇지 않은 경우, 시작 후 인터넷에서 연결할 수 있도록 탄력적 IP 주소를 인스턴스와 연결해야 합니다.

    aws ec2 modify-subnet-attribute --subnet-id subnet-b46032ec --map-public-ip-on-launch

3단계: 서브넷에서 인스턴스 시작

서브넷이 퍼블릭이고 인터넷을 통해 해당 서브넷의 인스턴스에 액세스할 수 있는지 테스트하려면, 퍼블릭 서브넷에서 인스턴스를 시작하고 여기에 연결합니다. 먼저 인스턴스와 연결할 보안 그룹과 인스턴스에 연결하는 데 사용할 키 페어를 만들어야 합니다. 보안 그룹에 대한 자세한 내용은 VPC의 보안 그룹을 참조하십시오. 키 페어에 대한 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서Amazon EC2 키 페어를 참조하십시오.

퍼블릭 서브넷에서 인스턴스를 시작하고 연결하려면

  1. 키 페어를 만든 다음 --query 옵션과 --output 텍스트 옵션을 사용하여 확장자가 .pem인 파일에 직접 프라이빗 키를 파이프합니다.

    aws ec2 create-key-pair --key-name MyKeyPair --query 'KeyMaterial' --output text > MyKeyPair.pem

    이 예에서는 Amazon Linux 인스턴스를 시작합니다. Linux 또는 Mac OS X 운영 체제에서 SSH 클라이언트를 사용하여 인스턴스에 연결하려면, 사용자만 프라이빗 키 파일을 읽을 수 있도록 다음 명령으로 해당 권한을 설정합니다.

    chmod 400 MyKeyPair.pem
  2. VPC에 보안 그룹을 만든 다음, 어디서나 SSH 액세스를 허용하는 규칙을 추가합니다.

    aws ec2 create-security-group --group-name SSHAccess --description "Security group for SSH access" --vpc-id vpc-2f09a348
    { "GroupId": "sg-e1fb8c9a" }
    aws ec2 authorize-security-group-ingress --group-id sg-e1fb8c9a --protocol tcp --port 22 --cidr 0.0.0.0/0

    참고

    0.0.0.0/0을 사용하면 모든 IPv4 주소에서 SSH를 사용하여 인스턴스에 액세스할 수 있습니다. 예제에서 잠시 사용하는 것은 괜찮지만 프로덕션 환경에서는 특정 IP 주소 또는 주소 범위에 대해서만 승인하십시오.

  3. 생성한 보안 그룹과 키 페어를 사용하여 퍼블릭 서브넷에서 인스턴스를 시작합니다. 출력에 표시된 인스턴스의 인스턴스 ID를 메모해 둡니다.

    aws ec2 run-instances --image-id ami-a4827dc9 --count 1 --instance-type t2.micro --key-name MyKeyPair --security-group-ids sg-e1fb8c9a --subnet-id subnet-b46032ec

    참고

    이 예에서 AMI는 미국 동부(버지니아 북부) 리전의 Amazon Linux AMI입니다. 다른 리전에 있는 경우, 해당 리전에 적합한 AMI의 AMI ID가 필요합니다. 자세한 내용은 Linux 인스턴스용 Amazon EC2 사용 설명서Finding a Linux AMI 단원을 참조하십시오.

  4. 인스턴스에 연결하려면 인스턴스가 running 상태에 있어야 합니다. 인스턴스를 설명하고 인스턴스의 상태를 확인한 다음, 해당 퍼블릭 IP 주소를 메모해 둡니다.

    aws ec2 describe-instances --instance-id i-0146854b7443af453
    { "Reservations": [ { ... "Instances": [ { ... "State": { "Code": 16, "Name": "running" }, ... "PublicIpAddress": "52.87.168.235", ... } ] } ] }
  5. 인스턴스가 실행 상태에 있는 경우, 다음 명령을 사용하여 Linux 또는 Mac OS X 컴퓨터에서 SSH 클라이언트를 통해 인스턴스에 연결할 수 있습니다.

    ssh -i "MyKeyPair.pem" ec2-user@52.87.168.235

    Windows 컴퓨터에서 연결하려는 경우, PuTTY를 사용하여 Windows에서 Linux 인스턴스에 연결 지침을 사용합니다.

4단계: 정리

인스턴스에 연결할 수 있는지 확인한 후, 인스턴스가 더 이상 필요하지 않은 경우 종료할 수 있습니다. 이렇게 하려면 terminate-instances 명령을 사용합니다. 이 예에서 만든 리소스를 삭제하려면 다음 명령을 나열된 순서대로 사용합니다.

  1. 보안 그룹 삭제:

    aws ec2 delete-security-group --group-id sg-e1fb8c9a
  2. 서브넷 삭제:

    aws ec2 delete-subnet --subnet-id subnet-b46032ec
    aws ec2 delete-subnet --subnet-id subnet-a46032fc
  3. 사용자 지정 라우팅 테이블 삭제:

    aws ec2 delete-route-table --route-table-id rtb-c1c8faa6
  4. VPC에서 인터넷 게이트웨이 분리:

    aws ec2 detach-internet-gateway --internet-gateway-id igw-1ff7a07b --vpc-id vpc-2f09a348
  5. 인터넷 게이트웨이 삭제:

    aws ec2 delete-internet-gateway --internet-gateway-id igw-1ff7a07b
  6. VPC 삭제:

    aws ec2 delete-vpc --vpc-id vpc-2f09a348