◇ 공부 기록용으로 작성하였으니 틀린점, 피드백 주시면 감사하겠습니다 ◇
Infrastructure as Code, IaC
CloudFormation
CloudFormation은 AWS에서 인프라를 코드로 관리(IaC)할 수 있게 해주는 서비스이다.
이를 통해 JSON 또는 YAML 형식의 템플릿 파일을 사용해 AWS 리소스를 자동으로 생성하고 관리할 수 있다.
📄 Template (템플릿):
- CloudFormation을 사용하기 시작하려면, 사용자는 먼저 "Template"이라는 코드를 작성해야 한다.
- JSON 또는 YAML 형식으로 인프라의 구조를 정의한다.
- 예를 들어 EC2 인스턴스의 인스턴스 유형이나 RDS의 파라미터 정의 등, AWS 리소스를 어떻게 사용할지에 대한 설계도와 같은 역할을 한다.
📚 Stack (스택):
- 템플릿을 작성한 후, 이를 CloudFormation에 로드하면 AWS 리소스가 프로비저닝된다.
- AWS 리소스는 "Stack"이라는 AWS 리소스의 집합 단위로 관리된다.
- 예를 들어, 하나의 스택에는 EC2 인스턴스, S3 버킷, VPC 등이 모두 포함되어 있다.
- 웹 애플리케이션이 필요 없을 때는, 개별 AWS 리소스를 삭제하는 대신 프로비저닝한 스택 전체를 삭제함으로써 해당 웹 애플리케이션에서 사용했던 리소스를 일괄적으로 삭제할 수 있다.
- 또한, 하나의 템플릿으로 여러 개의 스택을 생성할 수 있으며, 스택을 삭제한 경우에도 템플릿을 이용해 동일한 스택을 다시 생성하는 것도 가능하다.
템플릿은 직접 작성할 수도 있지만, AWS에서 제공하는 샘플을 이용하거나 관리 콘솔에서 GUI로 작성하는 것도 가능하다
👨🔧 Service Role
Service Role은 CloudFormation이 사용자 대신 Stack 내의 리소스를 조작할 수 있도록 허용하는 IAM Role이다.
이는 Stack 정의 시 지정할 수 있다.
Service Role을 지정하면, CloudFormation은 Stack에서 수행되는 모든 작업에 이 Role의 권한을 사용한다.
이를 통해 사용자가 개별 리소스에 대한 접근 권한이 없어도 AWS 리소스를 프로비저닝할 수 있다.
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-iam-servicerole.html
📚 StackSets (스택셋)
AWS CloudFormation으로 생성한 템플릿을 기반으로 여러 AWS 계정이나 여러 리전에서 스택을 구축하려면 "StackSets"을 사용한다.
관리 계정에서 만든 템플릿을 사용하여, 타겟 계정(프로비저닝할 계정)과 프로비저닝할 리전을 지정함으로써 한 번의 작업으로 여러 동일한 환경을 구축할 수 있다.
테스트 환경을 여러 개 구축하거나, 새 계정을 발급할 때 IAM이나 보안 그룹 설정 등의 사전 작업을 스택셋으로 만들어 둘 수 있다.
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html
Create, share, organize, and govern your curated IaC templates
👨🔧 AWS Service Catalog
AWS Service Catalog를 사용하면 조직 내의 사용자가 승인된 IT 서비스의 카탈로그에서 애플리케이션을 간편하게 검색, 실행 및 관리할 수 있습니다. 주로 규정 준수와 일관성을 유지하면서 사용자들이 필요한 AWS 리소스를 쉽게 배포하도록 한다.
AWS Service Catalog는 주로 CloudFormation 템플릿을 제품으로 등록하고, 이를 다른 AWS 사용자와 공유할 수 있는 서비스이다. 공유받은 AWS 사용자는 셀프 서비스로 제품에서 AWS 환경을 구축할 수 있다.
제품 관리자는 제품의 버전이나, 제품이 언제 누구에게 사용되었는지를 일괄적으로 관리할 수 있어, 공유하는 AWS 환경의 일관성과 컴플라이언스를 유지할 수 있다.
예를 들어, 시스템 관리자가 구축한 AWS 환경을 Service Catalog에 등록하여 애플리케이션 개발자와 공유하면, 애플리케이션 개발자는 쉽게 자신의 AWS 계정 내에 개발 환경을 구축할 수 있다.
또한, 시스템 관리자는 공유한 AWS 환경의 버전과 사용 이력을 일괄적으로 관리할 수 있다.
https://docs.aws.amazon.com/servicecatalog/latest/adminguide/what-is_concepts.html
'클라우드(AWS)' 카테고리의 다른 글
[AWS] SAM (Serverless Application Model)이란? 쉽게 정리 (SAM CLI, Template) (0) | 2024.10.02 |
---|---|
[AWS] CI/CD 서비스 쉽게 정리: Code Pipeline, Code Commit, Code Build, Code Deploy, CodeGuru, CodeStar, CodeArtifact (0) | 2024.10.02 |
[AWS] Redshift란? 쉽게 정리 (데이터 웨어하우스) (1) | 2024.09.14 |
[AWS] Security Group ID 란?? 쉽게 정리 (0) | 2024.09.12 |
[AWS] DMS (Database Migration Service)란? 쉽게 정리 (0) | 2024.09.12 |