EC2을 생성할 때 생성 및 사용되는 요소들에 대한 정의는 아래 링크에서 확인해주시기 바랍니다.
해당 글에는 각 요소에 대해서 자세히 설명하지 않을 예정입니다.
AWS-CLI Setting.
설치 결과
Configure설정
만드려는 목표.
AWS-CLI 명령어 예제
VPC 생성
aws ec2 create-vpc --cidr-block 10.2.0.0/16 --tag-specification "ResourceType=vpc, Tags=[{Key=Name, Value=cli-vpc}]" --output text
CIDR-Block = 10.2.0.0/16
Resource-Type = vpc
Tag = {Key = name, value = cli-vpc}
Subnet 생성
Public
Private
cli-vpc-id = 생성한 VPC-id
[public-subnet]
aws ec2 create-subnet --vpc-id {cli-vpc-id} --cidr-block 10.2.1.0/24 --availability-zone ap-northeast-2a --tag-specification "ResourceType=subnet, Tags=[{Key=Name, Value=cli-subnet-public}]"
[private-subnet]
aws ec2 create-subnet --vpc-id {cli-vpc-id} --cidr-block 10.2.2.0/24 --availability-zone ap-northeast-2a --tag-specification "ResourceType=subnet, Tags=[{Key=Name, Value=cli-subnet-private}]"
Route-Table 설정 및 연결
Route-Table 생성-[public, private]
aws ec2 create-route-table --vpc-id {vpc-id} --tag-specification "ResourceType=route-table, Tags=[{Key=Name, Value=cli-route-table-public}]"
aws ec2 create-route-table --vpc-id {vpc-id} --tag-specification "ResourceType=route-table, Tags=[{Key=Name, Value=cli-route-table-private}]"
Subnet 연결
aws ec2 associate-route-table --route-table-id {rtb-id} --subnet-id {subnet-id}
Internet Gateway 설정
Internet Gateway 생성
aws ec2 create-internet-gateway --tag-specification "ResourceType=internet-gateway, Tags=[{Key=Name, Value=cli-internet-gateway}]" --output text
Integer Gateway VPC 연결
aws ec2 attach-internet-gateway --vpc-id {vpc-id} --internet-gateway-id {igw-id}
Public Subnet 연결
aws ec2 create-route --route-table-id {rtb-id} --destination-cidr-block 0.0.0.0/0 --gateway-id {igw-id}
NAT Gateway 생성 및 연결
NAT Gateway 생성
aws ec2 create-nat-gateway --subnet-id {subnet-id} --allocation-id {elastic-ip-id} --tag-specification "ResourceType=natgateway, Tags=[{Key=Name, Value=cli-nat-gateway}]" --output text
Private Subnet 연결
aws ec2 create-route --route-table-id {rtb-id} --destination-cidr-block 0.0.0.0/0 --gateway-id {nat-id}
보안그룹 생성
보안 그룹 생성
aws ec2 create-security-group --group-name MySecurityGroup --description "My security group" --vpc-id {vpd-id}
Inbound설정 - Public
aws ec2 authorize-security-group-ingress --group-id {sg-id} --protocol {protocol} --port {port} --cidr {cidr, x.x.x.x/x}
Inbound설정 - Private
aws ec2 authorize-security-group-ingress --group-id {sg-id} --protocol {protocol} --port {port} --source-group {sg-group}
EC2 생성하기
Image 검색
aws ec2 describe-images --owners self amazon
EC2 생성
aws ec2 run-instances \\
--image-id {image-id} \\
--count {생성 개수} \\
--instance-type {인스턴스 타입} \\
--key-name {key-pair-name} \\
--security-group-ids {sg-id} \\
--subnet-id {subnet-id} \\
--associate-public-ip-address \\
--tag-specification "ResourceType=instance, Tags=[{Key=Name, Value=cli-public}]"
결과
VPC
Subnet
Route-Table
Internet Gateway
NAT Gateway
보안 그룹
EC2
SSH으로 접근하기
SSH Public EC2에 접근 → SSH Private EC2 접근
지금은 SSH로 접근을 하는 것이지만, 나중에 Public에서 WS을 이용해서 Private로 접근하도록 할 수 있습니다.
window Power Shell → chmod 400 <key>.pem
icacls.exe <key이름>.pem /reset
icacls.exe <key이름>.pem /grant:r "$($env:username):(r)"
icacls.exe <key이름>.pem /inheritance:r
ssh -i <key>.pem ubuntu@public-ip
Public EC2에 접근하였을 때 Private EC2로 SSH을 접근하려면 Public EC2에 <key>.pem 파일이 있어야 합니다.
그래서, Window에서 받은 .pem 파일을 sftp으로 public ec2에 전송해야 합니다.
- sftp 명령어 put을 이용해서 전달하기
- sftp, ftp을 지원해주는 “파일질라”사용하기
저는 2번을 이용해서 UI상으로 .pem 파일을 전송하였습니다.
파일 질라를 통해서 .pem 파일을 public Bastion Host 내부에 추가한 화면입니다.
Private EC2 SSH 접근
Public Bastion Host(EC2)을 통해서 Private Subnet에 존재하는 EC2로 SSH을 통해서 접근한 화면입니다.
'AWS' 카테고리의 다른 글
AWS EC2 생성(Console) (2) | 2024.09.17 |
---|---|
[AWS] EC2에 사용되는 기본 요소 (0) | 2024.08.22 |
[AWS] 같은 이메일로 프리 티어 여러 개 만들기 (0) | 2024.08.13 |
댓글