+++++++++++++++++++++++++++++++++++++++++++
https://docs.aws.amazon.com/cli/latest/reference/ec2/?highlight=ec2
AWS CLI 명령어
aws configure
=> aws 연결
key ID, Secret Key, region, format 설정한다
aws ec2 describe-vpcs
=> vpc 목록 제공
aws iam get-user
=> 사용자 정보 조회
aws iam list-users
=> 모든 사용자 목록 조회
aws ec2 create-vpc --cidr-block 10.0.0.0/16 --tag-specification "ResourceType=vpc,Tags=[{Key=Name,Value=Rookies-inst-VPC}]" --output json
=> vpc 만들기
aws ec2 describe-vpcs
=> vpc 조회
aws ec2 describe-vpcs --query Vpcs[0].VpcId
=> 첫번쨰 vpc ID를 조회
aws ec2 describe-vpcs --query Vpcs[*].VpcId
=> 모든 vpc ID를 조회
----------------------------------window 명령어------------
VPC ID를 환경변수로 설정
C:\Users\myanj> set VPC_ID=vpc-0f4ea46559a82ec1c ⇐ 환경변수 등록
C:\Users\myanj> echo %VPC_ID% ⇐ 등록된 환경변수를 사용(참조)
vpc-0f4ea46559a82ec1c
aws ec2 create-internet-gateway --tag-specifications ResourceType=internet-gateway,Tags=[{Key=Name,Value=my-igw}]
=> 인터넷게이트웨이 만들기
aws ec2 attach-internet-gateway --internet-gateway-id igw-0d0fb496b3EXAMPLE --vpc-id vpc-0a60eb65b4EXAMPLE
=> 인터넷게이트웨이 vpc와 연결하기
aws ec2 create-subnet --vpc-id %VPC_ID% --cidr-block 10.0.10.0/24 --availability-zone ap-northeast-2a --tag-specifications ResourceType=subnet,Tags=[{Key=Name,Value=Rookies021-SubnetA}]
=> 서브넷 생성
aws ec2 create-route-table --vpc-id %VPC_ID% --tag-specifications ResourceType=route-table,Tags=[{Key=Name,Value=Rookies021-PublicRT}]
=>라우팅 테이블 생성
aws ec2 create-route --route-table-id %PublicRT% --destination-cidr-block 0.0.0.0/0 --gateway-id %IGW_ID%
=> 라우팅 테이블에 인터넷 게이트웨이 추가
aws ec2 associate-route-table --subnet-id %SubnetA_ID% --route-table-id %PublicRT%
aws ec2 associate-route-table --subnet-id %SubnetC_ID% --route-table-id %PublicRT%
=> 서브넷들과 라우팅 테이블 연결
aws ec2 describe-subnets
=> 서브넷 상세 조회
aws ec2 describe-subnets --query "Subnets[*].{SubnetId:SubnetId,CidrBlock:CidrBlock,EnablePublicIP:MapPublicIpOnLaunch}"
=>서브넷 상세 조회 결과에서 SubnetID, CidrBlock, MapPublicIpOnLaunch(퍼블릭 IP 자동할당) 정보만 추출해서 출력
aws ec2 modify-subnet-attribute --subnet-id %SubnetA_ID% --map-public-ip-on-launch
aws ec2 modify-subnet-attribute --subnet-id %SubnetC_ID% --map-public-ip-on-launch
=> 각 서브넷에 퍼블릭 IP를 자동 할당하도록 설정을 변경
aws ec2 describe-vpc-attribute --vpc-id %VPC_ID% --attribute enableDnsHostnames
=> VPC DNS 호스트 이름 조회
aws ec2 modify-vpc-attribute --vpc-id %VPC_ID% --enable-dns-hostnames
=> VPC DNS 호스트 활성화
aws ec2 modify-vpc-attribute --vpc-id %VPC_ID% --noenable-dns-hostnames
=> 비활성화 noenable(?)
프라이빗 서브넷 B,D 생성
ID 환경변수 등록
프라이빗 라우팅 테이블 생성 => 기본 라우팅 테이블을 프라이빗 테이블로 활용
aws ec2 describe-route-tables --route-table-id %PrivateRT%
aws ec2 describe-route-tables
=> 라우팅 테이블 조회
https://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html
aws ec2 create-tags --resources %PrivateRT% --tags "Key=Name,Value=Rookies-inst-PrivateRT"
=> 라우팅 테이블 태그 작성
연결( associate )
프라이빗 라우팅 테이블 - 프라이빗 서브넷 연결하기
aws ec2 describe-route-tables --query "RouteTables[*].{Associations:Associations,Tags:Tags}"
=> 서브넷과 연결 여부를 확인
ec2 생성 전 key pair 생성
https://docs.aws.amazon.com/cli/latest/reference/ec2/create-key-pair.html
aws ec2 create-key-pair --key-name
=> key pair생성
aws ec2 delete-key-pair --key-name
=> key pair삭제
aws ec2 create-key-pair --key-name %KEY_PAIR% --query "KeyMaterial" --output text
=> key pair 생성 시 내용을 단순텍스트로 출력
aws ec2 create-key-pair --key-name %KEY_PAIR% --query "KeyMaterial" --output text > %KEY_PAIR%.pem
=> key pair 생성 시 내용을 단순텍스트로 >%KEY_PAIR%.pem 으로 내려받아라
type %KEY_PAIR%.pem
=> %KEY_PAIR%.pem파일 내용 화면표시
aws ec2 create-security-group --group-name Rookies021-webSG --description "Security Group for WebServer" --vpc-id %VPC_ID%
=> 보안 그룹 생성
보안그룹 ID 환경변수 등록 WEB_SG
aws ec2 authorize-security-group-ingress --group-id %WEB_SG% --protocol tcp --port 22 --cidr 0.0.0.0/0
=> 보안 그룹에 인바운드 규칙을 추가
aws ec2 authorize-security-group-ingress --group-id %WEB_SG% --protocol tcp --port 80 --cidr 0.0.0.0/0
aws ec2 describe-security-group-rules --filters Name=group-id,Values=%WEB_SG%
=> 골라보기
CLI로 ec2 만들기
사용자 데이터 텍스트 생성
ami 아마존 리눅스 2023
=> ami-049788618f07e189d
생성 옵션 넣을 것들
키페어, NETWORK, SG, 유저데이터
aws ec2 run-instances --image-id ami-049788618f07e189d --instance-type t2.micro --key-name %KEY_PAIR% --security-group-ids %WEB_SG% --subnet-id %SubnetA_ID% --user-data file://user_data.txt --tag-specifications ResourceType=instance,Tags=[{Key=Name,Value=Rookies-inst-Web}]
=> ec2 런
ec2 ID 환경변수만들기
aws ec2 describe-instances
=> 인스턴스 조회
curl http://3.38.92.152
=> ec2 퍼플릭 주소로 요청을 전달
ssh -i %KEY_PAIR%.pem ec2-user@3.38.92.152
=> ec2 ssh로 접속
@@@@@@@@@@@@@@@@@@@@@@
cat /var/www/html/index.html
=> 내가 올린 유저데이터 확인
systemctl status httpd
=> http 연결상태 확인
@@@@@@@@@@@@@@@@@@@@@@
======================리소스 정리 ===============
인스턴스 종료
https://docs.aws.amazon.com/cli/latest/reference/ec2/terminate-instances.html
aws ec2 terminate-instances --instance-ids %INSTANCE_ID%
보안그룹 삭제
https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-security-group.html
aws ec2 delete-security-group --group-id %WEB_SG%
서브넷 삭제
https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-subnet.html
aws ec2 delete-subnet --subnet-id %SubnetA_ID%
인터넷 게이트웨이를 VPC에서 분리
https://docs.aws.amazon.com/cli/latest/reference/ec2/detach-internet-gateway.html
aws ec2 detach-internet-gateway --internet-gateway-id %IGW_ID% --vpc-id %VPC_ID%
인터넷 게이트웨이 삭제 (삭제전 vpc분리)
https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-internet-gateway.html
aws ec2 delete-internet-gateway --internet-gateway-id %IGW_ID%
퍼블릭 라우팅 테이블 삭제(삭제 전 서브넷 종속성 정리)
https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-route-table.html
aws ec2 delete-route-table --route-table-id %PublicRT%
프라이빗 라우팅 테이블 삭제(기본 라우팅 테이블로 만들었기에 삭제 불가 VPC삭제 시 사라짐)
https://docs.aws.amazon.com/cli/latest/reference/ec2/disassociate-route-table.html
aws ec2 disassociate-route-table --association-id %PrivateRT%
키페어 삭제
https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-key-pair.html
aws ec2 delete-key-pair --key-name %KEY_PAIR%
VPC 삭제
https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-vpc.html
aws ec2 delete-vpc --vpc-id %VPC_ID%
=============================