다른 CloudFormation 스택의 리소스 출력 참조
이 연습에서는 다른 스택 내에서 한 CloudFormation 스택의 출력을 참조하여 보다 모듈화되고 재사용 가능한 템플릿을 생성하는 방법을 보여줍니다.
단일 스택의 모든 리소스를 포함하는 대신 별도의 스택에서 관련 AWS 리소스를 생성합니다. 그런 다음 다른 스택의 필수 리소스 출력을 참조할 수 있습니다. 교차 스택 참조를 출력으로 제한하여 다른 스택에서 참조되는 스택 부분을 제어합니다.
예를 들어, VPC, 보안 그룹 및 퍼블릭 웹 애플리케이션의 서브넷을 포함하는 네트워크 스택과 별도의 퍼블릭 웹 애플리케이션 스택이 있습니다. 웹 애플리케이션에서 네트워크 스택의 보안 그룹과 서브넷을 사용하도록 하려면 웹 애플리케이션 스택에서 네트워크 스택의 리소스 출력을 참조하도록 허용하는 교차 스택 참조를 생성합니다. 교차 스택 참조를 사용하면 웹 애플리케이션 스택 소유자가 네트워킹 규칙 또는 자산을 생성하거나 유지할 필요가 없습니다.
교차 스택 참조를 생성하려면 Export
출력 필드를 사용하여 내보낼 리소스 출력 값에 플래그를 표시합니다. 그런 다음 Fn::ImportValue
내장 함수를 사용하여 값을 가져옵니다. 자세한 내용은 배포된 CloudFormation 스택에서 내보낸 출력 가져오기 단원을 참조하십시오.
참고
CloudFormation은 무료 서비스입니다. 하지만 스택에 포함시키는 AWS 리소스에 대해서는 리소스별 현재 시세로 요금이 청구됩니다. AWS 요금에 대한 자세한 내용은 각 제품의 세부 정보 페이지
1단계: 샘플 템플릿을 사용하여 네트워크 스택 생성
이 연습을 시작하기 전에 Amazon VPC, Amazon EC2 및 CloudFormation 서비스를 모두 사용할 수 있는 IAM 권한이 있는지 확인합니다.
네트워크 스택에는 웹 애플리케이션 스택에서 사용할 VPC, 보안 그룹 및 서브넷이 포함되어 있습니다. 이러한 리소스 외에 네트워크 스택에서는 퍼블릭 액세스를 활성화하기 위해 인터넷 게이트웨이 및 라우팅 테이블을 생성합니다.
웹 애플리케이션 스택을 생성하기 전에 이 스택을 생성해야 합니다. 웹 애플리케이션 스택을 먼저 생성한 경우에는 보안 그룹 또는 서브넷이 없습니다.
스택 템플릿은 https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleNetworkCrossStack.templateOutputs
섹션에서 샘플 템플릿에서 내보내는 네트워킹 리소스를 확인할 수 있습니다. 다른 스택의 네트워킹 리소스를 내보낼 경우 내보낸 리소스의 이름에 스택 이름이 접두사로 붙습니다. 사용자가 네트워킹 리소스를 가져올 때 리소스를 가져올 스택을 지정할 수 있습니다.
네트워크 스택을 생성하려면
-
CloudFormation 콘솔
을 열고 스택 생성을 선택합니다. -
Template is ready(템플릿 준비 완료)를 선택하고 Specify template(템플릿 지정) 섹션에서 Amazon S3 URL을 선택하십시오.
-
다음 URL을 복사하고 텍스트 상자에 붙여넣습니다.
https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleNetworkCrossStack.template
. -
Next(다음)를 선택합니다.
-
스택 이름에
SampleNetworkCrossStack
을 입력하고 다음을 선택합니다.참고
이 스택의 이름을 기록해 둡니다. 웹 애플리케이션 스택을 시작할 때 스택 이름이 필요합니다.
-
Next(다음)를 선택합니다. 이 연습에서는 태그를 추가하거나 고급 설정을 지정할 필요가 없습니다.
-
스택 이름과 템플릿 URL이 올바른지 확인한 다음 스택 생성을 선택합니다.
CloudFormation에서 스택을 생성하는 데 몇 분 정도 걸릴 수 있습니다. 모든 리소스가 생성될 때까지 기다렸다가 웹 애플리케이션 스택 생성을 계속합니다.
-
진행 상황을 모니터링하려면 스택 이벤트를 확인합니다. 자세한 내용은 스택 진행 상황 모니터링 단원을 참조하십시오.
2단계: 샘플 템플릿을 사용하여 웹 애플리케이션 스택 생성
웹 애플리케이션 스택에서는 네트워크 스택에서 보안 그룹 및 서브넷을 사용하는 EC2 인스턴스를 생성합니다.
네트워크 스택과 동일한 AWS 리전에서 이 스택을 생성해야 합니다.
스택 템플릿은 https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleWebAppCrossStack.templateResources
섹션에서 EC2 인스턴스의 속성을 봅니다. Fn::ImportValue
함수를 사용하여 다른 스택에서 네트워킹 리소스를 가져오는 방법을 확인할 수 있습니다.
웹 애플리케이션 스택을 생성하려면
-
CloudFormation 콘솔
을 열고 스택 생성을 선택합니다. -
Template is ready(템플릿 준비 완료)를 선택하고 Specify template(템플릿 지정) 섹션에서 Amazon S3 URL을 선택하십시오.
-
다음 URL을 복사하고 텍스트 상자에 붙여넣습니다.
https://s3.amazonaws.com/cloudformation-examples/user-guide/cross-stack/SampleWebAppCrossStack.template
. -
Next(다음)를 선택합니다.
-
스택 이름에는
SampleWebAppCrossStack
을 입력합니다. 파라미터 섹션에서 NetworkStackName 파라미터에 대한 기본값을 사용한 다음 다음을 선택합니다.샘플 템플릿에서는 파라미터 값을 사용하여 값을 가져올 스택을 지정합니다.
-
Next(다음)를 선택합니다. 이 연습에서는 태그를 추가하거나 고급 설정을 지정할 필요가 없습니다.
-
스택 이름과 템플릿 URL이 올바른지 확인한 다음 스택 생성을 선택합니다.
CloudFormation에서 스택을 생성하는 데 몇 분 정도 걸릴 수 있습니다.
3단계: 스택이 설계대로 작동하는지 확인
스택이 생성된 이후에 리소스를 보고 인스턴스 ID를 기록해 둡니다. 스택 리소스 보기에 대한 자세한 내용은 CloudFormation 콘솔에서 스택 정보 보기 단원을 참조하십시오.
인스턴스의 보안 그룹과 서브넷을 확인하려면 Amazon EC2 콘솔SampleNetworkCrossStack
스택의 보안 그룹 및 서브넷을 사용하는 경우 교차 스택 참조를 성공적으로 생성한 것입니다.
콘솔을 사용하여 스택 출력과 예제 웹 사이트 URL을 보고 웹 애플리케이션이 실행 중인지 확인합니다. 자세한 내용은 CloudFormation 콘솔에서 스택 정보 보기 단원을 참조하십시오.
4단계: 리소스 정리
원치 않는 서비스에 대해 요금이 청구되지 않도록 하려면 스택을 삭제합니다.
스택을 삭제하려면
-
CloudFormation 콘솔에서
SampleWebAppCrossStack
스택을 선택합니다. -
작업을 선택한 다음 스택 삭제를 선택합니다.
-
확인 메시지에서 삭제를 선택합니다.
-
스택이 삭제된 후
SampleNetworkCrossStack
스택에 대해 동일한 단계를 반복합니다.참고
CloudFormation에서
SampleWebAppCrossStack
스택을 완전히 삭제할 때까지 기다립니다. EC2 인스턴스가 VPC에서 계속 실행 중인 경우 CloudFormation은SampleNetworkCrossStack
스택에서 VPC를 삭제하지 않습니다.