[AWS] CloudFormation 스택 생성 및 삭제
- IT2/AWS 개념
- 2022. 11. 9. 00:27
템플릿 업로드, 스택 생성/삭제를 통해 AWS 인프라 자원 자동화 실습 수행!
CloudFormaion 소개
템플릿
- 코드를 사용해 AWS 인프라에 개략적인 선언을 하는 방법
- 코드로 정의된 인프라 자원들을 자동으로 생성 및 삭제 가능
- 일반적으로 IaC(Infrastructure as Code)라 부름
스택 생성
- 템플릿을 CloudFormation에 업로드하여 스택 생성
- 스택 생성 시 템플릿에 정의된 AWS 인프라 코드 순서대로 자원 생성
스택 삭제
- 스택 삭제 시 AWS 인프라 코드 순서대로 자원 삭제
- 스택 삭제 시 자동으로 Instance도 삭제됨
스택 생성
AWS 관리 콘솔 → CloudFormation 서비스 → 스택 → 스택 생성
템플릿 준비 (준비된 템플릿) → 템플릿 파일 업로드 체크 → 파일 선택 (준비된 템플릿 yaml 파일 업로드)
준비된 템플릿 yaml 파일 내용
출처 : 따라하며 배우는 AWS 네트워크 입문 (저자 김원일, 서종호)
Resource 부분 Name을 수정하여 사용하였음
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.
LatestAmiId:
Description: (DO NOT CHANGE)
Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>'
Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2'
AllowedValues:
- /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2
Resources:
Instance0:
Type: AWS::EC2::Instance
Properties:
ImageId: !Ref LatestAmiId
InstanceType: t2.micro
KeyName: !Ref KeyName
Tags:
- Key: Name
Value: WebServer
SecurityGroups:
- !Ref securitygroup0
UserData:
Fn::Base64:
!Sub |
#!/bin/bash
yum install httpd -y
systemctl start httpd && systemctl enable httpd
echo "<h1>Test Web Server</h1>" > /var/www/html/index.html
securitygroup0:
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
스택 이름 지정 → KeyName(미리 만들어 둔 키 페어 선택) → 3단계 (스택 옵션 구성) 건너뛰기 → 4단계 (검토) 건너뛰기
생성 버튼 누른 후 아래처럼 CREATE_IN_PROGRESS 단계에서 기다리면 됨
실습 때는 InstanceType을 T2.micro로 리소스 자원이 적어 비교적 빠르게 생성된다는 걸 알고 있자
실제로 Type을 다르게 줘서 리소스가 큰 템플릿을 만들게되면 생성하는데 시간이 조금 더 걸림
템플릿 yaml 파일 내에서 정의내렸던 Instance와 securitygroup을 포함한 CF-TEST1 이라는 CloudFormation 스택이 생성 완료됨
스택으로 생성된 Instance 테스트
AWS 관리 콘솔 → EC2 서비스 → 인스턴스 → 생성된 인스턴스 체크 → 퍼블릭 IPv4 확인
Putty를 이용해 52.78.238.46 퍼블릭 IPv4로 ssh(22) 접속 테스트 성공
웹 서비스(80) 접근도 정상적으로 성공
스택 삭제
AWS 관리 콘솔 → CloudFormation → 스택 → 삭제할 스택 체크 → 삭제
스택 삭제 클릭
정상적으로 스택이 삭제된 것을 확인
스택이 삭제되면 해당 스택으로 생성된 Instance도 종료 상태(=삭제 상태)로 변함
'IT2 > AWS 개념' 카테고리의 다른 글
[AWS] VPC 구성 - Public Subnet (퍼블릭 서브넷) 1편 (0) | 2022.12.01 |
---|---|
[AWS] VPC(Virtual Private Cloud)란? (0) | 2022.11.30 |
[AWS] EC2 인스턴스 배포 및 사용 (with 웹 서비스 설치) (1) | 2022.11.06 |
[AWS] EC2 SSH 키 페어(key Pair) 생성 (.pem .ppk) (0) | 2022.11.05 |
[AWS] AWS 클라우드 소개 (0) | 2022.11.03 |