본문 바로가기

AWS

AWS - CloudFormation (실습)

728x90

CloudFormation 사용한 AWS 기본 인프라 구축 

  • 사전 구성
    • 없음
  • 실습 내용
    • CloudFormation을 활용한 AWS 인프라 구축 
    • YAML 언어 사용
    • VPC, SUBNET, Internet Gateway, EC2 생성 

CloudFormation 서비스 

CloudFormation  >> 스택 생성 >> Designer에서 템플릿 생성 

 

 CloudFormation 템플릿 구성

  • 템플릿 언어: YAML 선택
  • 템플릿 작성내용은 화면 좌측 하단의 템플릿 선택 
  • 코드 작성 이후 유효성 검사 수행 및 스택 생성 실행
    • 체크박스: 유효성 검사
    • 구름모양: 스택 생성

AWSTemplateFormatVersion: 2010-09-09
Description: >-
  AWS CloudFormation Template to create VPC, Subnet, Internet Gateway, Routing
  Table, and EC2 Instance
Parameters:
  KeyName:
    Type: AWS::EC2::KeyPair::KeyName
    Description: Name of an existing EC2 KeyPair to enable SSH access to the instance
Resources:
  MyVPC:
    Type: 'AWS::EC2::VPC'
    Properties:
      CidrBlock: 192.168.0.0/16
      Tags:
        - Key: Name
          Value: CFVPC_192.168.0.0

  MySubnet:
    Type: 'AWS::EC2::Subnet'
    Properties:
      VpcId: !Ref MyVPC
      AvailabilityZone: ap-northeast-2a
      CidrBlock: 192.168.0.0/24
      Tags:
        - Key: Name
          Value: CFVPC_Public

  MyInternetGateway:
    Type: 'AWS::EC2::InternetGateway'
    Properties:
      Tags:
        - Key: Name
          Value: CF_IGW

  AttachGateway:
    Type: 'AWS::EC2::VPCGatewayAttachment'
    Properties:
      VpcId: !Ref MyVPC
      InternetGatewayId: !Ref MyInternetGateway

  MyRouteTable:
    Type: 'AWS::EC2::RouteTable'
    Properties:
      VpcId: !Ref MyVPC
      Tags:
        - Key: Name
          Value: CF_RouteTable

  DefaultRoute:
    Type: 'AWS::EC2::Route'
    Properties:
      RouteTableId: !Ref MyRouteTable
      DestinationCidrBlock: 0.0.0.0/0
      GatewayId: !Ref MyInternetGateway

  SubnetRouteTableAssociation:
    Type: 'AWS::EC2::SubnetRouteTableAssociation'
    Properties:
      SubnetId: !Ref MySubnet
      RouteTableId: !Ref MyRouteTable
  MySecurityGroup1:
    Type: 'AWS::EC2::SecurityGroup'
    Properties:
      GroupDescription: Enable SSH access
      VpcId: !Ref MyVPC
      SecurityGroupIngress:
        - IpProtocol: tcp
          FromPort: 22
          ToPort: 22
          CidrIp: 0.0.0.0/0
        - IpProtocol: tcp
          FromPort: 80
          ToPort: 80
          CidrIp: 0.0.0.0/0

  MyInstance:
    Type: 'AWS::EC2::Instance'
    Properties:
      InstanceType: t2.micro
      ImageId: ami-081a36454cdf357cb
      KeyName: !Ref KeyName
      NetworkInterfaces:
        - AssociatePublicIpAddress: true
          DeviceIndex: 0
          DeleteOnTermination: true
          SubnetId: !Ref MySubnet
          GroupSet:
            - !Ref MySecurityGroup1

 

 

 

 CloudFormation 스택 생성

  • 스택 생성: 생성된 템플릿은 S3 스토리지에 자동으로 저장되며, 스택 생성화면에서 S3 URL을 참조 

 

  • 스택 이름 및 파라미터 지정
    • 파라미터는 템플릿에서 정의한 Parameter 항목 

 

  • 스택 옵션 구성 
    • 태그, 권한, 스택 실패 옵션, 고급 옵션, 롤백 구성, 모니터링, 알람 옵션 및 스택 생성 옵션을 정의 할 수 있음.
    • 스택 생성 옵션에서 종료 방지를 활성화 할 경우 스택이 삭제 되더라도 스택에 의해 생성된 리소스는 보존 되며, 기본값을 사용할 경우 스택을 삭제 하면 스택에 의해 생성된 리소스도 자동으로 삭제 됩니다.  

  • 검토 및 작성
    • 1단계부터 수행한 스택 생성에 대한 정보 확인 후 생성 진행 

 

 CloudFormation 스택 생성 결과 확인

  • 이벤트 항목에서 스택에 의해 생성되는 이벤트 확인 가능 
  • 리소스 탭에서는 스택에 의해 생성되는 리소스 VPC, SUBNET, Internet Gateway, EC2와 같은 AWS 리소스 결과물 확인 가능

# 이벤트 내용

 

# 생성된 AWS 리소스

 

# 생성된 EC2에 접속하여 외부 통신 및 할당 받은 IP 확인 진행

728x90

'AWS' 카테고리의 다른 글

AWS - Cloud Front (CDN)  (0) 2024.03.22
AWS - CloudFormation EC2 사용자 정의 데이터  (0) 2024.03.07
AWS - CloudFormation  (1) 2024.03.07
AWS - S3 (Simple Storage Service)  (0) 2024.03.02
AWS - Elastic File Storage (EFS)  (0) 2024.03.02