aws-cli를 사용하여 AWS VPC 관리
이 페이지에서
- 전제 조건
- 무엇을 할 것인가?\n
- aws cli를 확인하고 로컬 컴퓨터에서 aws 액세스 및 비밀 키를 내보냅니다.\n
- aws-cli를 사용하여 VPC 관리\n
- 결론
aws-cli를 사용하여 터미널에서 서브넷, 라우팅 테이블, 인터넷 게이트웨이와 같은 VPC 및 기타 리소스를 관리하는 것은 VPC에 능숙하지 않은 경우 다소 혼란스러울 수 있습니다. 이 기사에서는 2개의 서브넷, 라우팅 테이블 및 인터넷 게이트웨이가 있는 VPC를 생성하고 이 서브넷은 퍼블릭 서브넷이 됩니다. VPC가 생성되면 이 VPC에서 생성된 EC2 인스턴스에 연결을 시도합니다. 이 기사의 목적은 터미널에서 VPC를 관리하는 데 사용되는 명령을 소개하는 것입니다.
먼저 VPC를 잘 이해하는 것이 좋습니다. 이 기사의 초점은 VPC를 설명하는 것이 아닙니다. VPC에서 수행할 수 있는 작업을 알아보려면 여기에서 공식 문서를 참조하세요.
전제 조건
- AWS 계정(계정이 없는 경우 생성).
- VPC에 대한 기본 이해(여기에서 AWS 콘솔에서 VPC를 생성하는 방법을 배웁니다.)\n
- IAM 사용자를 생성하는 AWS IAM 사용자).\n
- 로컬 시스템에 설치된 AWS CLI.
- EC2 인스턴스에 대한 기본적인 이해(Ubuntu EC2 인스턴스 생성 방법을 알아보려면 여기를 클릭)\n
우리는 무엇을 할 것인가?
- aws cli를 확인하고 로컬 시스템에서 AWS 액세스 및 비밀 키를 내보냅니다.\n
- aws cli를 사용하여 VPC를 관리합니다.\n
aws cli를 확인하고 로컬 컴퓨터에서 aws 액세스 및 비밀 키를 내보냅니다.
머신에 aws-cli 유틸리티가 설치되어 있지 않은 경우 여기에서 공식 문서를 참조하여 로컬 머신에 설치한 후 다음 명령어를 사용하여 버전을 확인하세요.
aws --version
다음 명령을 실행하면 터미널에서 AWS 계정에 대한 액세스를 구성하지 않았기 때문에 오류가 발생합니다.
aws sts get-caller-identity
다음 명령을 사용하여 터미널에서 AWS IAM 사용자 액세스 및 비밀 키를 내보냅니다.
export AWS_ACCESS_KEY_ID=<aws-user-access-key>
export AWS_SECRET_ACCESS_KEY=<aws-user-secret-key>
이번에는 다음 명령을 실행하여 신원을 확인할 수 있습니다.
aws sts get-caller-identity
aws-cli를 사용하여 VPC 관리
다음 명령을 사용하여 VPC를 생성합니다. 기본 VPC는 생성되지 않습니다. 10.0.0.0/16은 생성될 VPC의 CIDR입니다. 선택 및 요구 사항에 따라 유효한 CIDR을 지정할 수 있습니다.
aws ec2 create-vpc --cidr-block 10.0.0.0/16

위의 스크린샷에서 VpcId를 확인하십시오. 출력에 다른 VpcId가 표시됩니다. VpcId를 기록해 둡니다. 다음 단계에서 필요합니다.
현재 리전의 모든 VPC를 설명하려면 다음 명령어를 실행하세요.
aws ec2 describe-vpcs
VpcId를 지정하면 특정 VPC를 설명할 수 있습니다.
aws ec2 describe-vpcs --vpc-ids vpc-03c4278f3b75efd77
이제 생성한 VPC에 2개의 서브넷을 생성해 보겠습니다. 여기에서 두 서브넷 모두 VPC에 고유한 CIDR 블록이 있어야 합니다.
aws ec2 create-subnet --vpc-id vpc-03c4278f3b75efd77 --cidr-block 10.0.1.0/24
aws ec2 create-subnet --vpc-id vpc-03c4278f3b75efd77 --cidr-block 10.0.2.0/24

서브넷을 공용으로 만들려면 인터넷 게이트웨이를 만들어야 합니다.
aws ec2 create-internet-gateway
앞에서 생성한 VPC에 인터넷 게이트웨이를 연결합니다.
aws ec2 attach-internet-gateway --internet-gateway-id igw-04f1e4f13f92599c3 --vpc-id vpc-03c4278f3b75efd77

이제 라우팅 테이블을 생성해 보겠습니다.
aws ec2 create-route-table --vpc-id vpc-03c4278f3b75efd77
경로 테이블을 두 서브넷과 연결
aws ec2 associate-route-table --route-table-id rtb-0878d652f460dbf50 --subnet-id subnet-0748ef7a26aefc7cc
aws ec2 associate-route-table --route-table-id rtb-0878d652f460dbf50 --subnet-id subnet-0375b656eb64962e8

경로 테이블에서 인터넷 게이트웨이로의 경로를 생성하면 경로 테이블과 연결된 서브넷이 공개됩니다.
aws ec2 create-route --route-table-id rtb-0878d652f460dbf50 --destination-cidr-block 0.0.0.0/0 --gateway-id igw-04f1e4f13f92599c3

이제 서브넷 2개, 경로 테이블 1개, 경로 테이블에서 인터넷 게이트웨이까지의 경로가 있는 VPC가 있습니다.
이 VPC와 서브넷 중 하나에 EC2 인스턴스를 만들면 인터넷에서 인스턴스에 공개적으로 연결할 수 있습니다. Ubuntu EC2 인스턴스 생성 방법은 전제 조건에 언급된 문서를 참조하십시오. 인스턴스를 만드는 동안 방금 만든 VPC를 지정합니다.
aws ec2 describe-instances --instance-ids i-079acfea39b6ad2c9 | grep VpcId
aws ec2 describe-instances --instance-ids i-079acfea39b6ad2c9 | grep SubnetId
aws ec2 describe-instances --instance-ids i-079acfea39b6ad2c9 | grep PublicIpAddress
ssh -i ~/Downloads/aws-cli.pem

결론
이 문서에서는 서브넷 2개, 경로 테이블 1개, 인터넷 게이트웨이, 경로 테이블에서 인터넷 게이트웨이로의 경로가 있는 VPC를 생성하는 단계를 살펴보았습니다. 또한 두 서브넷이 모두 퍼블릭 서브넷이므로 서브넷 중 하나에서 생성된 인스턴스가 인스턴스를 공개적으로 사용할 수 있게 만드는 것을 확인했습니다.