1. CloudFormation을 통한 기본 인프라 배포
이번 실습의 기본 인프라 구성을 CloudFormation을 통해 스택을 생성하고 자원을 배포할 것입니다.
1.1. CloudFormation 스택 생성
CloudFormation 템플릿 다운로드
•
아래 CloudFormation 템플릿 파일을 다운로드합니다.
Parameters:
KeyName:
Description: Name of an existing EC2 KeyPair to enable SSH access to the instances. Linked to AWS Parameter
Type: AWS::EC2::KeyPair::KeyName
ConstraintDescription: must be the name of an existing EC2 KeyPair.
InstanceType:
Description: Enter t2.nano, t2.micro Default is t2.micro.
Type: String
Default: t2.micro
AllowedValues:
- t2.nano
- t2.micro
LatestAmiId:
Description: (DO NOT CHANGE)
Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>'
Default: '/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64'
AllowedValues:
- /aws/service/ami-amazon-linux-latest/al2023-ami-kernel-default-x86_64
Resources:
MyVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 20.0.0.0/16
Tags:
- Key: Name
Value: MY-VPC
MyIGW:
Type: AWS::EC2::InternetGateway
Properties:
Tags:
- Key: Name
Value: MY-IGW
MyIGWAttachment:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
InternetGatewayId: !Ref MyIGW
VpcId: !Ref MyVPC
MyPublicRT:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref MyVPC
Tags:
- Key: Name
Value: MY-PUBLIC-RT
MyDefaultPublicRoute:
Type: AWS::EC2::Route
DependsOn: MyIGWAttachment
Properties:
RouteTableId: !Ref MyPublicRT
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref MyIGW
MyPublicSN:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref MyVPC
AvailabilityZone: !Select [ 0, !GetAZs '' ]
CidrBlock: 20.0.0.0/24
Tags:
- Key: Name
Value: MY-PUBLIC-SN
MyPublicSNRouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId: !Ref MyPublicRT
SubnetId: !Ref MyPublicSN
MySG:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Enable HTTP access via port 80 and SSH access via port 22
VpcId: !Ref MyVPC
Tags:
- Key: Name
Value: MY-SG
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: '22'
ToPort: '22'
CidrIp: 0.0.0.0/0
- IpProtocol: icmp
FromPort: -1
ToPort: -1
CidrIp: 0.0.0.0/0
MyEC2:
Type: AWS::EC2::Instance
Properties:
InstanceType: !Ref InstanceType
ImageId: !Ref LatestAmiId
KeyName: !Ref KeyName
Tags:
- Key: Name
Value: MY-EC2
NetworkInterfaces:
- DeviceIndex: 0
SubnetId: !Ref MyPublicSN
GroupSet:
- !Ref MySG
AssociatePublicIpAddress: true
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
hostnamectl --static set-hostname MyEC2
dnf install -y nscd
systemctl enable nscd
systemctl start nscd
systemctl stop systemd-resolved
Outputs:
myec2:
Value: !GetAtt MyEC2.PublicIp
YAML
복사
# CH5_LAB1.yaml 파일 내용
CloudFormation 스택 생성 설정
•
CloudFormation 서비스 → 스택 (메뉴 진입) → 스택 생성 (버튼 클릭)
1단계 - 스택 생성
•
템플릿 준비: 기존 템플릿 선택 (선택)
•
템플릿 소스: 템플릿 파일 업로드 (선택)
◦
파일 선택 → 템플릿 파일 선택 (CH5_LAB1.yaml) → 열기
•
다음 (버튼 클릭)
2단계 - 스택 세부 정보 지정
•
스택 이름: LAB5-CF-1 (입력)
•
InstanceType: t2.micro or t2.nano
•
KeyName: 각자 생성한 키 페어 (선택)
•
InstanceType: t2.micro 혹은 t2.nano (선택)
•
다음 (버튼 클릭)
3단계 - 스택 옵션 구성
•
다음 (버튼 클릭)
4단계 - 검토 및 작성
•
전송 (버튼 클릭)
1.2. DNS 통신 흐름 확인
MY-EC2 인스턴스에 SSH로 접근 후 명령을 수행합니다.
DNS 통신 흐름 확인
cat /etc/resolv.conf
Bash
복사
# DNS 서버 확인
ip route
Shell
복사
# Default Route 확인
dig
Shell
복사
# dig로 DNS 정보 확인
dig blog.cloudneta.net
Shell
복사
# 대상 도메인의 A 레코드 확인
dig +short blog.cloudneta.net
Shell
복사
# 대상 도메인의 매핑된 IP 주소만 확인
dig +trace blog.cloudneta.net
Shell
복사
# 대상 도메인의 DNS 통신 과정 확인
2. Amazon Route 53으로 도메인 생성
Amazon Route 53을 통해 유료 도메인을 생성하고 실습에 활용합니다.
Route 53에서 도메인 등록
•
Route 53 서비스 → 등록된 도메인 (메뉴 진입) → 도메인 등록 (버튼 클릭)
◦
도메인 검색: [각자 사용할 도메인].click (입력)
◦
검색 (버튼 클릭) → 선택 (버튼 클릭)
◦
결제 진행 (버튼 클릭)
1단계 - 요금
•
기간(가격): 1년 (3.00 USD) (선택)
•
자동 갱신: 활성 (체크 해제)
•
다음 (버튼 클릭)
2단계 - 연락처 정보
•
등록 연락처 정보 입력
•
다음 (버튼 클릭)
3단계 - 검토 및 제출
•
이용 약관 (체크)
•
제출 (버튼 클릭)
Route 53에서 도메인 등록 확인
•
Route 53 서비스 → 요청 (메뉴 진입)
•
Route 53 서비스 → 등록된 도메인 (메뉴 진입)
•
Route 53 서비스 → 호스팅 영역 (메뉴 진입) → 대상 도메인 (클릭)
인스턴스 중지
•
EC2 서비스 → 인스턴스 (메뉴 진입) → 대상 인스턴스 (체크)
◦
인스턴스 상태 → 인스턴스 중지 (클릭)
다음 실습에 활용한 EC2 인스턴스를 중지합니다. (종료 X)
그리고 CloudFormation은 다음 실습까지 그대로 유지하겠습니다.
인스턴스만 중지하면 인스턴스 사용량이 증가되지 않습니다.
여기까지 5장 실습 - 사전 준비 사항 실습을 마칩니다.
수고하셨습니다 :)