AWS

[AWS] CloudFormation

bbiyak2da 2023. 1. 10. 17:19

 

CloudFormation은, 인프라코드로 처리하여 AWS 및 서드 파티 리소스를 모델링, 프로비저닝 및 관리할 수 있다.

 

이를 사용하기 위해, 우선 템플릿 파일을 생성해보자

 

1. 템플릿 파일 생성

visual studio code를 설치한 후, 열어준다.

 

왼쪽 5번째 사각 버튼을 클릭한 후, CloudFormation을 설치해준다.

 

새 파일을 만들어준다. 필자는 1_lab2.yml이라는 파일을 생성하였다.

파일을 생성할 때, 주의할 점은 뒤에 확장명yml 혹은 yaml으로 끝나야 한다는 점이다.

 

Parameters:
  KeyName:
    Description: Name do an esisting RC2 KeyPair to enable SSH access to the instances. Linked to AWS Parameters
    Type: AWS::EC2::KeyPair::KeyName
    ConstraintDescription: must be the name of an existing EC2 KeyPair.

Resources:
  MyInstance: # EC2 인스턴스 이름
    Type: AWS::EC2::Instance # EC2 인스턴스 
    Properties:
      ImageId: 본인 ami ID
      InstanceType: t2.micro # 인스턴스 유형
      KeyName: !Ref KeyName # 키 페어 참조
      Tags: # 태그
        - Key: Name
          Value: WebServer
      SecurityGroups: # EC2에 연결될 보안그룹 지정
        - !Ref MySG # MySG라는 보안그룹 참조
      UserData:
        Fn::Base64:
          !Sub |
           #!/bin/bash
           yum install httpd -y # apache 설치
           systemctl start httpd # apache 실행 
           echo "<h1>Test Web Server</h1>" > /var/www/html/index.html # Test Web Server이라는 문구를, /var/www/html/index.html 파일 안에 넣기

  MySG: # 보안그룹 이름
    Type: AWS::EC2::SecurityGroup # 보안그룹
    Properties:
      GroupDescription: Enable HTTP access via port 80 and SSH access via port 22 # 설명 (http 포트 80번, SSH 포트 22번을 열겠다.)
      SecurityGroupIngress:
      - IpProtocol: tcp # 80번 포트
        FromPort: 80
        ToPort: 80
        CidrIp: 0.0.0.0/0
      - IpProtocol: tcp # 22번 포트
        FromPort: 22
        ToPort: 22
        CidrIp: 0.0.0.0/0

 

코드를 입력해준 뒤, 저장해준다.

 


2. 스택 올리기

 

1단계에서 만든 템플릿 파일을 이용하여, 스택을 올린다.

 

CloudFormation -> 스택 -> 스택생성 클릭

준비된 템플릿 -> 템플릿 파일 업로드 클릭

 

1단계에서 만든 템플릿 파일을 업로드한다.

이후 다음 클릭

스택 이름 : 원하는 스택 이름으로 지정

KeyName : 본인의 키 페어로 지정

태그 또한 원하는 대로 달아준다.

이후 스택 생성

완료

실패 뜨면 삭제한 뒤,

오류 확인하고, 오류 수정 뒤 다시 스택 올리면 된다.


3. 확인

 

스택이 정상적으로 올라왔다면

생성된 EC2 인스턴스를 확인한다.

 

Xshell 새 세션에

EC2 인스턴스 퍼블릭 IP 입력

 

사용자 이름 : ec2-user

방법 : Public Key

설정 - 사용자 키 - RSA 키 불러온 후 연결

 

 sudo su - : root로 전환

vim /var/www/html/index.html : /var/www/html/index.html 파일 열어서, 템플릿 파일에 입력한 대로 코드가 있는지 확인

systemctl restart httpd : httpd 재시작 

systemctl status httpd : httpd 상태 확인 

 

 

인스턴스의 퍼블릭 IP로 접속

정상적으로 웹 접속이 잘 되면 성공


4. 삭제

 

CloudFormation -> 스택 -> 원하는 스택 클릭 -> 삭제 버튼