일반

AWS CloudFormation은 개발자와 기업이 손쉽게 관련 AWS 및 서드 파티 리소스의 모음을 쉽게 생성하고 순서에 따라 예측 가능한 방식으로 프로비저닝 및 관리할 수 있는 방법을 제공하는 서비스입니다.

개발자는 특정 리소스 API의 복잡성을 해소하는 단순한 선언적인 스타일로 컴퓨팅, 데이터베이스를 비롯해 그 밖의 많은 리소스를 배포하고 업데이트할 수 있습니다. AWS CloudFormation은 리소스 수명 주기를 예측 가능한 방식으로 반복해서 안전하게 관리할 수 있게 해 줄 뿐 아니라, 자동 롤백, 자동 상태 관리 그리고 계정 및 리전 전반에 걸친 리소스 관리를 지원합니다. 최근에 향상된 기능 및 추가된 옵션을 통해 다양한 방법으로 리소스를 생성할 수 있게 되었는데, 여기에는 상위 수준 언어 코딩을 위한 AWS CDK 개선, 기존 리소스 가져오기, 구성 편차 감지 그리고 CloudFormation의 많은 핵심적인 이점을 그대로 상속받는 사용자 지정 유형을 더 쉽게 생성할 수 있게 해 주는 새로운 Registry가 포함됩니다.

이 두 서비스는 상호 보완할 수 있도록 설계되었습니다. AWS Elastic Beanstalk는 클라우드에서 손쉽게 애플리케이션을 배포하고 실행할 수 있는 환경을 제공합니다. 개발자 도구와 통합되며 애플리케이션의 수명 주기를 한곳에서 관리할 수 있는 환경을 제공합니다. 애플리케이션 워크로드를 Elastic Beanstalk 워크로드로 관리할 수 있는 경우 애플리케이션을 생성하고 업데이트할 때 좀 더 턴키 스타일에 가까운 환경을 경험할 수 있습니다. Elastic Beanstalk는 내부적으로 CloudFormation을 사용하여 리소스를 생성 및 유지 관리합니다. 애플리케이션에 사용자 지정 수준이 좀 더 높은 제어가 요구되는 경우 CloudFormation의 추가 기능을 통해 더 다양한 옵션으로 워크로드를 제어할 수 있습니다.

AWS CloudFormation은 광범위한 AWS 및 서드 파티 리소스를 편리하게 배포할 수 있는 메커니즘입니다. 기존의 엔터프라이즈 애플리케이션, 레거시 애플리케이션, 다양한 AWS 리소스 및 컨테이너 기반 솔루션을 사용해 구축된 애플리케이션(AWS Elastic Beanstalk를 사용해 구축된 애플리케이션 포함)과 같은 각종 애플리케이션의 인프라 요구를 지원합니다.

AWS CloudFormation은 AWS 리소스 유형 중 하나로 Elastic Beanstalk 애플리케이션 환경을 지원합니다. 따라서 애플리케이션 데이터를 저장하는 RDS 데이터베이스와 함께 AWS Elastic Beanstalk에 호스팅되는 애플리케이션을 생성하고 관리할 수 있습니다. 지원되는 모든 AWS 리소스를 그룹에 추가할 수 있습니다.

CloudFormation에는 4가지 개념이 새로 도입되었는데, 먼저 템플릿은 애플리케이션을 배포하는 데 필요한 모든 리소스의 의도된 상태를 설명하는 JSON 또는 YAML 선언형 코드 파일입니다. 스택은 템플릿에 명시된 리소스 그룹을 구현 및 관리하며, 이러한 리소스의 상태 및 종속성을 함께 관리할 수 있게 해 줍니다. 변경 세트는 리소스의 생성, 업데이트 또는 제거를 위해 스택 작업을 통해 실행할 변경 사항의 미리 보기입니다. 스택 세트는 그룹을 복제할 수 있으며 함께 관리하는 스택 그룹입니다.

지원되는 AWS 리소스 및 해당 기능의 전체 목록을 보려면 설명서의 릴리스 기록에서 지원되는 AWS 서비스 페이지를 참조하십시오.

AWS CloudFormation Registry 및 AWS CloudFormation 사용자 지정 리소스를 사용하면 추가 AWS 및 서드 파티 리소스를 관리할 수 있습니다.

예. 가능합니다. CloudFormation은 전혀 방해가 되지 않으므로, 사용자는 인프라의 모든 요소에 대해 전체 권한을 그대로 유지하며, 모든 기존 AWS 및 서드 파티 도구를 계속 사용하여 AWS 리소스를 관리할 수 있습니다. 하지만 CloudFormation에서는 추가적인 규칙, 모범 사례 및 규정 준수 제어를 반영할 수 있기 때문에 CloudFormation에서 리소스의 변경 사항을 관리하도록 허용하는 것이 좋습니다. 이처럼 예측 가능하고 제어된 접근 방식을 활용하면 애플리케이션 포트폴리오에서 수백 또는 수천 개의 리소스를 관리하는 데 도움이 됩니다.

CloudFormation 템플릿은 다음과 같은 다섯 가지 유형의 요소로 구성된 JSON 또는 YAML 형식의 텍스트 파일입니다.

1. 템플릿 매개 변수 목록(옵션이며 스택 생성 시 입력 값 제공)
2. 출력 값의 선택적 목록(예: 웹 애플리케이션에 대한 전체 URL)
3. 정적 구성 값을 조회하는 데 사용되는 데이터 테이블의 선택적 목록(예: AMI 이름)
4. AWS 리소스 및 해당 구성 값 목록
5. 템플릿 파일 형식 버전 번호

템플릿 파라미터는 스택을 구축할 때 런타임 시 템플릿이 어떻게 작동할지를 사용자 정의하는 데 사용됩니다. 예를 들어, 스택이 생성되면 Amazon RDS 데이터베이스 크기, Amazon EC2 인스턴스 유형, 데이터베이스 및 웹 서버 포트 번호를 AWS CloudFormation으로 전달할 수 있습니다. 각 파라미터에는 기본값과 설명이 포함될 수 있으며, 화면에 입력한 실제 값을 숨기기 위해 AWS CloudFormation 이벤트 로그에 “NoEcho”로 표시될 수 있습니다. AWS CloudFormation 스택을 생성하면 AWS Management Console에서 자동으로 사용자가 매개 변수 값을 편집할 수 있는 팝업 대화 상자 양식을 구성하여 표시합니다.

출력 값은 AWS Management Console 또는 명령줄 도구를 통해 스택의 주요 리소스(예: Elastic Load Balancing 로드 밸런서 또는 Amazon RDS 데이터베이스의 주소)를 사용자에게 제공할 수 있는 편리한 방법입니다. 단순한 함수를 사용해 실제 AWS 리소스와 연결된 문자열 리터럴 및 속성 값을 연결할 수 있습니다. 또한 템플릿은 Registry 리소스 유형, 자체 사용자 지정 프라이빗 유형, 자체 매크로를 활용할 수 있을 뿐 아니라, AWS Secrets Manager 및 AWS System Manager Parameter Store에서 구성 파라미터를 검색할 수도 있습니다.

템플릿에서 AWS 리소스에 논리적 이름을 할당할 수 있습니다. 스택이 생성되면 AWS CloudFormation은 논리적 이름을 이에 해당하는 실제 AWS 리소스의 이름에 바인딩합니다. 실제 리소스 이름은 스택 및 논리적 리소스 이름의 조합입니다. 따라서 AWS 리소스 간의 이름 충돌을 염려할 필요 없이 하나의 템플릿에서 여러 스택을 생성할 수 있습니다.

AWS CloudFormation에서는 Amazon S3 버킷 등 일부 리소스에 이름을 지정할 수 있지만, 모든 리소스에 이름을 지정할 수는 없습니다. 리소스에 이름을 지정하면 템플릿을 재사용하기 힘들고 업데이트하기 위해 리소스를 교체할 때 이름에 충돌이 생깁니다. CloudFormation에서는 이러한 문제를 최소화하기 위해 상황에 따라 리소스 이름 지정을 지원합니다.

예. AWS CloudFormation은 애플리케이션 부트스트랩 스크립트 세트를 제공하므로, CloudFormation 템플릿에 이들에 대한 설명을 제공하는 간단한 방식으로 EC2 인스턴스에 패키지, 파일 및 서비스를 설치할 수 있습니다. 자세한 내용과 방법은 AWS CloudFormation을 통한 애플리케이션 부트스트랩을 참조하세요.

CloudFormation을 Systems Manager와 통합하면 Systems Manager Automation 문서를 통해 소프트웨어 설치를 진행하고 유지 관리할 수 있습니다.

예. AWS CloudFormation은 EC2 인스턴스에서 Chef Server 및 Chef Client 소프트웨어를 부트스트랩하는 데 사용할 수 있습니다. 자세한 내용과 방법은 AWS CloudFormation과 Chef의 통합을 참조하세요.

예. AWS CloudFormation은 EC2 인스턴스에서 Puppet Master 및 Puppet Client 소프트웨어를 부트스트랩하는 데 사용할 수 있습니다. 자세한 내용과 방법은 AWS CloudFormation과 Puppet의 통합을 참조하세요.

예. CloudFormation은 EC2 인스턴스에서 Terraform 엔진을 부트스트랩하고, Terraform 리소스 공급자를 통해 스택 리소스 관리, 종속성, 안정화 및 롤백을 활용하여 스택에 리소스를 생성할 수 있습니다.

예. 태그 지정 기능을 지원하는 Amazon EC2 리소스에도 AWS 템플릿에서 태그를 지정할 수 있습니다. 템플릿 파라미터, 기타 리소스 이름, 리소스 속성 값(예: 주소), 단순 함수로 계산한 값(예: 연결된 문자열 목록) 등을 태그 값으로 나타낼 수 있습니다. CloudFormation은 Amazon EBS 볼륨 및 Amazon EC2 인스턴스가 속한 CloudFormation 스택의 이름을 사용하여 해당 볼륨 및 인스턴스에 자동으로 태그를 지정합니다.

예. 단순한 함수를 사용해 AWS 리소스의 문자열 리터럴과 속성 값을 연결하고, 이를 템플릿의 사용자 데이터 필드에 전달할 수 있습니다. 이 사용하기 쉬운 기능에 대한 자세한 내용은 Amazon의 샘플 템플릿을 참조하십시오.

기본적으로 “Automatic rollback on error” 기능이 활성화되어 있습니다. 이 경우 CloudFormation은 모든 개별 작업에 성공할 경우 스택의 모든 리소스를 생성 또는 업데이트만 하게 됩니다. 그렇지 않을 경우 CloudFormation은 마지막으로 알려진 안정된 구성으로 스택을 되돌립니다. 이 기능은 예를 들어, 실수로 탄력적 IP 주소 제한을 초과했거나 실행하려는 EC2 AMI에 액세스할 수 있는 권한이 없는 경우에 유용합니다. 이 기능을 사용하면 스택이 완전히 생성되거나 전혀 생성되지 않는다는 점을 이용해, 시스템 관리와 CloudFormation에 구축된 계층형 솔루션을 간소화할 수 있습니다.

예. CloudFormation의 옵션 중 하나는 장벽처럼 작용해 애플리케이션 또는 관리 시스템과 같은 외부 소스에서 완료 신호가 수신될 때까지 다른 리소스의 생성을 차단하는 WaitCondition 리소스입니다. 그 밖의 옵션에는 AWS Lambda 함수를 통한 사용자 지정 로직 생성 등이 있습니다.

예. CloudFormation을 사용해 템플릿에서 리소스에 대한 삭제 정책을 정의할 수 있습니다. Amazon EBS 볼륨 또는 Amazon RDS 데이터베이스 인스턴스가 삭제되기 전에 이에 대해 생성할 스냅샷을 지정할 수 있습니다. 스택이 삭제될 때 리소스를 삭제하지 않고 보존하도록 지정할 수도 있습니다. 이 기능은 스택이 삭제될 때 Amazon S3 버킷을 보존하려는 경우에 유용합니다.

예. CloudFormation은 VPC에서 탄력적 IP, Amazon EC2 인스턴스, EC2 보안 그룹, Auto Scaling 그룹, Elastic Load Balancer, Amazon RDS 데이터베이스 인스턴스 및 Amazon RDS 보안 그룹과 같은 리소스를 생성할 뿐 아니라, VPC, 서브넷, 게이트웨이, 라우팅 테이블 및 네트워크 ACL을 생성하는 기능도 지원합니다.

예. CloudFormation을 사용해 제어되고 있는 기존 스택의 리소스를 예측 가능한 방식으로 수정 및 업데이트할 수 있습니다. 템플릿을 사용해 스택 변경 사항을 관리하여, 버전 관리를 AWS 인프라에서 실행되는 소프트웨어에 적용하는 것과 같은 방법으로 AWS 인프라에 적용할 수 있습니다.

예! 리소스 가져오기를 활용하면 리소스 가져오기를 통해 기존 리소스를 AWS CloudFormation 관리로 가져올 수 있습니다.

시작하기

CloudFormation에 가입하려면 CloudFormation 제품 페이지에서 무료 계정 생성을 클릭하세요. 가입한 후 CloudFormation 설명서를 참조하세요. 여기에는 시작하기 안내서도 포함되어 있습니다.

CloudFormation에 가입하려면 연락이 필요한 경우에 대비하여 유효한 전화번호와 이메일 주소를 AWS에 제출해야 합니다. 전화번호를 확인하는 데는 몇 분밖에 걸리지 않습니다. 가입 프로세스 중에 자동 전화를 받고 전화기의 키패드를 사용해 PIN 번호를 입력합니다.

CloudFormation을 시작하는 가장 좋은 방법은 AWS 기술 설명서에 포함된 시작하기 안내서를 참조하는 것입니다. 몇 분 내에 WordPress 등과 같은 애플리케이션을 실행하는 데 필요한 인프라 생성 방법을 설명하는 샘플 템플릿 중 하나를 배포하여 사용할 수 있습니다. 서드 파티 커리큘럼 공급자부터 웹상의 자습서 및 문서에 이르기까지 그 밖의 다양한 CloudFormation 교육 소스도 마련되어 있습니다. 자세한 내용은 CloudFormation 리소스를 참조하세요.

예, CloudFormation에는 테스트 드라이브를 통해 해당 기능을 탐색하는 데 사용할 수 있는 샘플 템플릿이 포함되어 있습니다. AWS의 샘플 템플릿에서는 여러 AWS 리소스를 한 번에 상호 연결해서 사용하는 방법과 여러 가용 영역 중복성에 대한 모범 사례 준수, 확장 및 경보에 대해 설명합니다. AWS Management Console로 이동하여 스택 생성을 클릭하고 단계를 따라 샘플 중 하나를 선택하여 시작하면 됩니다. 스택이 생성되고 나면 콘솔에서 해당 스택을 선택한 다음, 각각의 스택을 생성하는 데 사용된 템플릿 파일의 세부 정보를 템플릿과 파라미터 탭에서 확인합니다. GitHub에서도 샘플 템플릿을 사용할 수 있습니다.

AWS CloudFormation Registry

AWS CloudFormation Registry는 AWS 및 서드 파티 리소스 유형을 등록, 사용 및 검색할 수 있는 관리형 서비스입니다. 서드 파티 리소스 유형을 등록해야 AWS CloudFormation 템플릿으로 리소스를 프로비저닝하는 데 사용할 수 있습니다. 자세한 내용은 AWS 설명서에서 AWS CloudFormation Registry 사용을 참조하세요.

리소스 공급자는 생성, 읽기, 업데이트, 삭제 및 나열 작업을 통해 기본 리소스의 수명주기를 제어하는 사양과 핸들러가 포함된 리소스 유형 세트입니다. CloudFormation으로 리소스 공급자를 사용하고 리소스를 프로비저닝할 수 있습니다. 예를 들어, AWS::EC2::Instance는 Amazon EC2 공급자의 리소스 유형입니다. 이 유형을 사용하여 CloudFormation으로 Amazon EC2 인스턴스를 모델링하고 프로비저닝할 수 있습니다. CloudFormation Registry를 사용하면 리소스 공급자를 만들고 사용하여 SaaS 모니터링, 팀 생산성 또는 소스 코드 관리 리소스 등의 타사 리소스를 모델링하고 프로비저닝할 수 있습니다.

AWS 리소스 공급자와 타사 리소스 공급자의 차이점은 출처입니다. AWS 리소스 공급자는 Amazon과 AWS에서 AWS 리소스 및 서비스를 관리하기 위해 만들고 유지 관리합니다. 예를 들어, 3개의 AWS 리소스 공급자가 Amazon DynamoDB, AWS Lambda 및 Amazon EC2 리소스를 관리하는 데 도움이 됩니다. 이러한 공급자에는 AWS::DynamoDB::Table, AWS::Lambda::Function 및 AWS::EC2::Instance 등의 리소스 유형이 들어 있습니다. 자세한 내용은 당사 설명서를 참조하십시오.

타사 리소스 공급자는 다른 회사, 조직 또는 개발자 커뮤니티에서 만듭니다. 타사 리소스 공급자를 통해 모니터링, 팀 생산성, 인시던트 관리 또는 버전 제어 관리 도구 등의 비 AWS SaaS소스트웨어 서비스와 AWS 애플리케이션 리소스를 비롯한 비 AWS 리소스와 AWS 리소스를 모두 관리할 수 있습니다.

리소스 스키마는 정형화되고 일관된 형식으로 리소스 유형을 정의합니다. 이 스키마는 리소스 유형의 정의를 확인하는 데도 사용됩니다. 스키마에는 특정 리소스 유형에 대해 지원되는 모드 파라미터 및 속성은 물론, 최소한의 권한으로 리소스를 생성하는 데 필요한 권한이 포함됩니다.

AWS CloudFormation CLI를 사용하여 리소스 공급자를 만듭니다. 먼저 필요한 권한과 다른 리소스와의 관계를 포함하는 리소스에 대한 단순한 선언적 스키마를 정의합니다. 그런 다음 CloudFormation CLI를 사용하여 유닛 및 통합 테스트를 위한 테스트 스텁과 함께 리소스 수명 주기 핸들러(만들기, 읽기, 업데이트, 삭제 및 나열)에 대한 스캐폴딩을 생성합니다.

오픈 소스 AWS CloudFormation CLI를 사용할 수도 있고, AWS SDK와 AWS CLI를 통해 사용할 수 있는 RegisterType과 관련 Registry API를 직접 호출할 수도 있습니다. 자세한 내용은 AWS 설명서에서 AWS CloudFormation Registry 사용을 참조하세요. AWS 리소스 공급자는 바로 사용 가능하며 사용 전에 어떠한 추가 등록 단계도 필요 없습니다.

AWS CloudFormation 퍼블릭 레지스트리

2019년 출시된 CloudFormation 레지스트리는 프라이빗 리스팅으로 구성되었으며, 이를 통해 고객은 전용 사용 목적으로 CloudFormation을 확장할 수 있습니다. 퍼블릭 레지스트리는 CloudFormation 레지스트리를 확장하며, 리소스 유형 및 모듈을 공유, 검색, 이용 및 관리하기 위한 검색 가능한 퍼블릭 중앙 위치를 추가합니다.<> 이를 통해 AWS 및 서드 파티 제품 모두에 대해 일관된 방식으로 인프라와 애플리케이션을 보다 쉽게 구성하고 관리할 수 있습니다.

예. CloudFormation 요금 페이지를 참조하세요.

예. CloudFormation 퍼블릭 레지스트리에서 확인된 게시자의 큐레이팅된 콘텐츠에 액세스할 수 있습니다. 먼저, AWS Marketplace 또는 서드 파티(예: GitHub 및 Bitbucket)를 통해 각 게시자의 자격 증명을 확인합니다.

CloudFormation 퍼블릭 레지스트리는 AWS 파트너 네트워크(APN) 파트너 및 개발자 커뮤니티에서 게시한 리소스 유형(프로비저닝 로직) 및 모듈을 포함하는, 검색 가능한 새로운 관리형 확장 기능 카탈로그입니다. 이제 누구나 CloudFormation 퍼블릭 레지스트리를 통해 레지스트리에서 리소스 유형 및 모듈을 게시할 수 있습니다. 고객은 이러한 게시된 리소스 유형 및 모듈을 쉽게 검색하고 사용할 수 있으므로, 직접 구축하고 관리하지 않아도 됩니다.

리소스 유형은 프로비저닝 로직을 포함하는 코드 패키지로, 이를 통해 Amazon EC2 인스턴스 또는 Amazon DynamoDB 테이블과 같은 리소스의 수명 주기(생성부터 삭제)를 관리하여 복잡한 API 상호 작용을 추상화할 수 있습니다. 리소스 유형은 리소스의 형태 및 속성을 정의하는 스키마와 리소스를 프로비저닝, 업데이트, 삭제 및 기술하는 데 필요한 로직을 포함합니다. CloudFormation 퍼블릭 레지스트리에서 서드 파티 리소스 유형의 예로는, Datadog 모니터, MongoDB Atlas Project 또는 Atlassian Opsgenie User가 있습니다.

모듈은 여러 CloudFormation 템플릿에서 재사용할 수 있는 구성 요소로, 네이티브 CloudFormation 리소스와 같이 사용됩니다. 이러한 구성 요소는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스 정의 모범 사례와 같은 단일 리소스에 대한 항목이거나 애플리케이션 아키텍처의 공통 패턴을 정의하기 위한 다중 리소스에 대한 항목일 수 있습니다.

링크를 참조하여 AWS CloudFormation 레지스트리에 리소스 또는 모듈을 개발하여 추가할 수 있습니다. 그리고 비공개로 게시하거나 퍼블릭 레지스트리에 게시할 수 있습니다.

결제

AWS::*, Alexa::* 및 Custom::*과 같은 네임스페이스의 리소스 공급자에서 AWS CloudFormation을 사용하는 경우 추가 요금은 부과되지 않습니다. 이 경우 수동으로 생성했을 때와 같이 AWS CloudFormation을 사용해 생성한 AWS 리소스(예: Amazon EC2 인스턴스, Elastic Load Balancing 로드 밸런서 등)에 대해서만 요금을 지불하면 됩니다. 종량제로 요금이 청구되며 최소 요금 및 선수금은 없습니다.

위에서 언급한 네임스페이스 외부의 AWS CloudFormation에서 리소스 공급자를 사용하는 경우 핸들러 작업당 요금이 부과됩니다. 핸들러 작업은 리소스에서 생성, 업데이트, 삭제, 읽기 또는 나열 작업을 말합니다. 자세한 내용은 요금 페이지를 참조하세요.

예. 템플릿 인스턴스화 도중 생성된 AWS 리소스에 대한 비용은 전체 스택이 성공적으로 생성되었는지 여부에 관계없이 부과됩니다.

한도 및 제한

생성할 수 있는 AWS CloudFormation 스택의 최대 수에 대한 자세한 내용은 AWS CloudFormation 할당량에서 스택을 참조하세요. 여기에서 한도 증가 요청을 작성해 주세요. 업무일 기준 2일 이내에 답변해 드리겠습니다.

자세한 내용은 AWS CloudFormation 할당량에서 템플릿 설명과, AWS 설명서에서 파라미터, 리소스출력을 참조하세요.

템플릿에 지정할 수 있는 파라미터 및 출력 수에 대한 자세한 내용은 AWS CloudFormation 할당량에서 파라미터와 출력 섹션을 참조하세요.

템플릿에 선언할 수 있는 리소스의 수에 대한 자세한 내용은 AWS CloudFormation 할당량에서 리소스를 참조하세요. 템플릿과 스택을 이보다 적게 생성하고 여러 스택에 걸쳐 애플리케이션을 모듈화하는 것이 모범 사례입니다. 이 경우 리소스 변경 사항에 대한 영향 범위가 최소화될 뿐 아니라, 소규모 리소스 그룹은 대규모 그룹보다 종속성이 덜 복잡하기 때문에 여러 리소스 종속성과 관련된 문제를 더 빨리 해결할 수 있게 됩니다.

리전 및 엔드포인트

각 리전에 대한 엔드포인트는 기술 설명서AWS CloudFormation 엔드포인트에서 확인할 수 있습니다.

CloudFormation의 리전별 가용성에 대한 자세한 정보는 리전별 제품 및 서비스를 참조하세요.