중첩 스택에 대한 변경 세트 - AWS CloudFormation

중첩 스택에 대한 변경 세트

중첩 스택에 대한 변경 세트를 사용하면 모든 중첩 스택 계층의 애플리케이션과 인프라 리소스 변경 사항을 미리 확인하고, 모든 변경 사항이 의도한 대로인지 확인한 후 업데이트를 진행할 수 있습니다.

중첩 스택에 대한 변경 세트를 설명하는 자세한 내용을 알아보려면 다음 섹션을 참조하세요.

변경 세트 및 중첩 스택 개요

중첩 스택에 대한 변경 세트는 다음의 기능을 함께 묶어서 전체 스택 계층의 변경 사항을 미리 확인하는 범위를 확장합니다.

  • 변경 세트는 스택에 제안된 변경 사항이 기존 또는 새로 생성된 리소스에 미치는 영향을 미리 볼 수 있는 CloudFormation 기능입니다. 변경 세트를 생성하면 CloudFormation이 스택과 제출한 리소스 변경 사항을 비교하여 제안된 변경 사항 목록을 제공합니다. 변경 세트에 대한 자세한 내용은 변경 세트를 사용하여 스택 업데이트를 참조하세요.

  • 중첩 스택은 다른 스택의 일부로 생성된 스택입니다. 중첩 스택을 생성하려면 템플릿의 Resource 섹션에서 AWS::CloudFormation::Stack 리소스를 지정합니다. 예를 들어 하나의 중첩 스택에 네트워킹 및 보안 관련 리소스가 있고 다른 중첩 스택에 애플리케이션 리소스가 있을 수 있습니다. 이렇게 애플리케이션 모델의 파티션을 나누면 코드 유지 관리와 재사용에 도움이 됩니다. 중첩 스택에 대한 자세한 내용은 중첩 스택 작업을 참조하세요.

중첩 스택에 대한 변경 세트 작업(콘솔)

  • 변경 세트 생성 – 스택 계층의 아무 수준에서 변경 사항을 제출하여 변경 세트를 생성합니다. 수정된 스택 템플릿 또는 수정된 입력 파라미터 값을 제출하면 CloudFormation이 중첩 스택과 제출된 변경 사항을 비교하여 변경 세트를 생성합니다. 중첩 스택에 대한 변경 세트는 기본적으로 CloudFormation 콘솔에서 활성화됩니다. 자세한 내용은 변경 세트 생성을 참조하세요.

    중첩 스택에 대한 변경 세트 생성은 기본적으로 Enabled(활성화) 상태입니다.
    참고

    루트 변경 세트는 스택과 연결된 변경 세트이고, 여기에서 변경 세트의 전체 계층이 생성됩니다. 루트 변경 세트에서 중첩 스택에 대한 변경 세트를 실행하거나 삭제해야 합니다.

  • 변경 세트 보기 – 중첩 스택 내부의 리소스 변경 사항을 실행하기 전에 시각화합니다. 변경 세트의 변경 사항 섹션에서 현재 스택과 중첩 변경 세트를 탐색하여 제안된 변경 사항을 확인할 수 있습니다. 자세한 내용은 변경 세트 보기를 참조하세요.

  • 변경 세트 실행 – 현재 스택 및 하위 항목과 관련된 변경 세트에 나와 있는 변경 사항을 실행합니다. 실행 작업은 루트 변경 세트에서 시작해야 합니다. 자세한 내용은 변경 세트 실행을 참조하세요.

  • 변경 세트 삭제 – 현재 스택에서 변경 세트를 제거합니다. 변경 세트를 삭제하면 자신 또는 다른 사용자가 적용하지 말아야 할 변경 세트를 시작하는 실수를 예방하는 데 도움이 됩니다. 삭제 작업은 루트 변경 세트에서 실행해야 합니다. 자세한 내용은 변경 세트 삭제 단원을 참조하십시오.

중첩 스택에 대한 변경 세트 작업(AWS CLI)

  • create-change-set - 중첩 스택에 대한 변경 세트는 기본적으로 AWS CLI에서는 활성화되어 있지 않습니다. 전체 스택 계층에 대한 변경 세트를 생성하려면 --include-nested-stacks 파라미터를 지정하세요. 자세한 내용은 변경 세트를 생성하려면(AWS CLI) 단원을 참조하십시오.

다음 AWS CLI 예제는 create-change-set 입력을 나타냅니다.

aws cloudformation create-change-set \ --stack-name my-root-stack \ --change-set-name my-root-stack-change-set \ --template-body file://template.yaml \ --capabilities CAPABILITY_IAM \ --include-nested-stacks

다음 AWS CLI 예제는 create-change-set 출력을 나타냅니다.

{ "Id":"arn:aws:cloudformation:us-west-2:123456789012:changeSet/my-root-stack-change-set/4eca1a01-e285-xmpl-8026-9a1967bfb4b0", "StackId": "arn:aws:cloudformation:us-west-2:123456789012:Stack/my-root-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204" }
  • describe-change-set – 변경 세트를 실행하면 CloudFormation이 생성할 변경 사항 목록을 반환합니다. 지정된 변경 세트에 중첩 스택에 속하는 하위 변경 세트가 포함되어 있으면 ChangeSetId가 해당 변경 세트에 대한 정보를 반환합니다. 자세한 내용은 변경 세트를 보려면(AWS CLI) 단원을 참조하십시오.

다음 AWS CLI 예제는 루트 스택 변경 세트에 대한 describe-change-set 입력을 나타냅니다.

aws cloudformation describe-change-set \ --change-set-name my-root-stack-change-set \ --stack-name my-root-stack

다음 AWS CLI 예제는 루트 스택 변경 세트에 대한 describe-change-set 출력을 나타냅니다.

{ "Changes": [ { "Type": "Resource", "ResourceChange": { "Action": "Modify", "LogicalResourceId": "ChildStack", "PhysicalResourceId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-nested-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99205", "ResourceType": "AWS::CloudFormation::Stack", "Replacement": "False", "ChangeSetId": "arn:aws:cloudformation:us-west-2:123456789012:changeSet/my-nested-stack-change-set/4eca1a01-e285-xmpl-8026-9a1967bfb4b0", "Scope": [ "Properties" ], "Details": [ { "Target": { "Attribute": "Properties", "RequiresRecreation": "Never" }, "Evaluation": "Dynamic", "ChangeSource": "Automatic" } ] } } ], "ChangeSetName": "my-root-stack-change-set", "ChangeSetId": "arn:aws:cloudformation:us-west-2:123456789012:changeSet/my-root-stack-change-set/4eca1a01-e285-xmpl-8026-9a1967bfb4b0", "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-root-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99204", "StackName": "my-root-stack", "IncludeNestedStacks": true, "ParentChangeSetId": null, "RootChangeSetId": null, "Description": null, "Parameters": null, "CreationTime": "2020-11-18T05:20:56.651Z", "ExecutionStatus": "AVAILABLE", "Status": "CREATE_COMPLETE", "StatusReason": null, "NotificationARNs": [ ], "RollbackConfiguration": { }, "Capabilities": [ "CAPABILITY_IAM" ], "Tags": null }

다음 AWS CLI 예제는 중첩 스택 변경 세트에 대한 describe-change-set 입력을 나타냅니다.

aws cloudformation describe-change-set \ --change-set-name my-nested-stack-change-set \ --stack-name my-nested-stack

다음 AWS CLI 예제는 중첩 스택 변경 세트에 대한 describe-change-set 출력을 나타냅니다.

{ "Changes": [ { "Type": "Resource", "ResourceChange": { "Action": "Modify", "LogicalResourceId": "function", "PhysicalResourceId": "my-function", "ResourceType": "AWS::Lambda::Function", "Replacement": "False", "ChangeSetId": null, "Scope": [ "Properties" ], "Details": [ { "Target": { "Attribute": "Properties", "Name": "Timeout", "RequiresRecreation": "Never" }, "Evaluation": "Static", "ChangeSource": "DirectModification" } ] } } ], "ChangeSetName": "my-nested-stack-change-set", "ChangeSetId": "arn:aws:cloudformation:us-west-2:123456789012:changeSet/my-nested-stack-change-set/4eca1a01-e285-xmpl-8026-9a1967bfb4b0", "StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-nested-stack/d0a825a0-e4cd-xmpl-b9fb-061c69e99205", "ParentChangeSetId": "arn:aws:cloudformation:us-west-2:123456789012:changeSet/my-root-stack-change-set/4eca1a01-e285-xmpl-8026-9a1967bfb4b0", "RootChangeSetId": "arn:aws:cloudformation:us-west-2:123456789012:changeSet/my-root-stack-change-set/4eca1a01-e285-xmpl-8026-9a1967bfb4b0", "IncludeNestedStacks": true, "StackName": "my-nested-stack", "Description": null, "Parameters": null, "CreationTime": "2020-11-18T05:20:56.651Z", "ExecutionStatus": "UNAVAILABLE", "Status": "CREATE_COMPLETE", "StatusReason": "Executable from root change set", "NotificationARNs": [ ], "RollbackConfiguration": { }, "Capabilities": [ "CAPABILITY_IAM" ], "Tags": null }
  • execute-change-set – 지정된 변경 세트가 생성되었을 때 제공한 입력 정보를 사용하여 스택을 생성하거나 업데이트합니다. 전체 스택 계층에 대한 변경 세트를 생성하려면 create-change-set 프로세스 중에 –include-nested-stacks 파라미터를 지정해야 합니다. 자세한 내용은 변경 세트를 실행하려면(AWS CLI) 단원을 참조하십시오.

    참고

    execute-change-set는 루트 변경 세트에서 실행해야 하고, 전체 스택 계층에 변경 세트를 적용합니다.

다음 AWS CLI 예제는 execute-change-set 입력을 나타냅니다.

aws cloudformation execute-change-set \ --stack-name my-root-stack \ --change-set-name my-root-stack-change-set
  • delete-change-set – 지정된 변경 세트를 삭제합니다. 변경 세트를 삭제하면 아무도 잘못된 변경 세트를 사용할 수 없습니다. 변경 세트 삭제는 –include-nested-stacks 파라미터로 생성된 변경 세트에 대해서는 비동기 방식입니다. 자세한 정보는 변경 세트를 삭제하려면(AWS CLI)을 참조하십시오.

    참고

    delete-change-set는 루트 변경 세트에서 실행해야 하고, 변경 세트의 전체 계층을 삭제합니다. REVIEW_IN_PROGRESS 상태의 중첩 스택은 create-change-set 작업 중에 생성되었다면 역시 삭제됩니다.

다음 AWS CLI 예제는 루트 변경 세트의 delete-change-set 입력을 나타냅니다.

aws cloudformation delete-change-set \ --stack-name my-root-stack \ --change-set-name my-root-stack-change-set