본문 바로가기
IT/읽어보기

AWS CloudFormation이란?

by ccclog 2024. 6. 25.
반응형

AWS CloudFormation은 AWS에서 제공하는 인프라 자동화 도구로, AWS 리소스를 코드로 정의하고 관리할 수 있게 해줍니다. JSON 또는 YAML 형식의 템플릿 파일을 사용하여 인프라를 프로비저닝, 업데이트, 삭제할 수 있습니다. CloudFormation을 사용하면 인프라의 설정을 자동화하고, 재사용 가능하며, 일관된 방식으로 관리할 수 있습니다.

주요 특징

  1. 템플릿 기반 관리:
    • CloudFormation은 JSON 또는 YAML 형식의 템플릿 파일을 사용하여 AWS 리소스를 정의합니다. 템플릿에는 인프라의 구성 요소와 이들의 관계가 명시됩니다.
  2. 스택(Stack):
    • 스택은 CloudFormation 템플릿을 기반으로 생성된 AWS 리소스의 모음입니다. 스택을 통해 리소스를 일괄적으로 생성, 업데이트, 삭제할 수 있습니다.
  3. 드리프트 감지(Drift Detection):
    • 드리프트 감지 기능을 사용하면 스택의 실제 상태가 템플릿의 정의와 일치하는지 확인할 수 있습니다. 이 기능을 통해 변경 관리가 쉬워집니다.
  4. 변경 세트(Change Sets):
    • 변경 세트를 사용하면 스택에 대한 변경 사항을 미리 검토할 수 있습니다. 변경 세트를 통해 변경이 적용되기 전에 영향을 파악할 수 있습니다.
  5. 자동 롤백:
    • 스택 업데이트가 실패하면 자동으로 이전 상태로 롤백하여 안정성을 보장합니다.
  6. 서버리스 애플리케이션 관리:
    • AWS SAM(Serverless Application Model)과 통합되어 서버리스 애플리케이션을 쉽게 관리할 수 있습니다.

기본 구성 요소

  1. 템플릿(Template):
    • CloudFormation 템플릿은 인프라의 구성 요소와 이들의 속성을 정의합니다. 기본 구성 요소에는 Resources, Parameters, Mappings, Conditions, Outputs 등이 포함됩니다.
  2. 리소스(Resources):
    • 템플릿에서 Resources 섹션은 생성할 AWS 리소스를 정의합니다. 예를 들어, EC2 인스턴스, S3 버킷, RDS 데이터베이스 등을 정의할 수 있습니다.
  3. 파라미터(Parameters):
    • 파라미터는 템플릿에서 동적으로 값을 입력받을 수 있도록 합니다. 이를 통해 템플릿을 더 유연하게 사용할 수 있습니다.
  4. 매핑(Mappings):
    • 매핑은 파라미터 값에 따라 다른 값을 반환하는 정적 데이터 테이블입니다.
  5. 조건(Conditions):
    • 조건은 특정 상황에서만 리소스를 생성하거나 속성을 적용하도록 합니다.
  6. 출력값(Outputs):
    • 출력값은 스택이 생성된 후 중요한 정보를 출력하는 데 사용됩니다. 예를 들어, 생성된 리소스의 ID나 URL 등을 출력할 수 있습니다.

CloudFormation 템플릿 예시

아래는 VPC, 서브넷, 그리고 EC2 인스턴스를 생성하는 간단한 YAML 형식의 CloudFormation 템플릿 예시입니다.

 
AWSTemplateFormatVersion: '2010-09-09' Description: AWS CloudFormation Template to create a VPC, Subnet, and EC2 Instance Resources: MyVPC: Type: 'AWS::EC2::VPC' Properties: CidrBlock: '10.0.0.0/16' Tags: - Key: Name Value: MyVPC MySubnet: Type: 'AWS::EC2::Subnet' Properties: VpcId: !Ref MyVPC CidrBlock: '10.0.1.0/24' Tags: - Key: Name Value: MySubnet MyEC2Instance: Type: 'AWS::EC2::Instance' Properties: InstanceType: t2.micro ImageId: ami-0c55b159cbfafe1f0 SubnetId: !Ref MySubnet Tags: - Key: Name Value: MyEC2Instance Outputs: InstanceId: Description: ID of the created EC2 instance Value: !Ref MyEC2Instance InstancePublicIp: Description: Public IP address of the created EC2 instance Value: !GetAtt MyEC2Instance.PublicIp

CloudFormation 주요 명령어

AWS CLI를 사용하여 CloudFormation을 관리할 수 있습니다. 주요 명령어는 다음과 같습니다.

  1. 스택 생성:
    aws cloudformation create-stack --stack-name my-stack --template-body file://template.yaml
  2. 스택 업데이트:
    aws cloudformation update-stack --stack-name my-stack --template-body file://template.yaml
  3. 스택 삭제:
    aws cloudformation delete-stack --stack-name my-stack
  4. 스택 이벤트 보기:
    aws cloudformation describe-stack-events --stack-name my-stack

결론

AWS CloudFormation은 AWS 리소스를 코드로 정의하고 관리하는 강력한 도구입니다. 템플릿 파일을 사용하여 일관되게 인프라를 배포하고, 스택을 통해 리소스를 일괄적으로 관리할 수 있습니다. CloudFormation의 주요 특징으로는 템플릿 기반 관리, 드리프트 감지, 변경 세트, 자동 롤백 등이 있으며, 이를 통해 안정적이고 효율적인 인프라 관리를 할 수 있습니다. JSON 또는 YAML 형식의 템플릿을 사용하여 AWS 리소스를 정의하고, 이를 기반으로 인프라를 자동화할 수 있습니다.

반응형

'IT > 읽어보기' 카테고리의 다른 글

YAML이란?  (0) 2024.06.27
JSON 파일이란?  (0) 2024.06.26
Terraform이란?  (0) 2024.06.24
클라우드 엔지니어가 되기 위한 로드맵  (0) 2024.06.23
클라우드 엔지니어와 DevOps 엔지니어의 차이점  (0) 2024.06.22