'AWS로 구현하는 MAS와 컨테이너 오캐스트레이션' 강의를
블로그를 통해 구매하시는 분들에게만 10%할인 중입니다.
이미지를 클릭하고, 아래 쿠폰번호를 입력해 주세요!
16861-259843d6c2d7
CloudFormation 이란
- AWS 리소스를 코드로 정의하고 프로비저닝할 수 있게 해주는 서비스
- 주요 기능 및 장점:
- 인프라를 코드로 관리하여 버전 관리 및 재사용성 향상
- 자동화된 프로비저닝을 통해 일관성과 효율성 향상
- 코드로 작성된 템플릿을 사용하여 쉽게 인프라를 복제하고 배포
CloudFormation의 구성 요소
- Template: 인프라를 코드로 정의한 파일, JSON 또는 YAML 형식으로 작성
- Stack: 템플릿을 실행하여 생성된 AWS 리소스의 집합
- Change Set: 기존 스택에 대한 변경 사항을 미리 보여주는 기능
CloudFormation Template 구조
- 템플릿 작성 형식: JSON 또는 YAML 형식.
- 주요 섹션:
- Resources: 생성할 AWS 리소스를 정의 예) EC2 인스턴스, S3 버킷 등
- Parameters: 템플릿의 입력값을 정의 예) 인스턴스 유형, 키 페어 이름 등
- Outputs: 템플릿 실행 후 출력값을 정의 예) 인스턴스 ID, S3 버킷 URL 등
- Conditions: 리소스 생성 조건을 정의
- Mappings: 지역 또는 다른 기준에 따른 값 매핑
CloudFormation 사용 사례
- 인프라 자동화: 반복적인 인프라 설정 작업을 자동화하여 시간 절약 및 오류 감소
- 인프라 코드 관리 및 배포: 코드로 인프라를 정의하여 쉽운 버전 관리 및 배포
CloudFormation 실행 방법
- AWS Management Console: 웹 인터페이스를 통해 템플릿 업로드 및 스택 생성
- 템플릿 작성 및 업로드: 콘솔에서 JSON 또는 YAML 템플릿을 작성하거나 업로드
- 스택 생성: 템플릿을 기반으로 스택을 생성하여 AWS 리소스 배포
- 스택 관리: 생성된 스택의 상태 모니터링 및 관리
- AWS CLI: 명령줄 인터페이스를 사용하여 템플릿 실행 및 스택 관리
- 템플릿 실행: aws cloudformation create-stack 명령어를 사용하여 템플릿 실행
- 스택 업데이트: aws cloudformation update-stack 명령어를 통해 기존 스택 업데이트
- 스택 삭제: aws cloudformation delete-stack 명령어로 스택 삭제
- AWS SDK: 프로그래밍 언어를 사용하여 템플릿 실행 및 스택 관리
- SDK 사용: Python(Boto3), Java, JavaScript 등 다양한 프로그래밍 언어 SDK를 통해 CloudFormation 제어
- Sync from Git (새로운 기능)
- Git Repository에 저장된 코드로 템플릿 실행 및 스택 관리
- 지정한 브런치의 커밋을 트리거하여 업데이트
- 가장 최근에 나온 관리 기능
예제 템플릿 구조 (Yaml)
AWSTemplateFormatVersion: '2010-09-09'
Description: A simple CloudFormation template example
Parameters:
InstanceType:
Description: EC2 instance type
Type: String
Default: t2.micro
Resources:
MyEC2Instance:
Type: AWS::EC2::Instance
Properties:
InstanceType: !Ref InstanceType
ImageId: ami-0c55b159cbfafe1f0
Outputs:
InstanceId:
Description: The Instance ID
Value: !Ref MyEC2Instance
- AWSTemplateFormatVersion: 템플릿의 형식 버전을 지정
- Description: 템플릿의 간단한 설명
- Parameters: 템플릿 실행 시 사용자가 입력할 수 있는 값 정의, 여기서는 InstanceType 이라는 파라미터를 정의하여 생성할 EC2 인스턴스의 유형을 지정
- Description: 파라미터 대한 설명
- Type: 파라미터 유형 지정, 여기서는 String
- Default: 파라미터 기본값, 여기서는 t2.micro
- Resources: 생성할 AWS 리소스를 정의, 여기서는 MyEC2Instance 라는 이름의 EC2 인스턴스를 정의
- Type: 리소스 유형 지정, 여기서는 AWS::EC2::Instance
- Properties: 리소스의 속성 정의
- InstanceType: 파라미터 InstanceType에서 참조한 값을 사용해 인스턴스 유형을 지정
- ImageId: 인스턴스에 사용할 AMI ID 지정, 여기서는 ami-0c55b159cbfafe1f0
- Outputs: 템플릿 실행 후 출력할 값 정의, 여기서는 InstanceId 라는 이름으로 생성된 EC2 인스턴스의 ID 출력
- Description: 출력 값에 대한 설명
- Value: 출력할 값 지정, 여기서는 MyEC2Instance 리소스의 참조 값을 출력
'AWS' 카테고리의 다른 글
[AWS] VPC - 보안 네트워크 구축 (0) | 2024.07.11 |
---|---|
[AWS] Cloudformation Git Sync 를 통한 쉬운 인프라 배포 (+실습) (0) | 2024.07.04 |
[AWS] CodePipeline으로 CI/CD 구현하기 (2) | 2023.05.30 |
[AWS] CodeDeploy를 이용한 Docker 이미지 EC2 배포 (0) | 2023.05.26 |
[AWS] CodeBuild를 이용한 Docker 이미지 빌드 및 ECR에 저장 (1) | 2023.05.26 |