스택 템플릿 업데이트
CloudFormation 스택의 리소스 또는 속성을 수정하려면 스택의 템플릿을 업데이트해야 합니다. 해당 스택의 기존 템플릿으로 시작하여 변경 사항을 적용합니다. 소스 제어 시스템에 저장된 템플릿이 있으면 해당 템플릿의 사본을 시작 지점으로 사용합니다. 아니면 CloudFormation에서 템플릿의 사본을 가져올 수 있습니다.
스택의 파라미터 또는 설정(예: 스택의 Amazon SNS 주제)만 변경하려면 사본을 가져오지 않고 기존 템플릿을 재사용할 수 있습니다.
Infrastructure Composer 또는 텍스트 편집기를 사용하여 CloudFormation 스택 템플릿을 업데이트할 수 있습니다.
Infrastructure Composer를 사용하여 기존 스택 템플릿을 업데이트하려면 다음을 수행하세요.
-
CloudFormation 콘솔
의 스택 페이지에서 업데이트할 스택의 이름을 선택합니다. -
선택한 스택의 스택 세부 정보 창에서 템플릿 탭을 선택한 다음 Infrastructure Composer에서 보기를 선택합니다.
-
CloudFormation에서는 Infrastructure Composer에서 템플릿을 엽니다. 여기에서 리소스(카드)를 리소스 팔레트에서 끌어서 놓고 구성하고 연결할 수 있습니다. 자세한 내용은 AWS 인프라 컴포저에서 구성하는 방법을 참조하세요.
AWS CLI를 사용하여 기존 스택 템플릿을 업데이트하는 방법
-
업데이트할 스택의 템플릿을 가져오려면 get-template CLI 명령을 사용합니다.
-
템플릿을 복사하고 텍스트 파일에 붙여 넣은 다음 수정한 후 저장합니다. 템플릿만 복사합니다. 이 명령에서는 템플릿이 따옴표 안에 지정되지만, 따옴표는 복사하지 마십시오. 템플릿 자체는 열기 괄호에서 시작하여 닫기 괄호로 끝납니다. 이 파일에 스택 리소스에 대한 변경 내용을 지정합니다.
템플릿에 변경 사항을 적용할 때는 다음 사항에 유의하세요.
-
업데이트를 지원하지 않는 리소스에서 사용되는 파라미터를 추가, 수정 또는 삭제할 수 없습니다.
-
대부분 리소스의 경우, 리소스의 논리적 이름을 변경하면 해당 리소스가 삭제되고 새 리소스로 대체됩니다. 이름이 변경된 리소스에 종속된 다른 리소스는 모두 업데이트해야 하며 대체될 수도 있습니다. 그 밖의 리소스는 업데이트를 시작하기 위해 (논리적 이름뿐만 아니라) 속성도 업데이트해야 합니다.
-
일부 리소스에는 특정 속성에 설정할 수 있는 값에 대한 제약 조건이 있을 수 있습니다. 예를 들어, RDS 데이터베이스 인스턴스의
AllocatedStorage
속성에 대한 변경은 현재 값보다 커야 합니다. 업데이트에서 이러한 규칙을 위반하면 해당 부분이 실패합니다. -
하나의 리소스를 업데이트하면 해당 리소스를 참조하는 다른 리소스에도 영향을 미칠 수 있습니다.
Ref
또는GetAtt
같은 함수를 사용하여 다른 리소스를 기반으로 속성을 설정하는 경우 CloudFormation에서는 참조된 리소스가 변경되면 참조하는 리소스도 업데이트합니다. -
특정 리소스 속성 업데이트에 따른 영향에 대한 자세한 내용을 알아보려면 AWS 리소스 유형 참조를 참조하세요. 각 속성마다 업데이트의 영향은 다음 중 하나입니다.
-
validate-template CLI 명령을 사용하거나 콘솔에서 템플릿을 지정하여 템플릿의 JSON 또는 YAML 구문을 확인할 수 있습니다. 콘솔은 유효성 검사를 자동으로 수행합니다. 하지만 이러한 방법은 템플릿의 구문만 확인하고 리소스에 지정한 속성 값이 해당 리소스에 유효한지는 확인하지 않습니다. 더 복잡한 유효성 검사 또는 모범 사례 검사의 경우 CloudFormation Linter(cfn-lint)
및 CloudFormation Rain(rain fmt) 같은 추가 도구를 사용할 수 있습니다.
참고
가끔 CloudFormation에서는 적용하려는 특정 변경 사항을 허용하지 않고, 변경이 허용되지 않는다고 알려줍니다. 이 메시는 비동기적으로 발생할 수 있지만, 리소스가 CloudFormation에 의해 기본적으로 비확정적인 순서에 따라 생성 및 업데이트됩니다.