https://docs.aws.amazon.com/ko_kr/AWSCloudFormation/latest/UserGuide/Welcome.html


AWS CloudFormation은 AWS 리소스를 모델링하고 설정하여 리소스 관리 시간을 줄이고 AWS에서 실행되는 애플리케이션에 더 많은 시간을 사용하도록 해 주는 서비스입니다. 필요한 모든 AWS 리소스(예: Amazon EC2 인스턴스 또는 Amazon RDS DB 인스턴스)를 설명하는 템플릿을 생성하면 CloudFormation이 해당 리소스의 프로비저닝과 구성을 담당합니다. AWS 리소스를 개별적으로 생성하고 구성할 필요가 없으며 어떤 것이 무엇에 의존하는지 파악할 필요도 없습니다. CloudFormation에서 모든 것을 처리합니다. 다음 시나리오는 CloudFormation이 얼마나 유용한지를 보여줍니다.

템플릿

CloudFormation 템플릿은 JSON 또는 YAML 형식의 텍스트 파일입니다. .json.yaml.template 또는 .txt 등 모든 확장명으로 파일을 저장할 수 있습니다. CloudFormation에서는 템플릿을 AWS 리소스 구축을 위한 블루프린트로 사용합니다. 예를 들어, 템플릿에서 인스턴스 유형, AMI ID, 블록 디바이스 매핑, Amazon EC2 키 페어 이름 등과 같은 Amazon EC2 인스턴스를 설명할 수 있습니다. 스택을 생성할 때마다 CloudFormation에서 템플릿에 설명된 항목을 생성하는 데 사용되는 템플릿도 지정합니다.

예를 들어, 다음 템플릿을 사용하여 스택을 생성한 경우 CloudFormation에서는 ami-0ff8a91507f77f867 AMI ID, t2.micro 인스턴스 유형, testkey 키 페어 이름 및 Amazon EBS 볼륨을 사용하여 인스턴스를 프로비저닝합니다.

{
    "AWSTemplateFormatVersion" : "2010-09-09",
    "Description" : "A sample template",
    "Resources" : {
      "MyEC2Instance" : {
        "Type" : "AWS::EC2::Instance",
        "Properties" : {
          "ImageId" : "ami-0ff8a91507f77f867",
          "InstanceType" : "t2.micro",
          "KeyName" : "testkey",
          "BlockDeviceMappings" : [
            {
              "DeviceName" : "/dev/sdm",
              "Ebs" : {
                "VolumeType" : "io1",
                "Iops" : 200,
                "DeleteOnTermination" : false,
                "VolumeSize" : 20
              }
            }
          ]
        }
      },
      "MyEIP" : {
        "Type" : "AWS::EC2::EIP",
        "Properties" : {
          "InstanceId" : {"Ref": "MyEC2Instance"}
        }
      }
    }
  }
AWSTemplateFormatVersion: "2010-09-09"
Description: A sample template
Resources:
  MyEC2Instance:
    Type: "AWS::EC2::Instance"
    Properties: 
      ImageId: "ami-0ff8a91507f77f867"
      InstanceType: t2.micro
      KeyName: testkey
      BlockDeviceMappings:
        -
          DeviceName: /dev/sdm
          Ebs:
            VolumeType: io1
            Iops: 200
            DeleteOnTermination: false
            VolumeSize: 20
  MyEIP:
    Type: AWS::EC2::EIP
    Properties:
      InstanceId: !Ref MyEC2Instance

스택

CloudFormation을 사용할 경우 스택이라는 하나의 단위로 관련 리소스를 관리합니다. 스택을 생성, 업데이트, 삭제하여 리소스 모음을 생성, 업데이트 및 삭제합니다. 스택의 모든 리소스는 스택의 CloudFormation 템플릿으로 정의합니다. Auto Scaling 그룹, Elastic Load Balancing 로드 밸런서 및 Amazon Relational Database Service(Amazon RDS) 데이터베이스 인스턴스를 포함하는 템플릿을 생성했다고 가정합니다. 이러한 리소스를 생성하려면 생성한 템플릿을 제출하여 스택을 생성합니다. 그러면 CloudFormation에서 모든 리소스를 자동으로 프로비저닝합니다. CloudFormation 콘솔API 또는 AWS CLI를 사용하여 스택 작업을 수행할 수 있습니다.

스택 생성, 업데이트 또는 삭제에 대한 자세한 내용은 스택 작업 단원을 참조하십시오.

템플릿 섹션

템플릿에는 여러 주요 섹션이 포함되어 있습니다. Resources 섹션만 필수 섹션입니다. 템플릿의 일부 섹션은 임의 순서대로 배열할 수 있습니다. 하지만 템플릿을 작성할 때 한 섹션의 값이 이전 섹션의 값을 참조할 수도 있으므로 다음 목록의 논리적 순서를 사용하는 것이 유용할 수 있습니다.

포맷 버전(선택 사항)

템플릿이 따르는 AWS CloudFormation 템플릿 버전입니다. 템플릿 포맷 버전은 API 또는 WSDL 버전과 같지 않습니다. 템플릿 포맷 버전은 API 및 WSDL 버전과 상관없이 변경될 수 있습니다.

Description(선택 사항)

템플릿을 설명하는 텍스트 문자열입니다. 이 섹션은 항상 템플릿 포맷 버전 섹션 다음에 이어져야 합니다. Metadata(선택 사항)