AWS EC2 인스턴스 생성 & 콘솔 연결 & Public IP 접근해보기

AWS Cloudformation 이란?

AWS Cloudformation Logo

AWS 의 Cloudformation 기술 공식 설명은,
AWS CloudFormation은 환경의 모든 인프라 리소스를 안전하고 반복 가능한 방식으로 설명하고 프로비저닝할 수 있도록 공통 언어를 제공합니다.
라고 하는데..

즉, 쉽게 말하자면, 자동화된 인프라 구축을 도와주는 서비스라고 하겠다.

CloudFormation의 장점!

AWS Cloudformation의 가장 큰 장점은
AWS Infra 구성을 ‘자동화’해서, 한 번에 원하는 세팅으로 도와줄 수 있도록 해준다는 것이다.

요즘 DevOps 엔지니어들의 가장 큰 화두로 떠오른 것이 바로 이 ‘자동화’ 인데,
Infrastructure as a Code (IaaC)가 미래 클라우드 기술의 핵심이 될 것이라고 말하는 사람도 있다.

IaaC의 스크립트 자동화 도구로 Terraform을 가장 먼저 떠올리는 사람들이 많은데,
Terraform 은 Azure, Google Cloud 등도 지원하니,
Cloudformation은 AWS구성을 위한 AWS 자체의 솔루션이라고 생각하면 편할 것 같다.

바로 실습을 들어가보자.

Cloudformation 작동 순서

CloudFormation 은 템플릿을 통해 스택을 생성!

Cloudformation 은 다음과 같은 순서로 Infra를 생성한다!

AWS console의 Cloudformation 사이트에 들어와, 스택 생성을 클릭!

CloudFormation 스택 생성

준비된 템플릿을 기반으로 스택을 생성하는데, 템플릿 파일은 JSON 또는 YAML 파일로 업로드를 할 수 있다.

사실 JSON은 Rest API 통신에 매일 쓰니까 익숙했지만,
YAML 파일은 어디서 봤지..하고 아리까리 했는데 Swagger API 설명 문서가 YAML파일이었다.
나중에 찾아보니, XML이나 JSON이나 YAML 파일이나 Data를 표현하는 형식이고
문법적인 차이만 있을 뿐, 내용이 오브젝트 형태로 들어간다는 것은 비슷했다.

파일을 스윽 보고, <> 꺽쇠가 많으면 XML, {} 중괄호가 많으면 JSON, 들여쓰기(Indentation)이 되어있고 뭐가 휑~하다 싶으면 YAML 파일이라고 구분하면 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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.

Resources:
MyInstance:
Type: AWS::EC2::Instance
Properties:
ImageId: ami-0094965d55b3bb1ff
InstanceType: t2.micro
KeyName: !Ref KeyName
Tags:
- Key: Name
Value: WebServer
SecurityGroups:
- !Ref MySG
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
yum install httpd -y
systemctl start httpd
echo "<h1>Test Web Server</h1>" > /var/www/html/index.html

MySG:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Enable HTTP access via port 80 and SSH access via port 22
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: 80
ToPort: 80
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: 22
ToPort: 22
CidrIp: 0.0.0.0/0

실습용 YAML 파일은 위과 같이 생겼는데,
스택에 이름과 파라미터(Key Name)을 입력해주면 생성하면 된다.
YAML파일을 대충 읽어보니, 파라미터에는 생성하게 될 EC2 Instance 접속방법(키 페어 방식)이 적혀있고, Resource 안에 생성할 인스턴스의 타입, 이름, 스크립트.
마지막으로, MySG 안에 HTTP와 SSH 접근으로 각각의 포트를 열어주는 내용을 입력하는 것 같다. YAML 파일 작성법은 나중에 따로 한번 더 다뤄야 할 것 같다.

스택이 생성되면

이벤트 로그에서 생성되는 이벤트를 볼 수 있다!

실습이 끝난 이후에는, 스택을 삭제하는 걸 잊지 말자!
스택을 삭제 하면 자동으로 안에 있는 리소스까지 같이 삭제됩니다.


출처) Cloudnet@ 팀의 ANOS (AWS Network Online Study 2기 학습 내용) https://cloudneta.github.io/

댓글