[aws] CloudFormation으로 인스턴스 만들기

11133 단어 CloudFormationAWS

개요



aws CloudFormatinon를 사용하여 테스트를 위해 하나의 인스턴스를 만듭니다.

CloudFormation이란?



AWS 시스템 구성은 JSON 또는 YAML로 작성된 템플릿을 사용하여 관리, 수정, 편집 등을 자동으로 수행할 수 있는 기능입니다.
템플릿으로 만든 환경을 スタック라고 합니다.
파일을 작성해 두는 것으로 환경을 사용하게 하는 점이 매우 편리합니다.

템플릿 정보



이번에 작성하는 환경의 템플릿은 다음과 같습니다.
테스트용 인스턴스를 하나 시작하는 구성입니다.
내장 함수인 Ref 로 구성을 연결하고 있는 이미지가 됩니다.
또한 아래 예에서는 ssh의 SG를 0.0.0.0/0로 하고 있으므로, 각자의 환경에 맞추어 수정해 주세요.
# デフォルト記述
AWSTemplateFormatVersion: '2010-09-09'
# Key pair の指定。
# AWSコンソールでパラメータを指定
Parameters:
  KeyPair:
    Description: KeyPair Name
    Type: AWS::EC2::KeyPair::KeyName
# EC2のイメージID
Mappings:
  StackConfig:
    EC2:
      ImageId: 'ami-923d12f5'
Resources:
# VPCの作成
  PracticeVPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 10.0.0.0/16
      Tags:
        - Key: Name
          Value: PracticeVPC
# InternetGateWayの作成
  PracticeIGW:
    Type: AWS::EC2::InternetGateway
    Properties:
      Tags:
        - Key: Name
          Value: PracticeIGW
# IGWをVPCにアタッチ
  AttachIGW:
    Type: AWS::EC2::VPCGatewayAttachment
    Properties:
      InternetGatewayId: !Ref PracticeIGW
      VpcId: !Ref PracticeVPC
# RouteTableの作成
  PracticePublicRoute:
    Type: AWS::EC2::RouteTable
    Properties:
      VpcId: !Ref PracticeVPC
      Tags:
        - Key: Name
          Value: PracticePublicRoute
# Routeingの設定
  Route:
    Type: AWS::EC2::Route
    DependsOn: AttachIGW
    Properties:
      RouteTableId: !Ref PracticePublicRoute
      DestinationCidrBlock: 0.0.0.0/0
      GatewayId: !Ref PracticeIGW
# PublicSubnetの作成
  PublicSubnet:
    Type: AWS::EC2::Subnet
    Properties:
      AvailabilityZone: ap-northeast-1a
      CidrBlock: 10.0.1.0/24
      VpcId: !Ref PracticeVPC
      Tags:
        - Key: Name
          Value: PracticePublicSubnet
# SubnetにRouteテーブルを紐づける
  PublicSubnetRouteTabelAssociation:
    Type: AWS::EC2::SubnetRouteTableAssociation
    Properties:
      SubnetId: !Ref PublicSubnet
      RouteTableId: !Ref PracticePublicRoute
# セキュリティグループの作成
# port22と80を解放
  PracticeSG:
    Type: AWS::EC2::SecurityGroup
    Properties:
      VpcId: !Ref PracticeVPC
      GroupDescription: PracticeSG
      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
      Tags:
        - Key: Name
          Value: PracticeSG
# EC2インスタンスの作成
  PracticeEC2:
    Type: AWS::EC2::Instance
    Properties:
      AvailabilityZone: ap-northeast-1a
      InstanceType: t2.micro
      ImageId: !FindInMap [ StackConfig, EC2, ImageId ]
      KeyName: !Ref KeyPair
      SubnetId: !Ref PublicSubnet
      SecurityGroupIds:
        - !GetAtt PracticeSG.GroupId
      Tags:
        - Key: Name
          Value: PracticeEnv
# ElasticIPの作成
  PracticeIP:
    Type: AWS::EC2::EIP
    Properties:
      InstanceId: !Ref PracticeEC2

환경 만들기



AWS 콘솔에서 다음과 같이 생성합니다.サービス → CloudFormation → スタックの作成 → スタックの詳細 → オプションの設定 → スタックの作成
  • 스택 만들기

  • 작성한 yaml 파일을 업로드합니다.


  • 스택 세부 사항

  • 스택의 이름과 매개변수를 지정합니다.
    임의의 이름과 ssh를 수행하는 각자의 개인 키를 지정하십시오.


  • 옵션 설정

  • 태그나 IAM 롤, 알람등을 설정할 수 있습니다만 이번은 특별히 설정을 실시하지 않습니다.



    스택 만들기를 누르고 CREATE_COMPLETE되면 완료됩니다.



    환경 삭제



    CloudFormation에서 만든 환경은 대상 스택을 삭제하여 해당 스택에서 만든 환경을 일괄적으로 삭제할 수 있습니다.

    좋은 웹페이지 즐겨찾기