
목표
이 실습을 완료하면 다음을 할 수 있게 됩니다.
- Amazon VPC 생성
- 퍼블릭 및 프라이빗 서브넷 생성
- 인터넷 게이트웨이 생성
- 라우팅 테이블 구성 및 서브넷에 연결
- Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 생성하고 퍼블릭 액세스가 가능하도록 설정
- 프라이빗 서브넷에서 Amazon EC2 인스턴스 격리
- 보안 그룹을 생성하고 Amazon EC2 인스턴스에 할당
- AWS Systems Manager의 기능인 Session Manager 도구를 사용하여 Amazon EC2 인스턴스에 연결
과제 1: 특정 리전에 Amazon VPC 생성
이 과제에서는 AWS 클라우드에 새 Amazon VPC를 생성합니다.
추가 정보: Amazon VPC를 사용하면 AWS 클라우드에서 논리적으로 격리된 공간을 프로비저닝하고, 정의한 가상 네트워크에서 AWS 리소스를 시작할 수 있습니다. 자체 IP 주소 범위 선택, 서브넷 생성, 라우팅 테이블 및 네트워크 게이트웨이 구성 등 가상 네트워킹 환경을 완벽하게 제어할 수 있습니다. 또한 Amazon VPC의 향상된 보안 옵션을 사용하여 가상 네트워크의 Amazon EC2 인스턴스에 더 세분화된 액세스를 제공할 수 있습니다.

- AWS Management Console 상단의 검색 창에서 VPC를 검색하여 선택 한다.
- 왼쪽 탐색 창에서 Your VPCs를 선택합니다.
콘솔에 현재 사용 가능한 VPC 목록이 표시됩니다. 기본 VPC가 제공되므로 AWS 사용을 시작하자마자 리소스를 시작할 수 있습니다.

- Create VPC를 선택하고 다음을 구성합니다.
- Resources to create: VPC only를 선택합니다.
- Name tag - optional: Lab_VPC 를 입력 합니다.
- IPv4 CIDR: 10.0.0.0/16을 입력 합니다.
2. Create VPC를 선택합니다.
You successfully created vpc-xxxxxxxxxx / Lab VPC 메세지가 화면 상단에 표시됩니다.

VPC Details 페이지가 표시됩니다.
- Lab VPC의 상태를 확인합니다.
- State: Available
Lab VPC의 Classless Inter-Domain Routing(CIDR) 범위는 10.0.0.0/16이며, 10.0.x.x로 시작하는 모든 IP 주소가 포함됩니다. 이 범위에는 65,000개 이상의 주소가 포함됩니다. 나중에 이 주소를 별도의 서브넷으로 분할합니다.
- 같은 페이지에서 Actions 를 선택하고 Edit VPC settings를 선택합니다.

- DNS settings 섹션에서, Enable DNS hostnames를 선택합니다.
이 옵션은 VPC의 Amazon EC2 인스턴스에 다음과 같은 친숙한 도메인 이름 시스템(DNS) 이름을 할당합니다.
ec2-52-42-133-255.us-west-2.compute.amazonaws.com

- Save를 선택합니다.
축하합니다! VPC가 성공적으로 생성되었고, 이제 정의된 이 가상 네트워크에서 AWS 리소스를 시작할 수 있습니다.
과제 2: 퍼블릭 서브넷 및 프라이빗 서브넷 생성
이 과제에서는 Lab VPC에서 퍼블릭 서브넷과 프라이빗 서브넷을 생성합니다. VPC에 새 서브넷을 추가하려면 VPC의 범위에서 서브넷의 IPv4 CIDR 블록을 지정해야 합니다. 서브넷을 위치할 가용 영역을 지정할 수 있습니다. 동일한 가용 영역에 여러 서브넷을 위치할 수 있습니다

참고: 서브넷은 네트워크 내 IP 주소의 하위 범위입니다. 지정된 서브넷으로 AWS 리소스를 시작할 수 있습니다. 인터넷에 연결해야 하는 리소스에는 퍼블릭 서브넷을 사용하고, 인터넷과 격리된 상태를 유지해야 하는 리소스에는 프라이빗 서브넷을 사용합니다.
- 왼쪽 탐색 창에서 Subnets를 선택합니다.

- Create subnet을 선택하고 다음을 구성합니다.
- VPC ID: 드롭다운 메뉴에서 Lab VPC 를 선택합니다.

- Subnet name: Public Subne을 입력 합니다.
- Availability Zone: 목록에서 첫 번째 가용 영역을 선택합니다. No Preference를 선택하지 않습니다.
- IPv4 subnet CIDR block: 10.0.0.0/24를 입력 합니다.

- Create subnet을 선택합니다.

You have successfully created 1 subnet: subnet-xxxxxx 메세지가 화면 상단에 표시됩니다.
VPC의 CIDR 범위는 10.0.0.0/16이며, 여기에는 모든 10.0.x.x IP 주소가 포함됩니다. 방금 생성한 서브넷의 CIDR 범위는 10.0.0.0/24이며, 모든 10.0.0.x IP 주소가 포함되어 있습니다. 이러한 범위는 서로 비슷해 보이지만, 서브넷은 CIDR 범위가 /24이기 때문에 VPC보다 작습니다.
이제 서브넷 안에서 시작되는 모든 인스턴스에 퍼블릭 IP 주소가 자동으로 할당되도록 서브넷을 구성할 것입니다.
- Public Subnet 확인란을 선택합니다.
- Actions 를 선택하고 Edit subnet settings를 선택합니다.

- Auto-assign IP settings 섹션에서, Enable auto-assign public IPv4 address를 선택합니다.
- Save를 선택합니다.

과제 2.2: 프라이빗 서브넷 생성
프라이빗 서브넷은 인터넷과 격리된 상태를 유지해야 하는 리소스에 사용됩니다.
- Create subnet을 선택하고 다음을 구성합니다.
- VPC ID: 드롭다운 메뉴에서 Lab VPC 를 선택합니다.
- Subnet name: Private Subnet 을 입력 합니다.
- Availability Zone: 목록에서 첫 번째 가용 영역을 선택합니다. No Preference를 선택하지 마십시오.
- IPv4 subnet CIDR block: 10.0.2.0/23 을 입력 합니다.

- Create subnet을 선택합니다.

You have successfully created 1 subnet: subnet-xxxxxx 메세지가 화면 상단에 표시됩니다.
- 상태를 확인합니다.
예상 출력: 다음과 같이 표시됩니다.
- State: Available
참고: CIDR 블록 10.0.2.0/23에는 10.0.2.x 및 10.0.3.x로 시작하는 모든 IP 주소가 포함되어 있습니다. 인터넷에서 액세스할 수 있어야 하는 특별한 경우를 제외하고 프라이빗 서브넷은 대부분의 리소스를 프라이빗으로 유지해야 하기 때문에 크기가 퍼블릭 서브넷의 두 배입니다.
이제 VPC에 서브넷이 두 개 있습니다. 하지만 이러한 서브넷은 격리되어 있고 VPC 밖의 리소스와 통신할 수 없습니다. 다음으로는 인터넷 게이트웨이를 통해 인터넷에 연결되도록 퍼블릿 서브넷을 구성합니다.
축하합니다! Lab VPC에서 퍼블릭 서브넷과 프라이빗 서브넷을 생성했습니다.
과제 3: 인터넷 게이트웨이 생성
이 과제에서는 인터넷 트래픽이 퍼블릭 서브넷에 액세스할 수 있도록 인터넷 게이트웨이를 생성합니다. 그리고 VPC의 서브넷에 있는 인스턴스에서 인터넷에 액세스하는 권한이나 인터넷에서 해당 인스턴스에 액세스하는 권한을 부여하기 위해 인터넷 게이트웨이를 생성하여 VPC에 연결합니다. 그런 다음 인터넷 바운드 트래픽을 인터넷 게이트웨이로 보내는 경로를 서브넷의 라우팅 테이블에 추가합니다.
추가 정보: 인터넷 게이트웨이는 VPC 라우팅 테이블에서 인터넷 바운드 트래픽에 대한 대상을 제공하고, 퍼블릭 IPv4 주소가 배정된 인스턴스에 대해 네트워크 주소 변환(NAT)을 수행하는 두 가지 용도로 사용됩니다.
- 왼쪽 탐색 창에서 Internet gateways(인터넷 게이트웨이)를 선택합니다.

- Create internet gateway를 선택하고 다음을 구성합니다.
- Name tag: Lab IGW를 입력 합니다.

- Create internet gateway를 선택합니다.

The following internet gateway was created: igw-xxxxxx - Lab IGW. You can now attach to a VPC to enable the VPC to communicate with the internet. 메세지가 화면 상단에 표시됩니다.
이제 사용자의 Lab VPC에 인터넷 게이트웨이를 연결할 수 있습니다.
- 같은 페이지에서 Actions 를 선택하고 Attach to VPC를 선택합니다.

- Available VPCs에서 드롭다운 메뉴를 통해 Lab VPC를 선택합니다.
- Attach internet gateway를 선택합니다.

Internet gateway igw-xxxxx successfully attached to vpc-xxxxx 메세지가 화면 상단에 표시됩니다.

- 상태를 확인합니다.
예상 출력: 다음과 같이 표시됩니다.
- State: Attached
이제 Lab VPC에 인터넷 게이트웨이가 연결되었습니다. 인터넷 게이트웨이를 생성하여 VPC에 연결했어도 퍼블릭 서브넷 라우팅 테이블도 인터넷 게이트웨이를 사용하도록 구성해야 합니다.
축하합니다! 인터넷 트래픽이 퍼블릭 서브넷에 액세스할 수 있도록 인터넷 게이트웨이를 생성했습니다.
과제 4: 퍼블릭 서브넷의 인터넷 트래픽을 인터넷 게이트웨이로 라우팅
이 과제에서는 라우팅 테이블을 생성하고 인터넷 바운드 트래픽을 인터넷 게이트웨이로 보내는 경로를 라우팅 테이블에 추가한 다음 퍼블릭 서브넷을 라우팅 테이블과 연결합니다. VPC에 있는 각 서브넷은 라우팅 테이블에 연결되어 있어야 합니다. 이 테이블이 서브넷에 대한 라우팅을 제어합니다. 서브넷은 한 번에 하나의 라우팅 테이블에만 연결할 수 있지만, 여러 서브넷을 같은 라우팅 테이블에 연결할 수 있습니다.
추가 정보: 라우팅 테이블은 네트워크 트래픽이 전달되는 위치를 결정하는 데 사용되는 경로라는 규칙 집합을 포함합니다. 인터넷 게이트웨이를 사용하려면 인터넷 바운드 트래픽을 인터넷 게이트웨이로 보내는 경로가 서브넷의 라우팅 테이블에 포함되어야 합니다. 라우팅 테이블에 명시적으로 알려지지 않은 모든 대상으로 경로의 범위를 지정하거나(IPv4는 0.0.0.0/0, IPv6는 ::/0) 이보다 좁은 범위의 IP 주소로 경로의 범위를 지정할 수 있습니다. 인터넷 게이트웨이로 가는 경로가 있는 라우팅 테이블에 연결된 서브넷을 퍼블릭 서브넷이라고 합니다.
- 왼쪽 탐색 창에서 Route Tables를 선택합니다.

현재 Lab VPC와 연결된 기본 라우팅 테이블이 하나 있습니다. 이 라우팅 테이블은 트래픽을 로컬로 라우팅합니다. 이제 퍼블릭 트래픽을 인터넷 게이트웨이로 라우팅하는 추가 라우팅 테이블을 생성합니다.
- Create route table을 선택하고 다음을 구성합니다.
- Name - optional: Public Route Table을 입력 합니다.
- VPC: 드롭다운 메뉴에서 Lab VPC를 선택합니다.

- Create route table을 선택합니다.

Route table rtb-xxxxxxx | Public Route Table was created successfully. 메세지가 화면 상단에 표시됩니다.
- 페이지 하단에서 Routes 탭을 선택합니다.

참고: 라우팅 테이블에는 10.0.0.0/16 네트워크 내의 트래픽이 네트워크 내에서 흐르도록 허용하는 경로가 하나 있지만 이 경로는 트래픽을 네트워크 외부로 라우팅하지는 않습니다.
이제 새 경로를 추가하여 퍼블릭 트래픽을 허용합니다.
- Edit routes를 선택합니다.
- Add route를 선택하고 다음을 구성합니다.
- Destination: 0.0.0.0/0 을 입력 합니다.
- Target: 드롭다운 메뉴에서 Internet Gateway를 선택한 다음 표시되는 인터넷 게이트웨이 ID를 선택합니다.

- Save changes를 선택합니다.

Updated routes for rtb-xxxxxxx / Public Route Table successfully 메세지가 화면 상단에 표시됩니다.
- Subnet associations 탭을 선택합니다.

- Edit subnet associations를 선택합니다.
- Public Subnet을 선택합니다.

- Save associations를 선택합니다.

A You have successfully updated subnet associations for rtb-xxxxxxx / Public Route Table. 메세지가 화면 상단에 표시됩니다.
참고: 이 서브넷은 인터넷 게이트웨이를 통과하는 인터넷으로의 경로를 포함하므로 이제 퍼블릭 상태입니다.
축하합니다! 라우팅 테이블을 구성했습니다.
과제 5: 퍼블릭 보안 그룹 생성
이 과제에서는 사용자들이 Amazon EC2 인스턴스에 액세스할 수 있도록 보안 그룹을 생성합니다. VPC의 보안 그룹은 Amazon EC2 인스턴스에 허용되는 트래픽을 지정합니다.
추가 정보: Amazon EC2 보안 그룹을 사용하면 Amazon VPC 내 인스턴스의 보안을 유지할 수 있습니다. VPC의 보안 그룹을 통해 각 Amazon EC2 인스턴스에 허용되는 인바운드 및 아웃바운드 네트워크 트래픽을 지정할 수 있습니다. 인스턴스에 명시적으로 허용되지 않은 트래픽은 자동으로 거부됩니다.
보안: 웹 트래픽 보안을 강화하려면 HTTPS 프로토콜을 사용하는 것이 좋습니다. 그러나 이 실습에서는 과제를 쉽게 진행할 수 있도록 HTTP 프로토콜만 사용합니다.
- 왼쪽 탐색 창에서 Security groups를 선택합니다.

- Create security group을 선택하고 다음을 구성합니다.
- Security group name: Public SG를 입력 합니다.
를 입력합니다. - Description: Allows incoming traffic to public instance를 입력 합니다. .
- VPC: 드롭다운 메뉴에서 Lab VPC를 선택합니다.

- Inbound rules섹션에서 다음을 수행합니다.Add rule
- Type: 드롭다운 메뉴에서 HTTP를 선택합니다.
- Source: 드롭다운 메뉴에서 Anywhere-IPv4를 선택합니다.

- Tags - optional 섹션에서 Add new tag를 선택하고 다음을 구성합니다.
- Key: Name을 입력 합니다.
- Value: Public SG를 입력 합니다.

- Create security group을 선택합니다.

Security group (sg-xxxxxxx | Public SG) was created successfully 메세지가 화면 상단에 표시됩니다.
축하합니다! HTTP 트래픽을 허용하는 보안 그룹을 성공적으로 생성했습니다. 이 보안 그룹은 퍼블릭 서브넷에서 Amazon EC2 인스턴스를 시작하는 다음 과제에 필요합니다.
과제 6: 퍼블릭 서브넷에서 Amazon EC2 인스턴스 시작
이 과제에서는 퍼블릭 서브넷에서 Amazon EC2 인스턴스를 시작합니다. 인터넷을 통한 IPv4 통신을 활성화하려면 인스턴스에 해당 인스턴스의 프라이빗 IPv4 주소와 연결된 퍼블릭 IPv4 주소가 있어야 합니다. 기본적으로 인스턴스는 VPC와 서브넷 안에서 정의된 프라이빗(내부) IP 주소 공간만 인식합니다.

추가 정보: 논리적으로 생성된 인터넷 게이트웨이는 인스턴스를 위한 일대일 NAT을 제공하므로 트래픽이 VPC 서브넷에서 나가 인터넷으로 갈 때 응답 주소 필드는 프라이빗 IP 주소가 아니라 인스턴스의 퍼블릭 IPv4 주소 또는 탄력적 IP 주소로 설정됩니다.
- AWS Management Console 상단의 검색 창에서 EC2 를 검색하여 선택 합니다.
- 왼쪽의 콘솔 탐색 메뉴에서 EC2 Dashboard를 선택합니다.
- Launch instances 섹션에서 Launch instances를 선택합니다.

과제 6.2: 인스턴스에 태그 추가
태그는 AWS 리소스를 목적, 소유자, 환경에 따라서 카테고리로 나눌 수 있게 해줍니다. 태그는 대부분의 AWS 클라우드 리소스에 적용 가능합니다. 각 태그는 키와 값으로 구성됩니다. 이 과제에서는 키와 값을 모두 정의합니다. 태그는 같은 유형의 리소스를 여러 개 관리해야 할 때 사용할 수 있습니다. 적용한 태그를 이용해서 특정 리소스를 빠르게 검색하고 식별할 수 있습니다.
이번 과제에서 EC2 인스턴스에 태그를 추가합니다.
- Name and tags 섹션으로 이동합니다.
- Name 필드에 Public Instance를 입력 합니다.

과제 6.3: AMI 선택
이 과제에서는 Amazon Machine Image(AMI)를 선택합니다. AMI는 인스턴스를 시작하기 위한 디스크 볼륨 사본을 포함합니다.
- Application and OS Images (Amazon machine Image) 섹션을 찾습니다.
- Amazon Linux 운영 체제가 선택되었는지 확인합니다.
- 드롭다운 메뉴에서 Amazon Linux 2023 AMI가 선택되어 있는지 확인합니다.

과제 6.4: Amazon EC2 인스턴스 유형 선택
각 인스턴스 유형은 가상 CPU(vCPU), 메모리, 디스크 스토리지, 네트워크 성능의 조합으로 할당되어 있습니다.
이 실습은 t3.micro 인스턴스 유형을 사용합니다. 이 인스턴스 유형은 2 vCPU와 1 GiB 메모리를 가지고 있습니다.
- Instance type 섹션을 찾습니다.
- Instance type 드롭다운 메뉴에서 t3.micro를 선택합니다. (반드시 t3.micro를 선택해야 합니다. 다른 인스턴스 유형 선택 시, 본 실습에서는 권한 에러가 납니다.)

과제 6.5: 로그인용 키 페어 구성
- Key pair (login) 섹션을 찾습니다.
- Key pair name - required 드롭다운 메뉴에서 Proceed without a key pair (Not recommended) 를 선택합니다.

과제 6.6: 인스턴스 네트워킹 구성
- Network settings 섹션을 찾습니다.
- Edit을 선택합니다.
- 아래와 같이 설정합니다.
- VPC - required: Lab VPC를 선택합니다.
- Subnet: Public Subnet를 선택합니다.
- Auto-assign public IP: Enable를 선택합니다.

과제 6.7: 인스턴스 보안 그룹 구성
보안 그룹을 이용해 탄력적 네트워크 인터페이스로 향하는 인바운드/아웃바운드 트래픽을 허용하거나 거부하도록 정의할 수 있습니다. 네트워크 인터페이스는 Amazon EC2 인스턴스에 연결됩니다. 80번 포트는 HTTP 트래픽의 기본 포트이며, 이 실습에서 시작할 웹서버가 정상 작동하기 위해 필요합니다.
- Firewall (security groups) 섹션에서, Select existing security group을 선택합니다.
- Common security groups 드롭다운 메뉴에서 이름이 Public SG와 같은 이름을 가진 보안 그룹을 선택합니다.

과제 6.8: 스토리지 추가
Configure storage 섹션에서 인스턴스의 스토리지 옵션을 지정하거나 수정하고 인스턴스에 연결될 추가 Amazon Elastic Block Store(Amazon EBS) 디스크 볼륨을 추가할 수 있습니다. EBS 볼륨의 크기와 성능을 모두 구성할 수 있습니다.
이 실습에서는 기본적 스토리지 설정으로 진행합니다. 변경이 필요하지 않습니다.

과제 6.9: IAM 인스턴스 프로파일 구성
- Advanced details 섹션으로 이동해서 확장합니다.
- IAM instance profile 드롭다운 메뉴에서 EC2InstProfile 역할을 선택합니다.

과제 6.10: 사용자 데이터 구성
참고: 새 인스턴스를 설치하고 웹 서버로 구성하기 위해 인스턴스 시작 시 자동 실행되는 사용자 데이터 스크립트를 입력합니다.
- User Data - optional 항목에 다음을 붙여 넣습니다.
#!/bin/bash # To connect to your EC2 instance and install the Apache web server with PHP yum update -y yum install -y httpd php8.1 systemctl enable httpd.service systemctl start httpd cd /var/www/html wget https://us-west-2-tcprod.s3.amazonaws.com/courses/ILT-TF-200-ARCHIT/v7.9.2.prod-0537f301/lab-2-VPC/scripts/instanceData.zip unzip instanceData.zip |

- Summary 섹션을 찾습니다.
- Launch instance를 선택합니다.

Launch an instance 페이지가 표시됩니다.
이제 Amazon EC2 인스턴스가 시작되었고 지정한 대로 구성되었습니다.
- View all instances를 선택합니다.
Amazon EC2 콘솔이 표시됩니다.
- 새로 고침 버튼 을 클릭하고 Public Instance의 Instance state가 Running으로 표시되고 상태 검사가 3/3 checks passed 로 표시될 때까지 기다립니다.

참고: 이름이 Public Instance Amazon EC2 인스턴스는 Pending(대기 중) 상태로 시작됩니다. 인스턴스의 부팅이 완료되면 인스턴스의 상태가 Running으로 바뀝니다.
과제 7: HTTP를 통해 퍼블릭 인스턴스에 연결
이 과제에서는 퍼블릭 인스턴스에 연결하고 기본 Apache 웹 서버 페이지를 시작합니다. 앞서 추가한 HTTP 액세스(포트 80)를 허용하는 인바운드 규칙은 Apache를 실행하는 웹 서버 연결을 허용합니다.
- 왼쪽 탐색 창에서 Instances를 선택합니다.
- Public Instance를 선택합니다.
- 아래쪽 창에서 Networking 탭을 선택합니다.

- Public IPv4 DNS로 이동합니다.
- public DNS 값을 복사합니다. open address 를 선택하지 마십시오. 이 실습 환경에서는 HTTPS이 설정되어 있지 않습니다.

- 새 웹 브라우저 탭을 열고 Public Instance의 public DNS 값을 URL 주소 표시줄에 붙여 넣습니다.
Amazon EC2 인스턴스에서 호스트되는 웹 페이지가 표시됩니다. 이 페이지에는 인스턴스 ID와 Amazon EC2 인스턴스가 있는 AWS 가용 영역이 표시됩니다.

과제 8: Session Manager를 통해 퍼블릭 서브넷의 Amazon EC2 인스턴스에 연결
이 과제에서는 Session Manager를 사용하여 퍼블릭 서브넷에 있는 Amazon EC2 인스턴스에 연결합니다.
추가 정보: Session Manager는 대화형 원클릭 브라우저 기반 셸 또는 AWS Command Line Interface(AWS CLI)를 통해 Amazon EC2 인스턴스를 관리할 수 있는 완전관리형 AWS Systems Manager 기능입니다. Session Manager를 사용하면 계정에서 Amazon EC2 인스턴스로 세션을 시작할 수 있습니다. 세션이 시작된 후 다른 연결 유형을 통해 실행하는 것처럼 bash 명령을 실행할 수 있습니다.
- AWS Management Console 상단의 검색 창에서 EC2를 검색하여 선택합니다.
- 왼쪽 탐색 창에서 Instances를 선택합니다.
- Public Instance 를 선택 후 Connect를 선택합니다.

Connect to instance 페이지가 표시됩니다.
- Session Manager 탭을 선택합니다.
추가 정보: Session Manager를 사용하면 방화벽 또는 Amazon VPC 보안 그룹에서 SSH 포트를 노출하지 않고도 Amazon EC2 인스턴스에 연결할 수 있습니다. 자세한 내용은 AWS Systems Manager Session Manager를 참조하십시오.
- Connect를 선택합니다.

Public Instance로 연결되는 새 브라우저 탭 또는 창이 열립니다.
- 명령: 다음 명령을 입력하여 홈 디렉터리(/home/ssm-user/)로 변경하고 cURL 명령을 사용하여 웹 연결을 테스트합니다.
cd ~ curl -I https://aws.amazon.com/training/ |

과제 9: NAT 게이트웨이를 생성하고 프라이빗 서브넷에서 라우팅 구성
이 과제에서는 NAT 게이트웨이를 생성한 다음 라우팅 테이블을 생성하여 비로컬 트래픽을 NAT 게이트웨이로 라우팅합니다. 그런 다음 라우팅 테이블을 프라이빗 서브넷에 연결합니다. NAT 게이트웨이를 사용하여 프라이빗 서브넷의 인스턴스를 인터넷 또는 기타 AWS 서비스에 연결하는 한편, 인터넷에서 해당 인스턴스와의 연결을 시작하지 못하도록 할 수 있습니다.
참고: NAT 게이트웨이를 생성하려면 NAT 게이트웨이가 속할 퍼블릭 서브넷을 지정해야 합니다. NAT 게이트웨이를 생성할 때 NAT 게이트웨이와 연결할 탄력적 IP 주소도 지정해야 합니다. 탄력적 IP 주소는 NAT 게이트웨이에 연결한 후 변경할 수 없습니다. NAT 게이트웨이를 생성한 후에는 인터넷 바운드 트래픽이 NAT 게이트웨이를 가리키도록 하나 이상의 프라이빗 서브넷과 연결된 라우팅 테이블을 업데이트해야 합니다. 그러면 프라이빗 서브넷의 인스턴스가 인터넷과 통신할 수 있습니다.
- AWS 관리 콘솔 브라우저 탭으로 돌아갑니다.
- AWS 관리 콘솔 상단의 검색 상자에서 VPC를 검색하여 선택합니다.
- 왼쪽 탐색 창에서 NAT gateways를 선택합니다.

- Create NAT gateway를 선택하고 다음을 구성합니다.
- Name - optional: Lab NGW를 입력 합니다.
- Subnet: 드롭다운 메뉴에서 Public Subnet 을 선택합니다.
- Allocate Elastic IP를 선택합니다.

- Create NAT gateway를 선택합니다.

NAT gateway nat-xxxxxxx | Lab NGW was created successfully. 메세지가 화면 상단에 표시됩니다.
다음 단계에서는 비로컬 트래픽을 NAT 게이트웨이로 리디렉션하는 프라이빗 서브넷의 새 라우팅 테이블을 생성합니다.
- 왼쪽 탐색 창에서 Route tables를 선택합니다.
- Create route table을 선택하고 다음을 구성합니다.
- Name - optional: Private Route Table를 입력 한다.
- VPC: 드롭다운 메뉴에서 Lab VPC를 선택합니다.

- Create route table을 선택합니다.

Route table rtb-xxxxxxx | Private Route Table was created successfully. 메세지가 화면 상단에 표시됩니다.
프라이빗 라우팅 테이블이 생성되고 프라이빗 라우팅 테이블의 세부 정보 페이지가 표시됩니다.
- Routes 탭을 선택합니다.
현재는 모든 트래픽을 local로 보내는 경로 하나가 있습니다.
이제 NAT 게이트웨이를 통해 인터넷 바운드 트래픽을 보내는 경로를 추가합니다.
- Edit routes를 선택합니다.
- Add route 버튼을 선택합니다.
- Destination: 0.0.0.0/0를 입력 합니다.
- Target: 드롭다운 메뉴에서 NAT Gateway를 선택한 다음 표시되는 NAT 게이트웨이 ID를 선택합니다.

- Save changes를 선택합니다.

Updated routes for rtb-xxxxxxx / Private Route Table successfully 메세지가 화면 상단에 표시됩니다.
- Subnet associations 탭을 선택합니다.
- Edit subnet associations를 선택합니다.
- Private Subnet을 선택합니다.

- Save associations를 선택합니다.

You have successfully updated subnet associations for rtb-xxxxxxx / Private Route Table. 메세지가 화면 상단에 표시됩니다.
이 경로는 프라이빗 서브넷의 인터넷 바운드 트래픽을 동일한 가용 영역에 있는 NAT 게이트웨이로 보냅니다.
축하합니다! 성공적으로 NAT 게이트웨이를 생성하고 프라이빗 라우팅 테이블을 구성했습니다.
과제 10: 프라이빗 리소스용 보안 그룹 생성
이 과제에서는 퍼블릭 보안 그룹에 할당된 리소스에서 들어오는 HTTPS 트래픽을 허용하는 보안 그룹을 생성합니다. 멀티 티어 아키텍처에서 프라이빗 서브넷의 리소스는 인터넷에서 직접 액세스할 수 없어야 하지만, 공개적으로 액세스할 수 있는 리소스에서 프라이빗 리소스로 웹 트래픽을 라우팅하는 일반적인 사용 사례이기도 합니다.
추가 정보: 보안 그룹을 규칙의 소스로 지정하면 지정된 프로토콜과 포트의 경우, 소스 보안 그룹과 연결된 네트워크 인터페이스에서 오는 트래픽이 허용됩니다. 들어오는 트래픽은 퍼블릭 IP 주소 또는 탄력적 IP 주소가 아닌 원본 보안 그룹과 연결된 네트워크 인터페이스의 프라이빗 IP 주소를 기반으로 허용됩니다. 보안 그룹을 원본으로 추가해도 원본 보안 그룹의 규칙이 추가되지는 않습니다.
- 왼쪽 탐색 창에서 Security groups를 선택합니다.
- Create security group을 선택하고 다음을 구성합니다.
- Security group name: Private SG를 입력 한다.
- Description: Allows incoming traffic to private instance using public security group를 입력 한다.
- VPC: 드롭다운 메뉴에서 Lab VPC를 선택합니다.

- Inbound rules섹션에서 다음을 수행합니다.Add rule
- Type: HTTP를 선택합니다.
- Source: Custom을 선택합니다.
- Custom 오른쪽에 있는 상자에 sg를 입력 합니다.
- 표시되는 목록에서 Public SG를 선택합니다.

- Tags - optional 섹션에서 Add new tag를 선택하고 다음을 구성합니다.
- Key: Name을 입력 합니다.
- Value: Private SG를 입력 합니다.

- Create security group을 선택합니다.

Security group (sg-xxxxxxx | Private SG) was created successfully 메세지가 화면 상단에 표시됩니다.
과제 11: 프라이빗 서브넷에서 Amazon EC2 인스턴스 시작
이 과제에서는 프라이빗 서브넷에서 Amazon EC2 인스턴스를 시작합니다.
추가 정보: 프라이빗 인스턴스는 NAT 게이트웨이 또는 NAT 인스턴스를 통해 트래픽을 라우팅하여 인터넷에 액세스할 수 있습니다. 프라이빗 인스턴스는 인터넷을 통과하기 위해 NAT 게이트웨이 또는 NAT 인스턴스의 퍼블릭 IP 주소를 사용합니다. NAT 게이트웨이 또는 NAT 인스턴스는 아웃바운드 통신을 허용하지만, 인터넷상에서 시스템이 프라이빗 주소가 지정된 인스턴스에 연결을 시작하는 것은 허용하지 않습니다.
- AWS Management Console 상단의 검색 창에서 EC2를 검색하여 선택 합니다.
Amazon EC2 콘솔이 표시됩니다.
과제 11.1: 인스턴스 구성 시작
- 왼쪽의 콘솔 탐색 메뉴에서 EC2 Dashboard를 선택합니다.
- Launch instance 섹션에서 Launch instance를 선택합니다.
Launch an instance 페이지가 표시됩니다.
과제 11.2: 인스턴스에 태그 추가
이번 과제에서 EC2 인스턴스에 태그를 추가합니다.
- Name and tags 섹션으로 이동합니다.
- Name 필드에 Private Instance를 입력 합니다.

과제 11.3: AMI 선택
이 과제에서 Amazon Machine Image(AMI)를 선택합니다 AMI는 인스턴스를 시작하기 위한 디스크 볼륨 사본을 포함합니다.
- Application and OS Images (Amazon machine Image) 섹션을 찾습니다.
- Amazon Linux 운영 체제가 선택되었는지 확인합니다.
- 드롭다운 메뉴에서 Amazon Linux 2023 AMI가 선택되어 있는지 확인합니다.

과제 11.4: Amazon EC2 인스턴스 유형 선택
각 인스턴스 유형은 vCPU, 메모리, 디스크 스토리지, 네트워크 성능의 조합으로 할당되어 있습니다.
이 실습은 t3.micro 인스턴스 유형을 사용합니다. 이 인스턴스 유형은 2 vCPU와 1 GiB 메모리를 가지고 있습니다.
- Instance type 섹션을 찾습니다.
- Instance type 드롭다운 메뉴에서 t3.micro를 선택합니다. (반드시 t3.micro를 선택해야 합니다. 다른 인스턴스 유형 선택 시, 본 실습에서는 권한 에러가 납니다.)

과제 11.5: 로그인용 키 페어 구성
- Key pair (login) 섹션을 찾습니다.
- Key pair name - required 드롭다운 메뉴에서 Proceed without a key pair (Not recommended) 를 선택합니다.

과제 11.6: 인스턴스 네트워킹 구성
- Network settings 섹션을 찾습니다.
- Edit를 선택합니다.
- 드롭다운 메뉴에서 다음 설정을 구성합니다.
- VPC - required: Lab VPC를 선택합니다.
- Subnet: Private Subnet을 선택합니다.
- Auto-assign public IP: Disable을 선택합니다.

과제 11.7: 인스턴스 보안 그룹 구성
- Firewall (security groups) 섹션에서, Select existing security group 버튼을 선택합니다.
- Common security groups 드롭다운 메뉴에서 Private SG와 같은 이름을 가진 보안 그룹을 선택합니다.

과제 11.8: 스토리지 추가
Configure storage 섹션에서 인스턴스의 스토리지 옵션을 지정하거나 수정하고 인스턴스에 연결될 추가 Amazon Elastic Block Store(Amazon EBS) 디스크 볼륨을 추가할 수 있습니다. EBS 볼륨의 크기와 성능을 모두 구성할 수 있습니다.
이 실습에서는 기본적 스토리지 설정으로 진행합니다. 변경이 필요하지 않습니다.

과제 11.9: IAM 인스턴스 프로파일 구성
- Advanced details 섹션으로 이동해서 확장합니다.
- IAM instance profile 드롭다운 메뉴에서 EC2InstProfile과 같은 이름을 가진 역할을 선택합니다.

과제 11.10: 사용자 데이터 구성
참고: 새 인스턴스를 설치하고 웹 서버로 구성하기 위해 인스턴스 시작 시 자동 실행되는 사용자 데이터 스크립트를 입력합니다.
- User data - optional 섹션에 다음을 복사하여 붙여넣습니다.
#!/bin/bash # To connect to your EC2 instance and install the Apache web server with PHP yum update -y yum install -y httpd php8.1 systemctl enable httpd.service systemctl start httpd cd /var/www/html wget https://us-west-2-tcprod.s3.amazonaws.com/courses/ILT-TF-200-ARCHIT/v7.9.2.prod-0537f301/lab-2-VPC/scripts/instanceData.zip unzip instanceData.zip |
과제 11.11: 인스턴스 시작 검토
시작할 Amazon EC2 인스턴스가 제대로 설정되었는지 확인합니다.
- Summary 섹션을 찾습니다.
- Launch instance를 선택합니다.

Launch an instance 페이지가 표시됩니다.
이제 Amazon EC2 인스턴스가 시작되었고 지정한 대로 구성되었습니다.
- View all instances를 선택합니다.
Amazon EC2 콘솔이 표시됩니다.
Private Instance Amazon EC2 인스턴스는 pending 상태로 시작됩니다. 인스턴스의 부팅이 완료되면 인스턴스의 상태가 Running로 변경됩니다.
- 새로 고침 버튼 을 간간히 누르며 Public Instance의 Instance state가 Running으로 바뀝니다.

이 과제에서는 Session Manager를 사용하여 프라이빗 서브넷에 있는 Amazon EC2 인스턴스에 연결합니다.
- 왼쪽 탐색 창에서 Instances를 선택합니다.
- Private Instance 를 선택 후 Connect를 선택합니다.
Connect to instance 페이지가 표시됩니다.
- Session Manager 탭을 선택합니다.
- Connect를 선택합니다.

프라이빗 인스턴스로 연결되는 새로운 브라우저 탭 또는 창이 열립니다.
참고: Session Manager 서비스는 실시간으로 업데이트되지 않습니다. 방금 시작한 Amazon EC2 인스턴스에 연결할 때 Session Manager 오류가 발생하는 경우 인스턴스가 시작되고 상태 확인을 통과하여 Session Manager 서비스와 통신할 때까지 몇 분 정도 기다린 다음 세션 연결을 다시 열어 보십시오.
- 명령: 다음 명령을 입력하여 홈 디렉터리(/home/ssm-user/)로 변경하고 cURL 명령을 사용하여 웹 연결을 테스트합니다.
cd ~ curl -I https://aws.amazon.com/training/ |

'아마존 클라우드' 카테고리의 다른 글
Amazon VPC 에 Aurora 데이터베이스 계층 생성하기 (58) | 2025.03.27 |
---|---|
[AWS] WAF 침입 탐지 및 보호 (40) | 2025.03.26 |
[아마존 클라우드] Amazon VPC에서 Auto Scaling 구성하 (61) | 2025.03.26 |
[AWS] Role Assumption Challenge (32) | 2025.03.23 |
[AWS] Kubenetis Cluster AWS 클라우드에 구축 하기. (102) | 2024.02.28 |