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

AWS CLI를 사용하여 Amazon VPC 시작하기

이 튜토리얼에서는 AWS Command Line Interface(AWS Command Line Interface(AWS CLI)AWS AWS CLI)를 사용하여 가상 프라이빗 클라우드(VPC)를 생성하는 방법을 안내합니다. 퍼블릭 및 프라이빗 서브넷이 포함된 VPC를 설정하고, 인터넷 연결을 구성하고, EC2 인스턴스를 배포하여 일반적인 웹 애플리케이션 아키텍처를 시연하는 방법을 알아봅니다.

사전 조건

이 튜토리얼을 시작하기 전에 다음 사항을 확인해야 합니다.

  1. AWS CLI. 설치해야 하는 경우 AWS CLI 설치 안내서를 따르세요.

  2. 적절한 자격 증명으로 AWS CLI 구성. 자격 증명을 아직 설정하지 않은 경우 aws configure를 실행합니다.

  3. 네트워킹 개념에 대한 기본적인 이해.

  4. AWS 계정에서 VPC 리소스를 생성하고 관리하는 Amazon VPC용 자격 증명 및 액세스 관리.

비용 고려 사항

이 튜토리얼에서는 계정에 비용이 발생할 수 있는 AWS 리소스를 생성합니다. 기본 비용은 NAT 게이트웨이(시간당 0.045 USD + 데이터 처리 비용) 및 EC2 인스턴스(t2.micro, 시간당 약 0.0116 USD)에서 발생합니다. 이 튜토리얼을 1시간 안에 완료하고 모든 리소스를 정리하면 총 비용은 약 0.07 USD가 됩니다. 개발 환경에서 비용을 최적화하려면 NAT 게이트웨이 대신 NAT 인스턴스를 사용하는 것이 좋으며, 비용을 크게 줄일 수 있습니다.

계속하기 전에 AWS CLI가 올바르게 구성되었는지 확인해 보겠습니다.

aws configure list

AWS 액세스 키, 비밀 키 및 기본 리전이 표시되어야 합니다. 또한 VPC 리소스를 생성하는 데 필요한 권한이 있는지 확인합니다.

aws sts get-caller-identity

이 명령을 실행하면 AWS 계정 ID, 사용자 ID 및 ARN이 표시되어 자격 증명이 유효한지 확인합니다.

VPC 생성

가상 프라이빗 클라우드(VPC)는 AWS 계정 전용 가상 네트워크입니다. 이 섹션에서는 최대 65,536개의 IP 주소를 제공하는 CIDR 블록이 10.0.0.0/16인 VPC를 생성합니다.

VPC 생성

다음 명령을 실행하면 새 VPC를 생성되고 이름 태그가 할당됩니다.

aws ec2 create-vpc --cidr-block 10.0.0.0/16 --tag-specifications 'ResourceType=vpc,Tags=[{Key=Name,Value=MyVPC}]'

출력에서 VPC ID를 확인합니다. 후속 명령에 필요합니다. 이 튜토리얼에서는 "vpc-0123456789abcdef0"을 VPC ID 예시로 사용합니다. 모든 명령에서 이를 실제 VPC ID로 바꾸세요.

DNS 지원 및 호스트 이름 활성화

기본적으로 DNS 확인 및 DNS 호스트 이름은 새 VPC에서 비활성화됩니다. 이러한 기능을 활성화하면 VPC의 인스턴스가 도메인 이름을 확인할 수 있습니다.

aws ec2 modify-vpc-attribute --vpc-id vpc-0123456789abcdef0 --enable-dns-support aws ec2 modify-vpc-attribute --vpc-id vpc-0123456789abcdef0 --enable-dns-hostnames

이러한 명령은 성공 시 출력을 생성하지 않습니다. 이제 VPC에 DNS 지원 및 호스트 이름 확인이 활성화됩니다.

서브넷 생성

서브넷은 격리된 리소스 그룹을 배치할 수 있는 VPC IP 주소 범위의 세그먼트입니다. 이 섹션에서는 고가용성을 위해 2개의 가용 영역에 퍼블릭 및 프라이빗 서브넷을 생성합니다.

사용 가능한 가용 영역 가져오기

먼저 해당 리전에서 사용 가능한 가용 영역을 검색합니다.

aws ec2 describe-availability-zones

이 튜토리얼에서는 처음 2개의 가용 영역을 사용합니다. 출력에서 이름을 기록합니다(예: "us-east-1a" 및 "us-east-1b").

퍼블릭 서브넷 생성

퍼블릭 서브넷은 웹 서버와 같이 인터넷에서 액세스해야 하는 리소스에 사용됩니다.

aws ec2 create-subnet \ --vpc-id vpc-0123456789abcdef0 \ --cidr-block 10.0.0.0/24 \ --availability-zone us-east-1a \ --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=Public-Subnet-AZ1}]'

출력에서 서브넷 ID를 기록합니다. 이 튜토리얼에서는 "subnet-0123456789abcdef0"을 첫 번째 퍼블릭 서브넷의 예시로 사용합니다.

aws ec2 create-subnet \ --vpc-id vpc-0123456789abcdef0 \ --cidr-block 10.0.1.0/24 \ --availability-zone us-east-1b \ --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=Public-Subnet-AZ2}]'

출력에서 서브넷 ID를 기록합니다. 이 튜토리얼에서는 "subnet-0123456789abcdef1"을 두 번째 퍼블릭 서브넷의 예시로 사용합니다.

프라이빗 서브넷 만들기

프라이빗 서브넷은 데이터베이스와 같이 인터넷에서 직접 액세스할 수 없어야 하는 리소스에 사용됩니다.

aws ec2 create-subnet \ --vpc-id vpc-0123456789abcdef0 \ --cidr-block 10.0.2.0/24 \ --availability-zone us-east-1a \ --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=Private-Subnet-AZ1}]'

출력에서 서브넷 ID를 기록합니다. 이 튜토리얼에서는 "subnet-0123456789abcdef2"를 첫 번째 프라이빗 서브넷의 예시로 사용합니다.

aws ec2 create-subnet \ --vpc-id vpc-0123456789abcdef0 \ --cidr-block 10.0.3.0/24 \ --availability-zone us-east-1b \ --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=Private-Subnet-AZ2}]'

출력에서 서브넷 ID를 기록합니다. 이 튜토리얼에서는 "subnet-0123456789abcdef3"을 두 번째 프라이빗 서브넷의 예시로 사용합니다.

이제 2개의 가용 영역에 분산된 2개의 퍼블릭 서브넷과 2개의 프라이빗 서브넷, 총 4개의 서브넷이 있습니다.

: CIDR 블록을 계획할 때 기존 네트워크와 겹치지 않도록 하세요. 프로덕션 환경의 경우 향후 증가에 대비해 충분한 IP 주소를 할당하는 동시에 보안 및 관리를 위해 서브넷 크기를 적절하게 유지하세요.

인터넷 연결 구성

VPC의 리소스가 인터넷과 통신하도록 허용하려면 인터넷 게이트웨이를 생성하고 연결해야 합니다. 이 섹션에서는 VPC의 인터넷 연결을 설정합니다.

인터넷 게이트웨이 생성

인터넷 게이트웨이를 통해 VPC와 인터넷 간의 통신이 가능합니다.

aws ec2 create-internet-gateway \ --tag-specifications 'ResourceType=internet-gateway,Tags=[{Key=Name,Value=MyIGW}]'

출력에서 인터넷 게이트웨이 ID를 기록합니다. 이 튜토리얼에서는 "igw-0123456789abcdef0"을 예시로 사용하겠습니다.

인터넷 게이트웨이를 VPC에 연결

인터넷 게이트웨이를 생성한 후, VPC에 연결합니다.

aws ec2 attach-internet-gateway --internet-gateway-id igw-0123456789abcdef0 --vpc-id vpc-0123456789abcdef0

라우팅 테이블 생성 및 구성

라우팅 테이블에는 네트워크 트래픽이 전달되는 위치를 결정하는 규칙(라우팅)이 있습니다. 먼저 퍼블릭 서브넷의 라우팅 테이블을 생성합니다.

aws ec2 create-route-table \ --vpc-id vpc-0123456789abcdef0 \ --tag-specifications 'ResourceType=route-table,Tags=[{Key=Name,Value=Public-RT}]'

출력에서 라우팅 테이블 ID를 기록합니다. 이 튜토리얼에서는 "rtb-0123456789abcdef0"을 퍼블릭 라우팅 테이블의 예시로 사용합니다.

퍼블릭 라우팅 테이블에서 인터넷 게이트웨이 경로를 추가합니다.

aws ec2 create-route --route-table-id rtb-0123456789abcdef0 --destination-cidr-block 0.0.0.0/0 --gateway-id igw-0123456789abcdef0

퍼블릭 서브넷과 퍼블릭 라우팅 테이블을 연결합니다.

aws ec2 associate-route-table --route-table-id rtb-0123456789abcdef0 --subnet-id subnet-0123456789abcdef0 aws ec2 associate-route-table --route-table-id rtb-0123456789abcdef0 --subnet-id subnet-0123456789abcdef1

이제 프라이빗 서브넷용 라우팅 테이블을 생성합니다.

aws ec2 create-route-table \ --vpc-id vpc-0123456789abcdef0 \ --tag-specifications 'ResourceType=route-table,Tags=[{Key=Name,Value=Private-RT}]'

출력에서 라우팅 테이블 ID를 기록합니다. 이 튜토리얼에서는 "rtb-0123456789abcdef1"을 프라이빗 라우팅 테이블의 예시로 사용합니다.

프라이빗 서브넷과 프라이빗 라우팅 테이블을 연결합니다.

aws ec2 associate-route-table --route-table-id rtb-0123456789abcdef1 --subnet-id subnet-0123456789abcdef2 aws ec2 associate-route-table --route-table-id rtb-0123456789abcdef1 --subnet-id subnet-0123456789abcdef3

NAT 게이트웨이 생성

NAT 게이트웨이를 사용하면 프라이빗 서브넷의 인스턴스가 인터넷으로의 아웃바운드 트래픽을 시작하는 동시에 인터넷에서의 인바운드 트래픽을 방지할 수 있습니다. 업데이트를 다운로드하거나 외부 서비스에 액세스해야 하는 인스턴스에 있어 필수적입니다.

탄력적 IP 할당

먼저 NAT 게이트웨이의 탄력적 IP 주소를 할당합니다.

aws ec2 allocate-address --domain vpc

출력에서 할당 ID를 기록합니다. 이 튜토리얼에서는 "eipalloc-0123456789abcdef0"을 예시로 사용하겠습니다.

NAT 게이트웨이 생성

할당된 탄력적 IP를 사용하여 퍼블릭 서브넷 중 하나에 NAT 게이트웨이를 생성합니다.

aws ec2 create-nat-gateway \ --subnet-id subnet-0123456789abcdef0 \ --allocation-id eipalloc-0123456789abcdef0 \ --tag-specifications 'ResourceType=natgateway,Tags=[{Key=Name,Value=MyNATGateway}]'

출력에서 NAT 게이트웨이 ID를 기록합니다. 이 튜토리얼에서는 "nat-0123456789abcdef0"을 예시로 사용하겠습니다.

NAT 게이트웨이를 사용할 수 있을 때까지 기다린 다음 계속합니다.

aws ec2 wait nat-gateway-available --nat-gateway-ids nat-0123456789abcdef0

NAT 게이트웨이에 경로 추가

프라이빗 서브넷의 인스턴스가 인터넷에 액세스할 수 있도록 프라이빗 라우팅 테이블의 NAT 게이트웨이에 라우팅을 추가합니다.

aws ec2 create-route --route-table-id rtb-0123456789abcdef1 --destination-cidr-block 0.0.0.0/0 --nat-gateway-id nat-0123456789abcdef0

참고: 프로덕션 환경의 경우 단일 장애 지점을 제거하기 위해 프라이빗 서브넷이 있는 각 가용 영역에 NAT 게이트웨이를 생성하는 것이 좋습니다.

서브넷 설정 구성

시작된 인스턴스에 퍼블릭 IP 주소를 자동으로 할당하도록 퍼블릭 서브넷을 구성합니다.

aws ec2 modify-subnet-attribute --subnet-id subnet-0123456789abcdef0 --map-public-ip-on-launch aws ec2 modify-subnet-attribute --subnet-id subnet-0123456789abcdef1 --map-public-ip-on-launch

이렇게 하면 퍼블릭 서브넷에서 시작된 인스턴스가 기본적으로 퍼블릭 IP 주소를 수신하므로 인터넷에서 액세스할 수 있습니다.

보안 그룹 생성

보안 그룹은 인스턴스에 대한 인바운드 및 아웃바운드 트래픽을 제어하는 가상 방화벽 역할을 합니다. 이 섹션에서는 웹 서버 및 데이터베이스 서버용 보안 그룹을 생성합니다.

웹 서버용 보안 그룹 생성

aws ec2 create-security-group \ --group-name WebServerSG \ --description "Security group for web servers" \ --vpc-id vpc-0123456789abcdef0

출력에서 보안 그룹 ID를 기록합니다. 이 튜토리얼에서는 "sg-0123456789abcdef0"을 웹 서버 보안 그룹의 예시로 사용합니다.

웹 서버로의 HTTP 및 HTTPS 트래픽을 허용합니다.

aws ec2 authorize-security-group-ingress --group-id sg-0123456789abcdef0 --protocol tcp --port 80 --cidr 0.0.0.0/0 aws ec2 authorize-security-group-ingress --group-id sg-0123456789abcdef0 --protocol tcp --port 443 --cidr 0.0.0.0/0

참고: 프로덕션 환경의 경우 0.0.0.0/0(모든 IP 주소)에서의 트래픽을 허용하는 대신 인바운드 트래픽을 특정 IP 범위로 제한합니다.

데이터베이스 서버용 보안 그룹 생성

aws ec2 create-security-group \ --group-name DBServerSG \ --description "Security group for database servers" \ --vpc-id vpc-0123456789abcdef0

출력에서 보안 그룹 ID를 기록합니다. 이 튜토리얼에서는 "sg-0123456789abcdef1"을 데이터베이스 서버 보안 그룹의 예시로 사용합니다.

웹 서버에서의 MySQL/Aurora 트래픽만 허용합니다.

aws ec2 authorize-security-group-ingress --group-id sg-0123456789abcdef1 --protocol tcp --port 3306 --source-group sg-0123456789abcdef0

이 구성을 통해 최소 권한 원칙에 따라 웹 서버 보안 그룹의 인스턴스만 포트 3306의 데이터베이스 서버에 연결할 수 있습니다.

VPC 구성 확인

필요한 구성 요소를 모두 생성한 후 VPC 구성을 확인하여 모든 구성 요소가 올바르게 설정되었는지 확인합니다.

VPC 확인

aws ec2 describe-vpcs --vpc-id vpc-0123456789abcdef0

서브넷 확인

aws ec2 describe-subnets --filters "Name=vpc-id,Values=vpc-0123456789abcdef0"

라우팅 테이블 확인

aws ec2 describe-route-tables --filters "Name=vpc-id,Values=vpc-0123456789abcdef0"

인터넷 게이트웨이 확인

aws ec2 describe-internet-gateways --filters "Name=attachment.vpc-id,Values=vpc-0123456789abcdef0"

NAT 게이트웨이 확인

aws ec2 describe-nat-gateways --filter "Name=vpc-id,Values=vpc-0123456789abcdef0"

보안 그룹 확인

aws ec2 describe-security-groups --filters "Name=vpc-id,Values=vpc-0123456789abcdef0"

이러한 명령을 실행하면 VPC의 각 구성 요소에 대한 자세한 정보가 제공되므로 모든 것이 올바르게 구성되었는지 확인할 수 있습니다.

EC2 인스턴스 배포

이제 VPC 인프라를 생성했으므로 EC2 인스턴스를 배포하여 아키텍처의 작동 방식을 시연할 수 있습니다. 퍼블릭 서브넷에서 웹 서버를 시작하고 프라이빗 서브넷에서 데이터베이스 서버를 시작합니다.

SSH 액세스를 위한 키 페어 생성

먼저 인스턴스에 안전하게 연결하도록 키 페어를 생성합니다.

aws ec2 create-key-pair --key-name vpc-tutorial-key --query 'KeyMaterial' --output text > vpc-tutorial-key.pem chmod 400 vpc-tutorial-key.pem

이 명령을 실행하면 새 키 페어가 생성되고 권한이 제한된 파일에 프라이빗 키가 저장됩니다.

최신 Amazon Linux 2 AMI 찾기

인스턴스에 사용할 최신 Amazon Linux 2 AMI를 찾습니다.

aws ec2 describe-images --owners amazon \ --filters "Name=name,Values=amzn2-ami-hvm-*-x86_64-gp2" "Name=state,Values=available" \ --query "sort_by(Images, &CreationDate)[-1].ImageId" --output text

출력에서 AMI ID를 기록합니다. 이 튜토리얼에서는 "ami-0123456789abcdef0"을 예시로 사용하겠습니다.

퍼블릭 서브넷에서 웹 서버 시작

이제 퍼블릭 서브넷에서 웹 서버 역할을 할 EC2 인스턴스를 시작합니다.

aws ec2 run-instances \ --image-id ami-0123456789abcdef0 \ --count 1 \ --instance-type t2.micro \ --key-name vpc-tutorial-key \ --security-group-ids sg-0123456789abcdef0 \ --subnet-id subnet-0123456789abcdef0 \ --associate-public-ip-address \ --user-data '#!/bin/bash yum update -y yum install -y httpd systemctl start httpd systemctl enable httpd echo "<h1>Hello from $(hostname -f)</h1>" > /var/www/html/index.html' \ --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=WebServer}]'

출력에서 인스턴스 ID를 기록합니다. 이 튜토리얼에서는 "i-0123456789abcdef0"을 웹 서버 인스턴스의 예시로 사용합니다.

프라이빗 서브넷에서 데이터베이스 서버 시작

다음으로 프라이빗 서브넷에서 데이터베이스 서버 역할을 할 EC2 인스턴스를 시작합니다.

aws ec2 run-instances \ --image-id ami-0123456789abcdef0 \ --count 1 \ --instance-type t2.micro \ --key-name vpc-tutorial-key \ --security-group-ids sg-0123456789abcdef1 \ --subnet-id subnet-0123456789abcdef2 \ --user-data '#!/bin/bash yum update -y yum install -y mariadb-server systemctl start mariadb systemctl enable mariadb' \ --tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=DBServer}]'

출력에서 인스턴스 ID를 기록합니다. 이 튜토리얼에서는 "i-0123456789abcdef1"을 데이터베이스 서버 인스턴스의 예시로 사용합니다.

웹 서버 액세스

웹 서버 인스턴스가 실행 중이면 퍼블릭 IP 주소를 사용하여 액세스할 수 있습니다.

aws ec2 describe-instances \ --instance-ids i-0123456789abcdef0 \ --query 'Reservations[0].Instances[0].PublicIpAddress' \ --output text

이 명령을 실행하면 웹 서버의 퍼블릭 IP 주소가 출력됩니다. 이 튜토리얼에서는 "203.0.113.10"을 예시로 사용하겠습니다.

이제 웹 브라우저에서 http://203.0.113.10 URL을 열 수 있습니다.

SSH를 통해 인스턴스에 연결

웹 서버에 연결:

ssh -i vpc-tutorial-key.pem ec2-user@203.0.113.10

데이터베이스 서버에 연결하려면 먼저 웹 서버에 SSH를 연결하고, 데이터베이스 서버에 SSH를 연결해야 합니다.

# Get the private IP of the database server aws ec2 describe-instances \ --instance-ids i-0123456789abcdef1 \ --query 'Reservations[0].Instances[0].PrivateIpAddress' \ --output text

이 명령을 실행하면 데이터베이스 서버의 프라이빗 IP 주소가 출력됩니다. 이 튜토리얼에서는 "10.0.2.10"을 예시로 사용하겠습니다.

# First SSH to web server, then to database server ssh -i vpc-tutorial-key.pem -A ec2-user@203.0.113.10 ssh ec2-user@10.0.2.10

다음은 생성한 네트워크 아키텍처입니다. 웹 서버는 공개적으로 액세스할 수 있는 반면 데이터베이스 서버는 VPC 내에서만 액세스할 수 있습니다.

문제 해결

다음은 VPC 생성 시 발생할 수 있는 몇 가지 일반적인 문제와 이를 해결하는 방법입니다.

CIDR 블록 겹침

CIDR 블록 겹침 관련 오류가 발생하는 경우 VPC 및 서브넷의 CIDR 블록이 계정의 기존 VPC 또는 서브넷과 겹치지 않아야 합니다.

권한 오류

권한 오류가 발생하면 IAM 사용자 또는 역할에 VPC 리소스를 생성 및 관리하는 데 필요한 권한이 있는지 확인합니다. AmazonVPCFullAccess 정책을 연결하거나 필요한 권한이 포함된 사용자 지정 정책을 생성해야 할 수 있습니다.

리소스 제한

AWS 계정에는 생성할 수 있는 VPC, 서브넷 및 기타 리소스의 수에 대한 기본 제한이 있습니다. 이러한 제한에 도달하면 AWS 지원 센터를 통해 증가를 요청할 수 있습니다.

정리 중 종속성 오류

리소스를 정리할 때 잘못된 순서로 리소스를 삭제하려고 하면 종속성 오류가 발생할 수 있습니다. 항상 최하위로 종속된 리소스부터 시작하여 생성 순서의 역순으로 리소스를 삭제하세요.

리소스 정리

VPC 사용이 끝나면 요금이 발생하지 않도록 리소스를 정리할 수 있습니다. 종속성을 올바르게 처리하려면 생성 순서의 역순으로 리소스를 삭제하세요.

EC2 인스턴스 종료

aws ec2 terminate-instances --instance-ids i-0123456789abcdef0 i-0123456789abcdef1 aws ec2 wait instance-terminated --instance-ids i-0123456789abcdef0 i-0123456789abcdef1

키 페어 삭제

aws ec2 delete-key-pair --key-name vpc-tutorial-key rm vpc-tutorial-key.pem

NAT 게이트웨이 삭제

aws ec2 delete-nat-gateway --nat-gateway-id nat-0123456789abcdef0 aws ec2 wait nat-gateway-deleted --nat-gateway-ids nat-0123456789abcdef0

탄력적 IP 릴리스

aws ec2 release-address --allocation-id eipalloc-0123456789abcdef0

보안 그룹 삭제

aws ec2 delete-security-group --group-id sg-0123456789abcdef1 aws ec2 delete-security-group --group-id sg-0123456789abcdef0

라우팅 테이블 삭제

먼저 라우팅 테이블 연결 ID를 찾습니다.

aws ec2 describe-route-tables --route-table-id rtb-0123456789abcdef0 aws ec2 describe-route-tables --route-table-id rtb-0123456789abcdef1

다음으로 서브넷에서 라우팅 테이블의 연결을 해제합니다(연결 ID를 출력의 연결 ID로 바꾸기).

aws ec2 disassociate-route-table --association-id rtbassoc-0123456789abcdef0 aws ec2 disassociate-route-table --association-id rtbassoc-0123456789abcdef1 aws ec2 disassociate-route-table --association-id rtbassoc-0123456789abcdef2 aws ec2 disassociate-route-table --association-id rtbassoc-0123456789abcdef3

그런 다음 라우팅 테이블을 삭제합니다.

aws ec2 delete-route-table --route-table-id rtb-0123456789abcdef1 aws ec2 delete-route-table --route-table-id rtb-0123456789abcdef0

인터넷 게이트웨이를 분리 및 삭제

aws ec2 detach-internet-gateway --internet-gateway-id igw-0123456789abcdef0 --vpc-id vpc-0123456789abcdef0 aws ec2 delete-internet-gateway --internet-gateway-id igw-0123456789abcdef0

서브넷 삭제

aws ec2 delete-subnet --subnet-id subnet-0123456789abcdef0 aws ec2 delete-subnet --subnet-id subnet-0123456789abcdef1 aws ec2 delete-subnet --subnet-id subnet-0123456789abcdef2 aws ec2 delete-subnet --subnet-id subnet-0123456789abcdef3

VPC 삭제

aws ec2 delete-vpc --vpc-id vpc-0123456789abcdef0

프로덕션으로 이동

이 튜토리얼은 AWS CLI를 사용하여 VPC를 생성하는 방법을 알아보는 데 도움이 되도록 설계되었습니다. 프로덕션 환경의 경우 다음 보안 및 아키텍처 모범 사례를 고려하세요.

  1. 보안 그룹 규칙: 0.0.0.0/0에서의 트래픽을 허용하는 대신 인바운드 트래픽을 특정 IP 범위로 제한합니다.

  2. 고가용성: 프라이빗 서브넷이 있는 각 가용 영역에 NAT 게이트웨이를 배포하여 단일 장애 지점을 없앱니다.

  3. 네트워크 ACL: 네트워크 ACL을 보안 그룹 이외의 추가 보안 계층으로 구현합니다.

  4. VPC 흐름 로그: VPC 흐름 로그를 활성화하여 네트워크 트래픽 패턴을 모니터링 및 분석합니다.

  5. 리소스 태그 지정: 효과적인 리소스 관리를 위해 포괄적인 태그 지정 전략을 구현합니다.

프로덕션에서 바로 사용할 수 있는 아키텍처 구축에 대한 자세한 내용은 AWS Well-Architected FrameworkAWS 보안 모범 사례를 참조하세요.

다음 단계

이제 퍼블릭 및 프라이빗 서브넷이 포함된 VPC를 생성했으므로 다음 작업이 가능합니다.

  1. 퍼블릭 또는 프라이빗 서브넷에서EC2 인스턴스를 시작합니다.

  2. 로드 밸런서를 배포하여 여러 인스턴스에 걸쳐 트래픽을 분산합니다.

  3. 고가용성 및 확장성을 위해 Auto Scaling 그룹을 설정합니다.

  4. 프라이빗 서브넷에서 RDS 데이터베이스를 구성합니다.

  5. VPC 피어링을 구현하여 다른 VPC와 연결합니다.

  6. VPC를 온프레미스 네트워크에 연결하도록 VPN 연결을 설정합니다.