(참고) CloudFormation이란: https://jibinary.tistory.com/442
CloudFormation 템플릿을 여러 리전 & 계정에서 공유하는 법
CloudFormation StackSets
StackSets는 여러 AWS 계정과 Region(지역)에 동일한 Stack을 배포하는 기능이다.
즉, CloudFormation 템플릿 하나만으로 여러 AWS 계정과 리전에 일관된 AWS 리소스를 쉽게 배포하고 업데이트할 수 있다. (일일이 매번 따로 설정할 필요 없이 StackSets으로 재배포 가능)
🔬 StackSet (스택셋)
StackSet을 만들 때는 CloudFormation 템플릿을 사용하며, 배포할 계정과 리전을 지정한다.
그리고 StackSet을 통해 스택(Stack Instance)을 생성한다.
(Management Console → CloudFormation → StackSets → "Create StackSet" → StackSet 템플릿 업로드)
🔬 스택 인스턴스(Stack Instance)
Stack Instance는 StackSet을 사용하여 특정 계정과 리전에 생성된 개별 Stack이다.
사용 예시
예시) 회사가 여러 AWS 계정과 여러 리전에서 네트워크 설정이나 공통 인프라를 배포하려고 할 경우
- AWS 계정과 리전을 대상으로 StackSet를 생성한다
- StackSet을 통해 각 계정과 리전에 Stack Instance를 배포한다
StackSets의 2가지 배포 방식
- Service-managed StackSets
- Self-managed StackSets
👨🔧Service-managed StackSets
- AWS Organizations와 통합되어 작동한다.
- 관리 계정에서 StackSets를 설정하고 조직 단위(OU)나 특정 AWS 계정을 선택하여 배포한다.
- AWS Organizations의 자동화된 관리가 가능하므로 운영비용(overhead)가 낮다.
- 필요한 IAM Role(예: AWSCloudFormationStackSetExecutionRole)이 각 계정에 자동으로 생성된다.
👨🔧 Self-managed StackSets
- AWS Organizations 없이 StackSets를 설정하고 배포한다.
- 배포할 계정과 리전을 직접 지정해야 한다.
- IAM Role을 직접 관리해야 하므로 운영비용(overhead)이 상대적으로 높다.
- 각 계정에 대해 IAM Role(예: AWSCloudFormationStackSetExecutionRole)을 직접 설정해야 한다.
Nested Stacks(중첩 스택)
Nested Stacks은 하나의 CloudFormation Stack 안에서 다른 Stack(sub-stack)을 호출하는 방식이다.
즉, 여러 개의 CloudFormation 템플릿을 계층적으로 구성하여 모듈화하고 재사용성을 높일 수 있는 기능이다.
🤔 문제
개발자는 API의 지리적 로드 테스트를 수행해야 합니다. 이를 위해 여러 AWS 리전에 리소스를 배포해야 합니다. 추가 애플리케이션 코드를 작성하지 않고 이 요구 사항을 충족하는 방법은 무엇입니까?
- 각 원하는 리전에 AWS Lambda 함수를 생성하고 배포합니다. 함수가 호출될 때 해당 리전에서 AWS CloudFormation 템플릿으로 stack을 생성하도록 Lambda 함수를 구성합니다.
- 로드 테스트 리소스를 정의하는 AWS CloudFormation 템플릿을 생성합니다. AWS CLI의 create-stack-set 명령을 사용하여 원하는 리전에서 StackSet를 생성합니다.
- 리소스를 정의하는 AWS Systems Manager 문서를 생성합니다. 해당 문서를 사용하여 원하는 리전에서 리소스를 생성합니다.
- 로드 테스트 리소스를 정의하는 AWS CloudFormation 템플릿을 생성합니다. AWS CLI의 deploy 명령을 사용하여 각 리전에서 템플릿에서 stack을 생성합니다.
정답
정답. 2번
하나의 CloudFormation 템플릿으로 create-stack-set을 통해 여러 리전이나 AWS 계정에 동일한 스택을 배포 할 수 있다.
🤔 문제
SysOps 관리자가 AWS CloudFormation 템플릿을 사용하여 VPC를 성공적으로 배포했습니다. 이제 이 관리자는 AWS Organizations를 통해 관리되는 여러 계정에 동일한 템플릿을 배포하려고 합니다.
어떤 솔루션이 최소한의 운영 오버헤드로 이 요구 사항을 충족할 수 있을까요?
- 관리 계정에서 OrganizationAccountAccessRole IAM 역할을 가정하고 각 계정에 템플릿을 배포합니다.
- 각 계정에서 역할을 가정할 AWS Lambda 함수를 생성하고 AWS CloudFormation CreateStack API 호출을 사용하여 템플릿을 배포합니다.
- AWS Lambda 함수를 생성하여 계정 목록을 조회하고, AWS CloudFormation CreateStack API 호출을 사용하여 템플릿을 배포합니다.
- 관리 계정에서 AWS CloudFormation StackSets를 사용하여 각 계정에 템플릿을 배포합니다.
정답
정답. 4번