중첩 스택을 사용하여 스택을 다른 스택 내에 포함 - AWS CloudFormation

중첩 스택을 사용하여 스택을 다른 스택 내에 포함

중첩 스택은 다른 스택의 일부로 생성된 스택입니다. AWS::CloudFormation::Stack 리소스를 사용하여 다른 스택 내에 중첩 스택을 생성합니다.

인프라가 커짐에 따라 여러 템플릿에 동일한 구성 요소를 선언하는 공통 패턴이 나타날 수 있습니다. 이러한 공통 구성 요소를 구분해 해당 구성 요소를 위한 전용 템플릿을 생성할 수 있습니다. 그런 다음에 템플릿의 리소스를 사용하여 다른 템플릿을 참조해 중첩 스택을 생성 합니다.

예를 들어 대부분의 스택에 사용하는 로드 밸런서 구성이 있다고 가정해 보겠습니다. 동일한 구성을 복사하여 템플릿에 붙여 넣는 대신 로드 밸런서 전용 템플릿을 생성할 수 있습니다. 그런 다음 리소스를 사용하여 다른 템플릿 내에서 해당 템플릿을 참조하기만 하면 됩니다.

중첩 스택에는 다른 중첩 스택이 포함될 수 있으며 아래 다이어그램과 같이 스택 계층 구조가 생성됩니다. 루트 스택은 모든 중첩 스택이 궁극적으로 속하는 최상위 스택입니다. 또한 각 중첩 스택에는 직속 상위 스택이 있습니다. 중첩 스택의 첫 레벨의 경우 루트 스택이 상위 스택이기도 합니다. 아래 다이어그램을 예로 들어 보겠습니다.

  • 스택 A는 계층 구조에 있는 다른 모든 중첩 스택의 루트 스택입니다.

  • 스택 B의 경우에는 스택 A가 상위 스택이자 루트 스택입니다.

  • 스택 C의 경우 스택 B가 상위 스택이고 스택 D의 상위 스택은 스택 C입니다.

다른 스택의 일부로 생성된 중첩 스택에는 직속 상위 스택과 최상위 루트 스택이 있습니다.

CloudFormation 템플릿 분할

이 예제에서는 큰 CloudFormation 템플릿 하나를 가져와서 중첩 템플릿을 사용하여 더 정형화되고 재사용 가능한 설계로 재구성하는 방법을 보여줍니다. 처음에 "스택 중첩 전" 템플릿에는 파일 하나에 정의된 모든 리소스가 표시됩니다. 리소스 수가 늘어날수록 이 과정이 복잡해지고 관리하기 어려워질 수 있습니다. "스택 중첩 후" 템플릿에서는 리소스를 중첩 스택이라는 더 작은 별도의 템플릿으로 분할합니다. 각 중첩 스택에서는 특정 관련 리소스 세트를 처리하므로 전체 구조가 더 체계적으로 구성되고 유지 관리가 더 쉬워집니다.

스택 중첩 전

스택 중첩 후

AWSTemplateFormatVersion: '2010-09-09' Parameters: InstanceType: Type: String Default: 't2.micro' Description: 'The EC2 instance type' Environment: Type: String Default: 'Production' Description: 'The deployment environment' Resources: MyEC2Instance: Type: 'AWS::EC2::Instance' Properties: ImageId: ami-1234567890abcdef0 InstanceType: !Ref InstanceType MyS3Bucket: Type: 'AWS::S3::Bucket'
AWSTemplateFormatVersion: '2010-09-09' Resources: MyFirstNestedStack: Type: 'AWS::CloudFormation::Stack' Properties: TemplateURL: 'https://s3.amazonaws.com/amzn-s3-demo-bucket/first-nested-stack.yaml' Parameters: # Pass parameters to the nested stack if needed InstanceType: 't3.micro' MySecondNestedStack: Type: 'AWS::CloudFormation::Stack' Properties: TemplateURL: 'https://s3.amazonaws.com/amzn-s3-demo-bucket/second-nested-stack.yaml' Parameters: # Pass parameters to the nested stack if needed Environment: 'Testing' DependsOn: MyFirstNestedStack

중첩 스택에서 스택 작업 수행

스택에 중첩된 스택이 있는 경우 특정 작업을 수행할 때는 중첩 스택을 주의해서 올바르게 처리해야 합니다. 스택 업데이트와 같은 일부 스택 작업은 중첩 스택에서 직접 수행하는 것이 아니라 루트 스택에서 시작해야 합니다. 추가로 경우에 따라 중첩된 스택의 존재가 루트 스택에서의 작업 수행 방식에 영향을 미칠 수 있습니다.

다음 절차를 사용하여 루트 스택과 중첩 스택을 찾습니다.

중첩 스택의 루트 스택을 보려면
  1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/cloudformation에서 AWS CloudFormation 콘솔을 엽니다.

  2. 스택 페이지에서 루트 스택을 확인하고자 하는 중첩 스택의 이름을 선택합니다.

    중첩 스택은 스택 이름 위에 NESTED가 표시됩니다.

  3. 스택 정보 탭에서 개요 섹션의 루트 스택으로 나열된 스택 이름을 선택합니다.

루트 스택에 속한 중첩 스택을 보려면
  1. 중첩 스택을 보려는 루트 스택에서 리소스 탭을 선택합니다.

  2. 유형 열에 AWS::CloudFormation::Stack 유형의 리소스를 찾습니다.