

# 스택 진행 상황 모니터링
<a name="monitor-stack-progress"></a>

이 섹션에서는 현재 진행 중인 스택 배포를 모니터링하는 방법을 설명합니다. CloudFormation에서는 진행 상황과 배포 중에 발생한 문제를 보여주는 배포 이벤트의 자세한 시간순 목록을 제공합니다.

**Topics**
+ [스택 이벤트 보기](view-stack-events.md)
+ [작업별 스택 이벤트 보기](view-stack-events-by-operation.md)
+ [스택 배포 타임라인 그래프 보기](stack-deployment-timeline-graph.md)
+ [스택 생성 이벤트 이해](stack-resource-configuration-complete.md)
+ [스택 업데이트 모니터링](using-cfn-updating-stacks-monitor-stack.md)
+ [업데이트 롤백 계속](using-cfn-updating-stacks-continueupdaterollback.md)
+ [스택 실패 원인 파악](determine-root-cause-for-stack-failures.md)
+ [스택 실패 옵션](stack-failure-options.md)

# CloudFormation 스택 이벤트 보기
<a name="view-stack-events"></a>

스택 이벤트를 확인하여 스택 및 스택 내 리소스의 진행 상황과 상태를 모니터링할 수 있습니다. 스택 이벤트는 리소스가 생성, 업데이트 또는 삭제되는 시기와 스택 배포가 예상대로 진행되고 있는지 파악하는 데 도움이 됩니다.

**Topics**
+ [스택 이벤트 보기(콘솔)](#view-stack-events-console)
+ [스택 이벤트 보기(AWS CLI)](#view-stack-events-cli)
+ [스택 상태 코드](#cfn-console-view-stack-data-resources-status-codes)

## 스택 이벤트 보기(콘솔)
<a name="view-stack-events-console"></a>

**스택 이벤트를 보는 방법**

1. CloudFormation 콘솔([https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/))을 엽니다.

1. 화면 상단의 탐색 모음에서 스택을 생성한 AWS 리전을 선택합니다.

1. CloudFormation 콘솔의 **Stacks**(스택) 페이지에서 스택 이름을 선택합니다. CloudFormation에 선택한 스택에 대한 스택 세부 정보가 표시됩니다.

1. **이벤트** 탭을 선택하여 CloudFormation에서 스택에 대해 생성한 스택 이벤트를 봅니다.

CloudFormation은 매분 스택 이벤트를 자동으로 새로 고칩니다. 또한 CloudFormation에서는 새 스택 이벤트가 발생할 때 **사용 가능한 새 이벤트** 배지를 표시합니다. 이러한 이벤트를 목록에 로드하려면 새로 고침 아이콘을 선택합니다. 스택 생성 이벤트를 보면 스택 생성의 원인이 된 이벤트의 시퀀스(또는 스택 디버깅 중인 경우 실패)를 파악할 수 있습니다.

스택이 생성되는 동안 **스택** 페이지에 `CREATE_IN_PROGRESS` 상태로 나열됩니다. 스택이 생성된 후에는 상태가 `CREATE_COMPLETE`로 변경됩니다.

자세한 내용은 [CloudFormation 스택 생성 이벤트 이해](stack-resource-configuration-complete.md) 및 [스택 업데이트 진행 상황 모니터링](using-cfn-updating-stacks-monitor-stack.md)(을)를 참조하세요.

## 스택 이벤트 보기(AWS CLI)
<a name="view-stack-events-cli"></a>

또는 스택이 생성되는 동안 [describe-stack-events](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/describe-stack-events.html) 명령을 사용하여 보고되는 이벤트를 볼 수도 있습니다.

다음 **describe-stack-events** 명령에서는 `my-stack` 스택 이벤트를 설명합니다.

```
aws cloudformation describe-stack-events --stack-name my-stack
```

다음은 응답의 예입니다.

```
{
    "StackEvents": [
        {
            "StackId": "arn:aws:cloudformation:aws-region:123456789012:stack/my-stack/64726230-7edf-11f0-8a36-06453a64f325",
            "EventId": "7b755820-7edf-11f0-ab15-0673b09f3847",
            "StackName": "my-stack",
            "LogicalResourceId": "my-stack",
            "PhysicalResourceId": "arn:aws:cloudformation:aws-region:123456789012:stack/my-stack/64726230-7edf-11f0-8a36-06453a64f325",
            "ResourceType": "AWS::CloudFormation::Stack",
            "Timestamp": "2025-08-21T22:37:56.243000+00:00",
            "ResourceStatus": "CREATE_COMPLETE",
            "ClientRequestToken": "token"
        },
        {
            "StackId": "arn:aws:cloudformation:aws-region:123456789012:stack/my-stack/64726230-7edf-11f0-8a36-06453a64f325",
            "EventId": "WebServer-CREATE_COMPLETE-2025-08-21T22:37:54.356Z",
            "StackName": "my-stack",
            "LogicalResourceId": "WebServer",
            "PhysicalResourceId": "i-099df76cb31b866a9",
            "ResourceType": "AWS::EC2::Instance",
            "Timestamp": "2025-08-21T22:37:54.356000+00:00",
            "ResourceStatus": "CREATE_COMPLETE",
            "ResourceProperties": "{\"UserData\":\"IyEvYmluL2Jhc2gKeXVtIGluc3RhbGwgLXkgYXdzLWNmbi1ib290c3RyYXAKL29wdC9hd3MvYmluL2Nmbi1pbml0IC12IC0tc3RhY2sgc2Rmc2RhZnNhZHNka2wgLS1yZXNvdXJjZSBXZWJTZXJ2ZXIgLS1yZWdpb24gdXMtd2VzdC0yCg==\",\"ImageId\":\"ami-0bbc328167dee8f3c\",\"InstanceType\":\"t2.micro\",\"SecurityGroupIds\":[\"my-stack-WebServerSecurityGroup-n8A43bQT1ty2\"],\"Tags\":[{\"Value\":\"Bootstrap Tutorial Web Server\",\"Key\":\"Name\"}]}",
            "ClientRequestToken": "token"
        },
        {
            "StackId": "arn:aws:cloudformation:aws-region:123456789012:stack/my-stack/64726230-7edf-11f0-8a36-06453a64f325",
            "EventId": "WebServer-CREATE_IN_PROGRESS-2025-08-21T22:37:31.226Z",
            "StackName": "my-stack",
            "LogicalResourceId": "WebServer",
            "PhysicalResourceId": "i-099df76cb31b866a9",
            "ResourceType": "AWS::EC2::Instance",
            "Timestamp": "2025-08-21T22:37:31.226000+00:00",
            "ResourceStatus": "CREATE_IN_PROGRESS",
            "ResourceStatusReason": "Resource creation Initiated",
            "ResourceProperties": "{\"UserData\":\"IyEvYmluL2Jhc2gKeXVtIGluc3RhbGwgLXkgYXdzLWNmbi1ib290c3RyYXAKL29wdC9hd3MvYmluL2Nmbi1pbml0IC12IC0tc3RhY2sgc2Rmc2RhZnNhZHNka2wgLS1yZXNvdXJjZSBXZWJTZXJ2ZXIgLS1yZWdpb24gdXMtd2VzdC0yCg==\",\"ImageId\":\"ami-0bbc328167dee8f3c\",\"InstanceType\":\"t2.micro\",\"SecurityGroupIds\":[\"my-stack-WebServerSecurityGroup-n8A43bQT1ty2\"],\"Tags\":[{\"Value\":\"Bootstrap Tutorial Web Server\",\"Key\":\"Name\"}]}",
            "ClientRequestToken": "token"
        },
        {
            "StackId": "arn:aws:cloudformation:aws-region:123456789012:stack/my-stack/64726230-7edf-11f0-8a36-06453a64f325",
            "EventId": "WebServer-CREATE_IN_PROGRESS-2025-08-21T22:37:29.210Z",
            "StackName": "my-stack",
            "LogicalResourceId": "WebServer",
            "PhysicalResourceId": "",
            "ResourceType": "AWS::EC2::Instance",
            "Timestamp": "2025-08-21T22:37:29.210000+00:00",
            "ResourceStatus": "CREATE_IN_PROGRESS",
            "ResourceProperties": "{\"UserData\":\"IyEvYmluL2Jhc2gKeXVtIGluc3RhbGwgLXkgYXdzLWNmbi1ib290c3RyYXAKL29wdC9hd3MvYmluL2Nmbi1pbml0IC12IC0tc3RhY2sgc2Rmc2RhZnNhZHNka2wgLS1yZXNvdXJjZSBXZWJTZXJ2ZXIgLS1yZWdpb24gdXMtd2VzdC0yCg==\",\"ImageId\":\"ami-0bbc328167dee8f3c\",\"InstanceType\":\"t2.micro\",\"SecurityGroupIds\":[\"my-stack-WebServerSecurityGroup-n8A43bQT1ty2\"],\"Tags\":[{\"Value\":\"Bootstrap Tutorial Web Server\",\"Key\":\"Name\"}]}",
            "ClientRequestToken": "token"
        },
        {
            "StackId": "arn:aws:cloudformation:aws-region:123456789012:stack/my-stack/64726230-7edf-11f0-8a36-06453a64f325",
            "EventId": "WebServerSecurityGroup-CREATE_COMPLETE-2025-08-21T22:37:28.803Z",
            "StackName": "my-stack",
            "LogicalResourceId": "WebServerSecurityGroup",
            "PhysicalResourceId": "my-stack-WebServerSecurityGroup-n8A43bQT1ty2",
            "ResourceType": "AWS::EC2::SecurityGroup",
            "Timestamp": "2025-08-21T22:37:28.803000+00:00",
            "ResourceStatus": "CREATE_COMPLETE",
            "ResourceProperties": "{\"GroupDescription\":\"Allow HTTP access from my IP address\",\"SecurityGroupIngress\":[{\"CidrIp\":\"0.0.0.0/0\",\"Description\":\"HTTP\",\"FromPort\":\"80\",\"ToPort\":\"80\",\"IpProtocol\":\"tcp\"}]}",
            "ClientRequestToken": "token"
        },
        {
            "StackId": "arn:aws:cloudformation:aws-region:123456789012:stack/my-stack/64726230-7edf-11f0-8a36-06453a64f325",
            "EventId": "WebServerSecurityGroup-CREATE_IN_PROGRESS-2025-08-21T22:37:22.626Z",
            "StackName": "my-stack",
            "LogicalResourceId": "WebServerSecurityGroup",
            "PhysicalResourceId": "my-stack-WebServerSecurityGroup-n8A43bQT1ty2",
            "ResourceType": "AWS::EC2::SecurityGroup",
            "Timestamp": "2025-08-21T22:37:22.626000+00:00",
            "ResourceStatus": "CREATE_IN_PROGRESS",
            "ResourceStatusReason": "Resource creation Initiated",
            "ResourceProperties": "{\"GroupDescription\":\"Allow HTTP access from my IP address\",\"SecurityGroupIngress\":[{\"CidrIp\":\"0.0.0.0/0\",\"Description\":\"HTTP\",\"FromPort\":\"80\",\"ToPort\":\"80\",\"IpProtocol\":\"tcp\"}]}",
            "ClientRequestToken": "token"
        },
        {
            "StackId": "arn:aws:cloudformation:aws-region:123456789012:stack/my-stack/64726230-7edf-11f0-8a36-06453a64f325",
            "EventId": "WebServerSecurityGroup-CREATE_IN_PROGRESS-2025-08-21T22:37:20.186Z",
            "StackName": "my-stack",
            "LogicalResourceId": "WebServerSecurityGroup",
            "PhysicalResourceId": "",
            "ResourceType": "AWS::EC2::SecurityGroup",
            "Timestamp": "2025-08-21T22:37:20.186000+00:00",
            "ResourceStatus": "CREATE_IN_PROGRESS",
            "ResourceProperties": "{\"GroupDescription\":\"Allow HTTP access from my IP address\",\"SecurityGroupIngress\":[{\"CidrIp\":\"0.0.0.0/0\",\"Description\":\"HTTP\",\"FromPort\":\"80\",\"ToPort\":\"80\",\"IpProtocol\":\"tcp\"}]}",
            "ClientRequestToken": "token"
        },
        {
            "StackId": "arn:aws:cloudformation:aws-region:123456789012:stack/my-stack/64726230-7edf-11f0-8a36-06453a64f325",
            "EventId": "64740fe0-7edf-11f0-8a36-06453a64f325",
            "StackName": "my-stack",
            "LogicalResourceId": "my-stack",
            "PhysicalResourceId": "arn:aws:cloudformation:aws-region:123456789012:stack/my-stack/64726230-7edf-11f0-8a36-06453a64f325",
            "ResourceType": "AWS::CloudFormation::Stack",
            "Timestamp": "2025-08-21T22:37:17.819000+00:00",
            "ResourceStatus": "CREATE_IN_PROGRESS",
            "ResourceStatusReason": "User Initiated",
            "ClientRequestToken": "token"
        }
    ]
}
```

가장 최신 이벤트가 먼저 보고됩니다. 다음 표에서는 **describe-stack-events** 명령에서 반환되는 필드를 설명합니다.


| 필드 | 설명 | 
| --- | --- | 
| EventId |  이벤트 식별자입니다.  | 
| StackName |  이벤트에 해당하는 스택의 이름입니다.  | 
| StackId |  이벤트에 해당하는 스택의 식별자입니다.  | 
| LogicalResourceId |  리소스의 논리적 식별자입니다.  | 
| PhysicalResourceId |  리소스의 물리적 식별자입니다.  | 
| ResourceProperties |  리소스의 속성입니다.  | 
| ResourceType |  리소스의 유형입니다.  | 
| Timestamp |  이벤트가 발생한 시간입니다.  | 
| ResourceStatus |  `CREATE_COMPLETE` \$1 `CREATE_FAILED` \$1 `CREATE_IN_PROGRESS` \$1 `DELETE_COMPLETE` \$1 `DELETE_FAILED` \$1 `DELETE_IN_PROGRESS` \$1 `DELETE_SKIPPED` \$1 `IMPORT_COMPLETE` \$1 `IMPORT_IN_PROGRESS` \$1 `IMPORT_ROLLBACK_COMPLETE` \$1 `IMPORT_ROLLBACK_FAILED` \$1 `IMPORT_ROLLBACK_IN_PROGRESS` \$1 `REVIEW_IN_PROGRESS` \$1 `ROLLBACK_COMPLETE` \$1 `ROLLBACK_FAILED` \$1 `ROLLBACK_IN_PROGRESS` \$1 `UPDATE_COMPLETE` \$1 `UPDATE_COMPLETE_CLEANUP_IN_PROGRESS` \$1 `UPDATE_FAILED` \$1 `UPDATE_IN_PROGRESS` \$1 `UPDATE_ROLLBACK_COMPLETE` \$1 `UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS` \$1 `UPDATE_ROLLBACK_FAILED` \$1 `UPDATE_ROLLBACK_IN_PROGRESS` 상태 코드 중 하나일 수 있는 리소스의 상태입니다. `DELETE_SKIPPED` 상태는 삭제 정책 속성이 보관인 리소스에 적용됩니다.  | 
| DetailedStatus |  스택의 세부 상태입니다. `CONFIGURATION_COMPLETE`가 있는 경우 스택 리소스 구성 단계가 완료되었으며 리소스 안정화가 진행 중입니다.  | 
| ResourceStatusReason |  상태에 대한 추가 정보입니다.  | 

## 스택 상태 코드
<a name="cfn-console-view-stack-data-resources-status-codes"></a>

다음 표에서는 스택 상태 코드를 설명합니다.


| 스택 상태 및 선택적 세부 상태 | 설명 | 
| --- | --- | 
|  `CREATE_COMPLETE`  |  하나 이상의 스택을 성공적으로 생성했습니다.  | 
|  `CREATE_IN_PROGRESS`  |  하나 이상의 스택을 생성하고 있습니다.  | 
|  `CREATE_FAILED`  |  하나 이상의 스택을 생성하지 못했습니다. 스택 이벤트를 참조하여 관련 오류 메시지를 확인하세요. 가능한 생성 실패 원인에는 스택 내의 모든 리소스로 작업할 수 있는 권한 부족, AWS 서비스에서 파라미터값 거부, 또는 리소스 생성 중 제한 시간 초과가 포함될 수 있습니다.  | 
|  `DELETE_COMPLETE`  |  하나 이상의 스택을 성공적으로 삭제했습니다. 삭제된 스택은 90일 동안 유지되며 볼 수 있습니다.  | 
|  `DELETE_FAILED`  |  하나 이상의 스택을 삭제하지 못했습니다. 삭제에 실패했으므로 일부 리소스가 아직 실행 중일 수 있습니다. 하지만 스택으로 작업하거나 스택을 업데이트할 수 없습니다. 스택을 다시 삭제하거나 스택 이벤트를 참조하여 관련 오류 메시지를 확인하세요.  | 
|  `DELETE_IN_PROGRESS`  |  하나 이상의 스택을 제거하고 있습니다.  | 
| `REVIEW_IN_PROGRESS` | 템플릿 또는 리소스 없이 예상 StackId를 사용하여 하나 이상의 스택을 생성하고 있습니다. 이 상태 코드를 가진 스택은 [가능한 최대 스택 수](cloudformation-limits.md)에 포함됩니다.  | 
|  `ROLLBACK_COMPLETE`  |  스택 생성이 실패하거나 스택 생성을 명시적으로 취소한 이후에 하나 이상의 스택을 성공적으로 제거했습니다. 스택은 이전 작업 상태로 돌아갑니다. 스택 생성 작업 중에 생성된 모든 리소스가 삭제됩니다. 스택 생성이 실패한 후에만 이 상태가 존재합니다. 이 상태는 부분적으로 생성된 스택의 모든 작업이 적절하게 정리되었음을 나타냅니다. 이 상태에서는 삭제 작업만 수행할 수 있습니다.  | 
|  `ROLLBACK_FAILED`  |  스택 생성이 실패하거나 스택 생성을 명시적으로 취소한 이후에 하나 이상의 스택을 제거하지 못했습니다. 스택을 삭제하십시오. 연결된 오류 메시지는 스택 이벤트를 참조하십시오.  | 
|  `ROLLBACK_IN_PROGRESS`  |  스택 생성이 실패하거나 스택 생성을 명시적으로 취소한 이후에 하나 이상의 스택을 제거하고 있습니다.  | 
|  `UPDATE_COMPLETE`  | 하나 이상의 스택을 성공적으로 업데이트했습니다. | 
|  `UPDATE_COMPLETE_CLEANUP_IN_PROGRESS`  |  스택을 업데이트한 후 하나 이상의 스택에 대한 이전 리소스를 제거하고 있습니다. 스택 업데이트 중에 리소스를 대체해야 하는 경우 CloudFormation에서는 새 리소스를 생성한 다음 이전 리소스를 삭제하여 스택 중단을 줄여줍니다. 이 상태에서는 스택이 업데이트되고 사용 가능하지만 CloudFormation 에서는 이전 리소스를 계속 삭제하고 있습니다.  | 
|  `UPDATE_FAILED`  | 하나 이상의 스택을 업데이트하지 못했습니다. 스택 이벤트를 참조하여 관련 오류 메시지를 확인하세요. | 
|  `UPDATE_IN_PROGRESS`  |  하나 이상의 스택을 업데이트하고 있습니다.  | 
|  `UPDATE_ROLLBACK_COMPLETE`  |  스택 업데이트를 실패한 이후에 하나 이상의 스택을 이전 작업 상태로 되돌렸습니다.  | 
|  `UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS`  |  스택 업데이트를 실패한 후 하나 이상의 스택에 대한 새 리소스를 제거하고 있습니다. 이 상태에서는 스택이 이전 작업 상태로 롤백되고 사용 가능하지만 CloudFormation에서는 스택 업데이트 중에 생성된 새 리소스를 계속 삭제하고 있습니다.  | 
|  `UPDATE_ROLLBACK_FAILED`  |  스택 업데이트를 실패한 이후에 하나 이상의 스택을 이전 작업 상태로 되돌리지 못했습니다. 이 상태에서는 스택 또는 [continue rollback](using-cfn-updating-stacks-continueupdaterollback.md)을 삭제할 수 있습니다. 스택이 작동 상태로 돌아가기 전에 오류를 수정해야 할 수도 있습니다. 또는 지원에 문의하여 스택을 사용 가능한 상태로 복원할 수 있습니다.  | 
|  `UPDATE_ROLLBACK_IN_PROGRESS`  |  스택 업데이트를 실패한 이후에 하나 이상의 스택을 이전 작업 상태로 되돌리고 있습니다.  | 
|  `IMPORT_IN_PROGRESS`  |  가져오기 작업이 현재 진행 중입니다.  | 
|  `IMPORT_COMPLETE`  |  `resource import`를 지원하는 스택의 모든 리소스에 대해 가져오기 작업이 성공적으로 완료되었습니다.  | 
|  `IMPORT_ROLLBACK_IN_PROGRESS`  |  가져오기는 이전 템플릿 구성으로 롤백됩니다.  | 
|  `IMPORT_ROLLBACK_FAILED`  |  스택에 있는 하나 이상의 리소스에 대해 가져오기 롤백 작업이 실패했습니다. CloudFormation이 성공적으로 가져온 리소스에 대해 결과를 사용할 수 있습니다.  | 
|  `IMPORT_ROLLBACK_COMPLETE`  |  가져오기가 이전 템플릿 구성으로 성공적으로 롤백되었습니다.  | 

# 작업별 스택 이벤트 보기
<a name="view-stack-events-by-operation"></a>

스택에 대한 변경의 순서와 범위를 더 잘 이해하기 위해 작업별로 그룹화된 스택 이벤트를 볼 수 있습니다. 작업 기반 그룹화를 통해 관련 이벤트를 함께 추적하여 진행 상황을 모니터링하고 문제가 발생할 때 문제를 더 쉽게 해결할 수 있습니다.

각 스택 작업(생성, 업데이트, 삭제, 롤백)에는 모든 관련 이벤트를 그룹화하는 고유한 작업 ID가 할당됩니다. 이를 통해 특정 작업에 집중하고 장애의 근본 원인을 신속하게 식별할 수 있습니다.

**Topics**
+ [사전 조건](#view-stack-events-by-operation-prerequisites)
+ [작업별 스택 이벤트 보기(콘솔)](#view-stack-events-by-operation-console)
+ [작업별 스택 이벤트 보기(AWS CLI)](#view-stack-events-by-operation-cli)
+ [스택 상태 코드](#stack-status-codes)

## 사전 조건
<a name="view-stack-events-by-operation-prerequisites"></a>

`DescribeEvents` API를 사용하려면 `DescribeEvents`에 필요한 IAM 권한이 있어야 합니다.

## 작업별 스택 이벤트 보기(콘솔)
<a name="view-stack-events-by-operation-console"></a>

**작업별로 그룹화된 스택 이벤트를 보는 방법**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)에서 CloudFormation 콘솔을 엽니다.

1. 화면 상단의 탐색 모음에서 스택을 생성한 AWS 리전을 선택합니다.

1. **스택** 페이지에서 스택 이름을 선택하세요. CloudFormation에 선택한 스택에 대한 스택 세부 정보가 표시됩니다.

1. **이벤트** 탭을 선택하여 CloudFormation에서 스택에 대해 생성한 스택 이벤트를 봅니다.

1. 이벤트는 작업 ID별로 자동 그룹화됩니다. 각 작업은 작업 유형, 상태, 타임스탬프를 보여주는 확장 가능한 섹션으로 표시됩니다.

1. **작업 ID**를 클릭하여 해당 특정 작업과 관련된 이벤트만 보여주는 세부 보기를 여세요.

1. 작업 세부 정보 보기에서 **실패만 표시** 확인란을 선택하여 근본 원인 분석을 위해 실패한 이벤트만 표시하세요.

CloudFormation은 매분 스택 이벤트를 자동으로 새로 고칩니다. 새 스택 이벤트가 발생하면 **사용 가능한 새 이벤트** 배지가 나타납니다. 이러한 이벤트를 목록에 로드하려면 새로 고침 아이콘을 선택합니다.

작업별로 그룹화된 스택 이벤트를 보면 각 작업의 이벤트 순서를 이해하고 문제의 원인이 되는 특정 작업을 빠르게 식별할 수 있습니다(스택을 디버깅하는 경우).

스택 작업이 실행 중인 동안 `CREATE_IN_PROGRESS`, `UPDATE_IN_PROGRESS` 또는 `DELETE_IN_PROGRESS` 상태로 나열됩니다. 작업이 성공적으로 완료되면 상태가 `CREATE_COMPLETE`, `UPDATE_COMPLETE` 또는 `DELETE_COMPLETE`로 변경됩니다.

자세한 내용은 [CloudFormation 스택 생성 이벤트 이해](stack-resource-configuration-complete.md) 및 [스택 업데이트 진행 상황 모니터링](using-cfn-updating-stacks-monitor-stack.md)(을)를 참조하세요.

## 작업별 스택 이벤트 보기(AWS CLI)
<a name="view-stack-events-by-operation-cli"></a>

작업 ID 필터링과 함께 `describe-events` 명령을 사용하여 특정 작업에 대한 이벤트를 볼 수 있습니다.

### 마지막 작업 ID 가져오기
<a name="get-last-operation-ids"></a>

이제 describe-stacks API를 통해 사용할 수 있는 스택 설명에 최근 작업 ID와 해당 유형을 보여주는 LastOperations 정보가 포함됩니다. 이를 통해 이벤트 로그를 구문 분석하지 않고도 수행된 작업과 현재 상태를 빠르게 식별할 수 있습니다.

```
aws cloudformation describe-stacks --stack-name MyStack
```

다음은 마지막 작업이 업데이트 작업에 실패한 후 롤백된 작업임을 보여주는 응답 예제입니다.

```
{  
    "Stacks": [  
        {  
            "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/MyStack/07580010-bb79-11f0-8f6c-0289bb5c804f",  
            "StackName": "MyStack",  
            "Description": "A simple CloudFormation template to create an S3 bucket.",  
            "CreationTime": "2025-11-07T01:28:13.778000+00:00",  
            "LastUpdatedTime": "2025-11-07T01:43:39.838000+00:00",  
            "RollbackConfiguration": {},  
            "StackStatus": "UPDATE_ROLLBACK_COMPLETE",  
            "DisableRollback": false,  
            "NotificationARNs": [],  
            "Tags": [],  
            "EnableTerminationProtection": false,  
            "DriftInformation": {  
                "StackDriftStatus": "NOT_CHECKED"  
            },  
            "LastOperations": [  
                {  
                    "OperationType": "ROLLBACK",  
                    "OperationId": "d0f12313-7bdb-414d-a879-828a99b36f29"  
                },  
                {  
                    "OperationType": "UPDATE_STACK",  
                    "OperationId": "1c211b5a-4538-4dc9-bfed-e07734371e57"  
                }  
            ]  
        }  
    ]  
}
```

### 작업 ID별 이벤트 필터링
<a name="filter-events-by-operation-id"></a>

다음 `describe-events` 명령은 특정 작업 ID에 대한 이벤트를 설명합니다.

```
aws cloudformation describe-events \
  --operation-id 1c211b5a-4538-4dc9-bfed-e07734371e57
```

문제 해결을 위해 실패한 이벤트만 보려면 `--filter FailedEvents=true` 파라미터를 사용합니다.

```
aws cloudformation describe-events \
  --operation-id 1c211b5a-4538-4dc9-bfed-e07734371e57 \
  --filter FailedEvents=true
```

새로운 작업 ID 필터링 기능을 사용하면 특정 작업 및 관련 이벤트에 집중할 수 있습니다. 특히 다음과 같은 경우에 유용합니다.
+ **특정 장애 문제 해결:** 실패한 작업에서 이벤트를 격리하여 무엇이 잘못되었는지 파악합니다.
+ **장기 실행 작업 모니터링:** 복잡한 업데이트 또는 대규모 스택 배포의 진행 상황을 추적합니다.
+ **변경 내용 감사:** 특정 업데이트 작업과 연결된 모든 이벤트를 검토합니다.
+ **근본 원인 분석:** 장애 필터를 사용하여 배포 문제의 원인을 빠르게 식별합니다.

## 스택 상태 코드
<a name="stack-status-codes"></a>

다음 표에서는 작업 ID 필터링을 사용할 때 `describe-events` 명령에서 반환되는 필드를 설명합니다.


| 필드 | 설명 | 
| --- | --- | 
| EventId | 이벤트 식별자입니다. | 
| OperationId | 이 이벤트를 생성한 작업의 고유 식별자. | 
| StackName | 이벤트에 해당하는 스택의 이름입니다. | 
| StackId | 이벤트에 해당하는 스택의 식별자입니다. | 
| LogicalResourceId | 리소스의 논리적 식별자입니다. | 
| PhysicalResourceId | 리소스의 물리적 식별자입니다. | 
| ResourceProperties | 리소스의 속성입니다. | 
| ResourceType | 리소스의 유형입니다. | 
| Timestamp | 이벤트가 발생한 시간입니다. | 
| ResourceStatus | 리소스 상태(CREATE\$1COMPLETE, UPDATE\$1FAILED 등). | 
| DetailedStatus | 스택의 세부 상태입니다. CONFIGURATION\$1COMPLETE가 있는 경우 스택 리소스 구성 단계가 완료되었으며 리소스 안정화가 진행 중입니다. | 
| ResourceStatusReason | 상태에 대한 추가 정보입니다. | 

# CloudFormation 스택 배포의 타임라인 보기
<a name="stack-deployment-timeline-graph"></a>

스택 배포 타임라인 그래프는 스택 배포 타임라인을 시각적으로 표현합니다. 이 뷰에는 스택 및 각 스택 리소스의 배포 상태와 각 상태가 변경된 시간이 표시됩니다. 스택 배포 상태는 해당 색상으로 표시됩니다.

**Topics**
+ [스택 배포 타임라인 그래프 이해](#understanding-stack-deployment-timeline-graph)
+ [스택 배포 타임라인 그래프 보기(콘솔)](#viewing-stack-deployment-timeline-graph)

## 스택 배포 타임라인 그래프 이해
<a name="understanding-stack-deployment-timeline-graph"></a>

다음 이미지는 시작하지 못한 Amazon EC2 인스턴스 리소스로 인해 실패한 스택 배포의 타임라인 그래프를 보여줍니다.

![\[실패한 스택 배포에 대한 스택 배포 타임라인 그래프입니다.\]](http://docs.aws.amazon.com/ko_kr/AWSCloudFormation/latest/UserGuide/images/deployment-timeline-graph.PNG)


스택 리소스의 이름은 그래프의 왼쪽에 표시되고, 배포 시간을 기준으로 한 날짜와 시간은 그래프의 맨 위에 표시됩니다.

각 리소스는 **진행 중** 상태로 시작합니다. 배포가 성공할 때마다 상태 표시줄이 **완료**로 변경됩니다. 리소스가 배포되지 않으면 상태 표시줄이 **실패**로 변경됩니다. 리소스 배포에 실패하고 스택 배포도 실패하면 스택 배포 실패의 원인이 되는 리소스는 **루트 장애 가능성** 상태를 수신합니다.

스택 배포 작업이 실패하면 성공적으로 배포된 리소스가 롤백을 시작하고 **롤백 진행 중** 상태로 변경됩니다. 리소스 롤백이 완료되면 상태가 **롤백 완료**로 변경됩니다.

각 리소스를 선택하면 배포 타임라인에 대한 자세한 내용을 확인할 수 있습니다.

![\[선택한 실패한 리소스에 대한 배포 세부 정보를 보여주는 스택 배포 타임라인 그래프 팝오버입니다.\]](http://docs.aws.amazon.com/ko_kr/AWSCloudFormation/latest/UserGuide/images/deployment-timeline-graph-root-cause.PNG)


리소스를 선택하면 배포의 **유형**, 배포 **시작 시간**, 배포 **종료 시간** 및 배포의 **총 기간**이 표시됩니다. 아래 드롭다운 메뉴에서 각 배포 상태의 **시작 시간**, **종료 시간** 및 **기간**도 확인할 수 있습니다. 리소스를 배포하지 못한 경우 **실패 이유**가 제공됩니다.

스택 상태에 대한 자세한 내용은 [스택 상태 코드](view-stack-events.md#cfn-console-view-stack-data-resources-status-codes) 섹션을 참조하세요.

## 스택 배포 타임라인 그래프 보기(콘솔)
<a name="viewing-stack-deployment-timeline-graph"></a>

스택 배포 타임라인 그래프를 보려면 다음을 수행하세요.

1. CloudFormation 콘솔([https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/))을 엽니다.

1. 화면 상단의 탐색 모음에서 스택을 생성한 AWS 리전을 선택합니다.

1. CloudFormation 콘솔의 **스택** 페이지에서 스택 이름을 선택합니다. CloudFormation에 선택한 스택에 대한 스택 세부 정보가 표시됩니다.

1. **이벤트** 탭을 선택하여 CloudFormation에서 스택에 대해 생성한 스택 이벤트를 봅니다.

1. **타임라인 그래프** 버튼을 선택하여 스택에 대한 타임라인 그래프를 봅니다.

# CloudFormation 스택 생성 이벤트 이해
<a name="stack-resource-configuration-complete"></a>

스택 배포 중에 스택 템플릿에 정의된 리소스를 생성, 구성 및 검증하는 여러 이벤트가 발생합니다. 이러한 이벤트를 이해하면 스택 생성 프로세스를 최적화하고 배포를 간소화하는 데 도움이 될 수 있습니다.
+ **리소스 생성 프로세스** – 각 리소스에서 생성 프로세스가 시작되면 `CREATE_IN_PROGRESS` 이벤트의 **상태**가 설정됩니다. 이 이벤트는 리소스가 프로비저닝되고 있다는 것을 나타냅니다.
+ **최종 일관성 검사** – 스택에서 생성된 리소스에 대한 최종 일관성 검사를 수행하는 데 스택 생성 시간의 상당 부분이 소요됩니다. 이 단계에서 서비스는 내부 일관성 검사를 수행하여 리소스가 완전히 작동하고 각 AWS 서비스에서 정의한 서비스 안정화 기준을 충족하는지 확인합니다.
+ **구성 완료 이벤트** – 각 리소스가 프로비저닝의 최종 일관성 검사 단계를 마치면 `CONFIGURATION_COMPLETE` 이벤트의 **세부 상태**가 설정됩니다.
+ **리소스 생성 완료 이벤트** – 지정된 대로 리소스가 생성 및 구성된 후 구성이 템플릿에 지정된 구성과 일치하면 `CREATE_COMPLETE` 이벤트의 **상태**가 설정됩니다.

사전 프로덕션 스택 구성 또는 스택 간 프로비저닝의 검증과 같이 리소스 최종 일관성 검사가 필요하지 않은 시나리오에서 `CONFIGURATION_COMPLETE` 이벤트를 활용하여 스택 생성 프로세스를 간소화할 수 있습니다. 이 이벤트는 여러 방법으로 사용할 수 있습니다. 예를 들어 리소스 또는 스택 일관성 검사가 완료될 때까지 기다리지 않아도 된다는 시각적 신호로 사용할 수 있습니다. 또는 지속적 통합 및 지속적 전달(CI/CD)을 사용하여 추가 작업을 트리거하는 자동 메커니즘을 생성할 수 있습니다.

**중요**  
`CONFIGURATION_COMPLETE` 이벤트를 활용하면 스택 생성 시간이 가속화되지만 그에 따른 장단점을 염두에 두어야 합니다. 첫째, 드리프트 감지를 지원하는 리소스 유형의 하위 집합에 대해서만 지원됩니다. 드리프트 감지를 지원하는 리소스 유형 목록은 [리소스 유형 지원](resource-import-supported-resources.md) 섹션을 참조하세요. 이 접근 방식은 일부 시나리오에 적합하지 않을 수 있습니다. 특히 클라우드 환경(예: 프로덕션 환경) 전반에서 완전한 운영 준비 상태를 보장하기 위해 리소스에 대한 철저한 최종 일관성 검사가 필요한 경우에 그렇습니다. 배포 요구 사항과 각 리소스에 대한 일관성 검사의 중요도를 신중하게 평가하는 것이 좋습니다. `CONFIGURATION_COMPLETE` 이벤트를 사용하여 인프라의 무결성과 신뢰성을 저해하지 않고 배포 속도를 최적합니다.   
`CONFIGURATION_COMPLETE` 이벤트 설정이 보장되지느 않으므로 이벤트를 사용하는 모든 시나리오에서 `CONFIGURATION_COMPLETE` 이벤트가 설정되지 않았을 때 `CREATE_COMPLETE` 이벤트를 처리할 수 있도록 준비해야 합니다.

![\[스택에서 리소스 생성 및 최종 일관성 검사를 위한 이벤트 시퀀스를 보여주는 다이어그램.\]](http://docs.aws.amazon.com/ko_kr/AWSCloudFormation/latest/UserGuide/images/configuration-complete.png)


스택 배포가 시작되면 `AWS::ECR::Repository` 및 `AWS::ECS::Cluster` 리소스 모두에서 생성 프로세스가 시작됩니다(`ResourceStatus` = `CREATE_IN_PROGRESS`). `AWS::ECR::Repository` 리소스 유형이 최종 일관성 검사를 시작하면(`DetailedStatus` = `CONFIGURATION_COMPLETE`) `AWS::ECS::TaskDefinition` 리소스가 생성 프로세스를 시작할 수 있습니다. 마찬가지로 `AWS::ECS::TaskDefinition` 리소스가 최종 일관성 검사를 시작하면 `AWS::ECS::Service` 리소스에서 생성 프로세스가 시작됩니다.

**`CREATE_IN_PROGRESS` 및 `CREATE_COMPLETE` 이벤트**
+ **[스택]:** `CREATE_IN_PROGRESS`
+ **[리소스]:** ECR 리포지토리 `CREATE_IN_PROGRESS`
+ **[리소스]:** ECS 클러스터 `CREATE_IN_PROGRESS`
+ **[리소스]:** ECR 리포지토리 `CREATE_IN_PROGRESS`, `CONFIGURATION_COMPLETE` 
+ **[리소스]:** ECS 작업 정의 `CREATE_IN_PROGRESS`
+ **[리소스]:** ECS 클러스터 `CREATE_IN_PROGRESS`, `CONFIGURATION_COMPLETE` 
+ **[리소스]:** ECS 작업 정의 `CREATE_IN_PROGRESS`, `CONFIGURATION_COMPLETE` 
+ **[리소스]:** ECS 서비스 `CREATE_IN_PROGRESS`
+ **[리소스]:** ECR 리포지토리 `CREATE_COMPLETE`
+ **[리소스]:** ECS 클러스터 `CREATE_COMPLETE`
+ **[리소스]:** ECS 서비스 `CREATE_IN_PROGRESS`, `CONFIGURATION_COMPLETE` 
+ **[스택]:** `CREATE_IN_PROGRESS`, `CONFIGURATION_COMPLETE` 
+ **[리소스]:** ECS 작업 정의 `CREATE_COMPLETE`
+ **[리소스]:** ECS 서비스 `CREATE_COMPLETE`
+ **[스택]:** `CREATE_COMPLETE`

# 스택 업데이트 진행 상황 모니터링
<a name="using-cfn-updating-stacks-monitor-stack"></a>

스택의 이벤트를 보면서 스택 업데이트 진행률을 모니터링할 수 있습니다. 스택의 **이벤트** 탭에는 스택을 생성 및 업데이트하는 각 주요 단계가 각 이벤트의 시간순으로 정렬되어 표시됩니다. 즉, 최신 이벤트가 맨 위에 표시됩니다. 자세한 내용은 [스택 진행 상황 모니터링](monitor-stack-progress.md) 섹션을 참조하세요.

**Topics**
+ [성공적인 스택 업데이트 중 생성된 이벤트](#using-cfn-updating-stacks-monitor-stack-update-events)
+ [리소스 업데이트 실패 시 생성된 이벤트](#using-cfn-updating-stacks-monitor-stack-update-failure)

## 성공적인 스택 업데이트 중 생성된 이벤트
<a name="using-cfn-updating-stacks-monitor-stack-update-events"></a>

스택 업데이트 프로세스의 맨 처음에는 스택에 대해 `UPDATE_IN_PROGRESS` 이벤트가 표시됩니다.

```
2011-09-30 09:35 PDT AWS::CloudFormation::Stack MyStack UPDATE_IN_PROGRESS 
```

그다음은 업데이트 템플릿에서 변경된 각 리소스의 업데이트 시작과 완료를 표시하는 이벤트가 표시됩니다. 예를 들어, `MyDB`라는 [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html) 리소스를 업데이트하면 다음과 같은 항목이 표시됩니다.

```
2011-09-30 09:35 PDT AWS::RDS::DBInstance MyDB UPDATE_COMPLETE
2011-09-30 09:35 PDT AWS::RDS::DBInstance MyDB UPDATE_IN_PROGRESS
```

`UPDATE_IN_PROGRESS` 이벤트는 CloudFormation에서 리소스 업데이트가 시작되었다고 보고할 때 로깅됩니다. `UPDATE_COMPLETE` 이벤트는 리소스를 성공적으로 생성한 경우에 로깅됩니다.

CloudFormation에서 스택을 성공적으로 업데이트한 경우 다음과 같은 이벤트가 표시됩니다.

```
2011-09-30 09:35 PDT AWS::CloudFormation::Stack MyStack UPDATE_COMPLETE 
```

**중요**  
스택 업데이트 작업 중에 CloudFormation이 기존 리소스를 교체해야 할 경우, 먼저 새 리소스를 생성한 다음 이전 리소스를 삭제합니다. 그러나 CloudFormation이 이전 리소스를 삭제하지 못하는 경우가 있습니다(예: 사용자가 특정 유형의 리소스를 삭제할 권한이 없을 경우).  
CloudFormation은 세 번에 걸쳐 이전 리소스를 삭제하려고 시도합니다. CloudFormation이 이전 리소스를 삭제하지 못하면 스택에서 이전 리소스를 제거하고 스택 업데이트를 진행합니다. 스택 업데이트가 완료되면 CloudFormation이 `UPDATE_COMPLETE` 스택 이벤트를 실행하지만 하나 이상의 리소스를 삭제할 수 없다고 되어 있는 `StatusReason`이(가) 포함됩니다. CloudFormation은 특정 리소스에 대한 `DELETE_FAILED` 이벤트를 실행하는데, CloudFormation이 리소스 삭제에 실패한 이유가 자세히 나와 있는 해당 `StatusReason`도 제공됩니다.  
이전 리소스는 아직 남아 있고 계속 요금이 부과되지만, 더 이상 CloudFormation을 통해 액세스할 수 없습니다. 이전 리소스를 삭제하려면 콘솔 또는 API를 사용하여 기본 서비스에 대한 이전 리소스에 직접 액세스합니다.  
이는 스택 템플릿에서 제거된 리소스에도 적용되며, 스택 업데이트 중에 스택에서 삭제됩니다.

## 리소스 업데이트 실패 시 생성된 이벤트
<a name="using-cfn-updating-stacks-monitor-stack-update-failure"></a>

리소스 업데이트에 실패한 경우 CloudFormation에서는 실패 이유를 포함하는 `UPDATE_FAILED` 이벤트를 보고합니다. 예를 들어, 업데이트 템플릿에 리소스에서 지원되지 않는 속성 변경이 지정되어 있는 경우(예: [https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-resource-rds-dbinstance.html) 리소스에 대한 `AllocatedStorage`의 크기 축소) 다음과 같은 이벤트가 표시됩니다.

```
2011-09-30 09:36 PDT AWS::RDS::DBInstance MyDB UPDATE_FAILED Size cannot be less than current size; requested: 5; current: 10
2011-09-30 09:35 PDT AWS::RDS::DBInstance MyDB UPDATE_IN_PROGRESS
```

리소스 업데이트가 실패한 경우 CloudFormation에서는 업그레이드 중에 업데이트한 모든 리소스를 업데이트하기 이전의 구성으로 롤백합니다. 다음 예에서는 업데이트 롤백 중에 표시되는 이벤트를 보여줍니다.

```
2011-09-30 09:38 PDT AWS::CloudFormation::Stack MyStack UPDATE_ROLLBACK_COMPLETE
2011-09-30 09:38 PDT AWS::RDS::DBInstance MyDB UPDATE_COMPLETE
2011-09-30 09:37 PDT AWS::RDS::DBInstance MyDB UPDATE_IN_PROGRESS
2011-09-30 09:37 PDT AWS::CloudFormation::Stack MyStack UPDATE_ROLLBACK_IN_PROGRESS The following resource(s) failed to update: [MyDB]
```

# 업데이트 롤백 계속
<a name="using-cfn-updating-stacks-continueupdaterollback"></a>

CloudFormation에서 스택 업데이트를 롤백하려고 시도할 때 업데이트 프로세스 중에 변경한 내용을 모두 롤백하지 못하는 경우가 있습니다. 이를 `UPDATE_ROLLBACK_FAILED` 상태라고 합니다. 예를 들어, 스택이 CloudFormation 외부에서 삭제된 이전 데이터베이스 인스턴스로 롤백하기 시작합니다. CloudFormation에서는 데이터베이스가 삭제되었는지 알지 못하므로 해당 데이터베이스 인스턴스가 존재하는 것으로 간주하고 롤백을 시도합니다. 따라서 업데이트 롤백이 실패합니다.

`UPDATE_ROLLBACK_FAILED` 상태의 스택은 업데이트할 수 없지만 작업 상태(`UPDATE_ROLLBACK_COMPLETE`)로 롤백할 수 있습니다. 스택을 원래 설정으로 되돌린 후 다시 업데이트를 시도할 수 있습니다.

대부분의 경우 스택을 계속해서 롤백하려면 업데이트 롤백 실패의 원인인 오류를 해결해야 합니다. 그 밖의 경우(예: 스택 작업이 시간 초과된 경우) 변경하지 않고 업데이트를 계속 롤백할 수 있습니다.

**참고**  
중첩 스택을 사용하는 경우 상위 스택을 롤백하면 모든 하위 스택도 함께 롤백하려고 시도합니다.

**업데이트 롤백을 계속하려면(콘솔)**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)에서 CloudFormation 콘솔을 엽니다.

1. 화면 상단의 탐색 모음에서 스택이 위치한 AWS 리전을 선택합니다.

1. **스택** 페이지에서 업데이트할 스택을 선택하고 **스택 작업**, **업데이트 롤백 계속**을 차례로 선택합니다.

   [오류 해결](troubleshooting.md#troubleshooting-errors)의 해결 방법이 모두 효과가 없는 경우 고급 옵션을 사용하여 CloudFormation에서 롤백할 수 없는 리소스를 건너뛸 수 있습니다. 건너뛸 리소스의 논리적 ID를 [조회](cfn-console-view-stack-data-resources.md)하여 입력해야 합니다. 업데이트 전달 도중이 아니라 `UpdateRollback` 중에 `UPDATE_FAILED` 상태로 전환된 리소스만 지정합니다.
**주의**  
CloudFormation에서 지정된 리소스의 상태를 `UPDATE_COMPLETE`로 설정하고 스택을 계속 롤백합니다. 롤백이 완료된 이후에는 건너뛴 리소스의 상태가 스택 템플릿에 있는 리소스의 상태와 일치하지 않게 됩니다. 다른 스택을 업데이트하기 전에 스택 또는 리소스를 서로 일치하도록 업데이트해야 합니다. 그렇지 않으면 후속 스택 업데이트가 실패할 수 있습니다. 이 경우 스택을 복구할 수 없습니다.

   스택을 롤백하는 데 필요한 최소 리소스 수를 지정합니다. 예를 들어, 리소스 업데이트가 실패하여 종속 리소스가 실패할 수 있습니다. 이 경우 종속 리소스를 건너뛸 필요가 없습니다.

   중첩 스택에 포함된 리소스를 건너뛰려면 `NestedStackName.ResourceLogicalID` 형식을 사용합니다. `Type: AWS::CloudFormation::Stack` 목록에서 스택 리소스의 논리적 ID(`ResourcesToSkip`)를 지정하려면 포함된 해당 스택이 `DELETE_IN_PROGRESS`, `DELETE_COMPLETE` 또는 `DELETE_FAILED` 상태 중 하나여야 합니다.

**업데이트 롤백을 계속하려면(AWS CLI)**
+ [https://docs.aws.amazon.com/cli/latest/reference/cloudformation/continue-update-rollback.html](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/continue-update-rollback.html) 명령을 `--stack-name` 옵션과 함께 사용하여 롤백을 계속할 스택의 ID를 지정합니다.

## 실패한 중첩 스택 업데이트에서 계속 롤백
<a name="nested-stacks"></a>

여러 개의 스택이 서로 중첩된 경우 풀 스택 계층 구조를 작동 상태로 되돌리려면 여러 중첩 수준에서 리소스를 건너뛰어야 할 수도 있습니다.

예를 들어, 내부에 `WebInfra-Compute` 및 `WebInfra-Storage` 스택이 포함된 `WebInfra`라는 루트 스택이 있습니다. 또한 이 두 스택 내부에는 자체 중첩 스택이 있습니다.

업데이트 중에 문제가 발생하여 업데이트 프로세스가 실패하면 전체 스택 계층 구조가 다음 다이어그램과 같이 `UPDATE_ROLLBACK_FAILED` 상태가 될 수 있습니다.

![\[3단계 중첩 스택의 계층 구조 다이어그램.\]](http://docs.aws.amazon.com/ko_kr/AWSCloudFormation/latest/UserGuide/images/cfn-update-stack-continue-update-rollback_nested-stacks.png)


**참고**  
간소화하기 위해 이 예에서는 스택 이름이 잘려 있습니다. 하위 스택 이름은 일반적으로 CloudFormation에 의해 생성되고 고유한 임의의 문자열을 포함하므로 실제 이름은 사용자에게 친숙하지 않을 수 있습니다.

`continue-update-rollback` 명령을 사용하여 루트 스택을 실행 가능한 상태로 가져오려면 `--resources-to-skip` 옵션을 사용하여 롤백에 실패한 리소스를 건너뛰어야 합니다.

다음 **continue-update-rollback** 예제에서는 이전에 실패한 스택 업데이트에서 롤백 작업을 재개합니다. 이 예제에서 `--resources-to-skip` 옵션은 다음 항목을 포함합니다.
+ `myCustom`
+ `WebInfra-Compute-Asg.myAsg`
+ `WebInfra-Compute-LB.myLoadBalancer`
+ `WebInfra-Storage.DB`

루트 스택의 리소스의 경우 논리적 ID(예: `myCustom`)만 입력하면 됩니다. 하지만 중첩 스택에 포함된 리소스의 경우 중첩 스택 이름과 해당 논리적 ID를 마침표로 구분하여 입력해야 합니다. 예를 들어 `WebInfra-Compute-Asg.myAsg`입니다.

```
aws cloudformation continue-update-rollback --stack-name WebInfra \
    --resources-to-skip myCustom WebInfra-Compute-Asg.myAsg WebInfra-Compute-LB.myLoadBalancer WebInfra-Storage.DB
```

**중첩 스택의 스택 이름 찾기**  
하위 스택의 스택 ID 또는 Amazon 리소스 이름(ARN)에서 찾을 수 있습니다.

다음 ARN 예제는 이름이 `WebInfra-Storage-Z2VKC706XKXT`인 스택을 참조합니다.

```
arn:aws:cloudformation:us-east-1:123456789012:stack/WebInfra-Storage-Z2VKC706XKXT/ea9e7f90-54f7-11e6-a032-028f3d2330bd
```

**중첩 스택의 논리적 ID 찾기**  
상위 스택의 템플릿 정의에서 하위 스택의 논리적 ID를 찾을 수 있습니다. 다이어그램에서 `WebInfra-Storage-DB` 하위 스택의 `LogicalId`는 상위 `WebInfra-Storage`의 `DB`입니다.

CloudFormation 콘솔의 **Resources**(리소스) 또는 **Events**(이벤트) 탭에 있는 스택 리소스에 대한 **Logical ID**(논리적 ID) 열에서 논리적 ID를 찾을 수도 있습니다. 자세한 내용은 [CloudFormation 콘솔에서 스택 정보 보기](cfn-console-view-stack-data-resources.md) 섹션을 참조하세요.

# 스택 실패 원인 파악
<a name="determine-root-cause-for-stack-failures"></a>

스택 생성에 실패할 경우 CloudFormation은 스택 실패의 근본 원인일 가능성이 있는 이벤트를 파악하는 데 도움이 될 수 있습니다. 시나리오와 권한에 따라 **이벤트**에서 제공된 **상태 이유**가 명확하지 않은 경우 AWS CloudTrail 이벤트에서 근본 원인에 대한 추가 세부 정보를 제공할 수 있습니다.

**스택 실패의 근본 원인 파악**

1. CloudFormation 콘솔([https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/))을 엽니다.

1. **스택** 페이지에서 실패한 스택을 선택합니다.

1. **이벤트** 탭을 선택합니다.

1. **근본 원인 감지**를 선택합니다. CloudFormation은 실패를 분석하고 특정 이벤트 **상태**에 **가능성 높은 근본 원인** 라벨을 추가하여 실패의 원인일 가능성이 높은 이벤트를 보여줍니다. CloudFormation 콘솔의 상태에 대한 자세한 설명은 **상태 이유**를 참조하세요.

1. 실패 원인에 대해 자세히 알아보려면 **가능성 높은 근본 원인** 라벨이 있는 실패 **상태**를 선택합니다. 시나리오와 권한에 따라 구체적인 CloudTrail 이벤트를 검토할 수 있습니다. **상태**를 선택할 때 발생할 수 있는 잠재적 결과는 다음과 같습니다.
   + 이 문제와 관련된 CloudTrail 이벤트가 제공되어 해결에 도움이 될 수 있습니다. CloudTrail 이벤트를 봅니다.
   + 해결에 도움이 될 수 있는 이 문제와 관련된 CloudTrail 이벤트를 찾을 수 없습니다.
   + 현재 권한으로는 CloudTrail 이벤트를 볼 수 없습니다. 
   + 제공되는 CloudTrail 이벤트를 확인하는 중입니다. 몇 분 후에 다시 확인하세요.
   + CloudTrail 이벤트를 가져오는 도중 오류가 발생했습니다. 수동 검사는 CloudTrail 콘솔을 참조하세요.

1. **상태 이유**에 제공된 이유가 명확하지 않고 근본 원인에 CloudTrail 콘솔로 연결되는 링크가 표시되는 경우 링크를 열어 이벤트를 보고 구체적인 근본 원인을 확인합니다.

CloudTrail 이벤트에 대한 자세한 내용은 [CloudTrail 이벤트 이해하기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-events.html) 및 [CloudTrail 레코드 콘텐츠](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-record-contents.html)를 참조하세요.

CloudTrail 이벤트 기록에 대한 자세한 내용은 [CloudTrail 이벤트 기록 작업](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)을 참조하세요.

**참고**  
중첩 스택은 **근본 원인 감지**를 지원하지 않습니다.

# 리소스 프로비저닝 시 실패 처리 방법 선택
<a name="stack-failure-options"></a>

스택 작업에 실패하는 경우 이미 성공적으로 프로비저닝된 리소스를 롤백하고 매번 처음부터 다시 시작할 필요가 없습니다. 대신에 `CREATE_FAILED` 또는 `UPDATE_FAILED` 상태의 리소스 문제를 해결한 다음에 문제가 발생한 지점에서 프로비저닝을 재개할 수 있습니다.

이렇게 하려면 성공적으로 프로비저닝된 리소스 보존 옵션을 활성화해야 합니다. 이 옵션은 모든 스택 배포 및 변경 세트 작업에 사용할 수 있습니다.
+ 스택 생성의 경우 **성공적으로 프로비저닝된 리소스 보존** 옵션을 선택하면 CloudFormation에서는 성공적으로 생성된 리소스의 상태를 보존하고 실패한 리소스는 다음 업데이트 작업이 수행될 때까지 실패 상태로 유지합니다.
+ 업데이트 및 변경 세트 작업 중에 **성공적으로 프로비저닝된 리소스 보존**을 선택하면 성공한 리소스의 상태를 보존하면서 실패한 리소스를 마지막으로 알려진 안정 상태로 롤백합니다. 실패한 리소스는 `UPDATE_FAILED` 상태가 됩니다. 마지막으로 알려진 안정 상태가 없는 리소스는 다음 스택 작업 시 삭제됩니다.

**Topics**
+ [스택 실패 옵션 개요](#stack-failure-options-overview)
+ [스택 롤백 일시 중지에 필요한 조건](#stack-failure-options-conditions)
+ [성공적으로 프로비저닝된 리소스 보존(콘솔)](#stack-failure-options-console)
+ [성공적으로 프로비저닝된 리소스 보존(AWS CLI)](#stack-failure-options-cli)

## 스택 실패 옵션 개요
<a name="stack-failure-options-overview"></a>

CloudFormation 콘솔, API 또는 AWS CLI에서 작업을 실행하기 전에 프로비저닝된 리소스 실패에 대한 동작을 지정합니다. 그런 다음 다른 수정 없이 리소스 배포 프로세스를 진행합니다. 운영 실패가 발생하면 CloudFormation은 각 독립 프로비저닝 경로의 첫 번째 실패 시 중지합니다. CloudFormation은 리소스 간의 종속 항목을 식별하여 독립 프로비저닝 작업을 병렬화합니다. 그런 다음 실패가 발생할 때까지 각 독립 프로비저닝 경로에서 리소스 프로비저닝을 진행합니다. 한 경로의 실패는 다른 프로비저닝 경로에 영향을 주지 않습니다. CloudFormation은 완료될 때까지 리소스를 계속 프로비저닝하거나 다른 실패 시 중지됩니다.

배포 프로세스를 계속하려면 문제를 수정합니다. CloudFormation은 이전에 성공적으로 프로비저닝할 수 없었던 리소스에 대한 프로비저닝 작업을 재시도하기 전에 필요한 업데이트를 수행합니다. **Retry**(재시도), **Update**(업데이트) 또는 **Roll back**(롤백) 작업을 제출하여 문제를 해결합니다. 예를 들어 Amazon EC2 인스턴스를 프로비저닝하고 EC2 인스턴스가 생성 작업 중 실패하는 경우 실패한 리소스를 즉시 롤백하는 대신 오류를 조사할 수 있습니다. 시스템 상태 확인 및 인스턴스 상태 확인을 검토한 다음 문제가 해결되면 **Retry**(재시도) 작업을 선택할 수 있습니다.

스택 작업이 실패하고 **Stack failure options**(스택 실패 옵션) 메뉴에서 **Preserve successfully provisioned resources**(성공적으로 프로비저닝된 리소스 보존)를 지정한 경우 다음 옵션을 선택할 수 있습니다.
+ **Retry**(재시도) – 실패한 리소스에 대한 프로비저닝 작업을 재시도하고 스택 작업이 성공적으로 완료되거나 다음 오류가 발생할 때까지 템플릿 프로비저닝을 계속합니다. AWS Identity and Access Management(IAM) 권한과 같이 템플릿 수정이 필요하지 않은 문제로 인해 리소스 프로비저닝에 실패한 경우 이 옵션을 선택합니다.
+ **Update**(업데이트) – 프로비저닝된 리소스는 템플릿 업데이트 시 업데이트됩니다. 생성 또는 업데이트에 실패한 리소스는 재시도됩니다. 템플릿 오류로 인해 리소스 프로비저닝에 실패하고 템플릿을 수정한 경우 이 옵션을 선택합니다. `FAILED` 상태인 스택을 업데이트할 때 스택 업데이트를 계속하려면 **Stack failure options**(스택 실패 옵션)에 대해 **Preserve successfully provisioned resources**(성공적으로 프로비저닝된 리소스 보존)를 선택해야 합니다.
+ **Roll back**(롤백) – CloudFormation은 스택을 마지막으로 알려진 안정 상태로 롤백합니다.

## 스택 롤백 일시 중지에 필요한 조건
<a name="stack-failure-options-conditions"></a>

생성된 리소스를 CloudFormation에서 자동으로 롤백하거나 삭제하지 않도록 하려면 다음과 같은 조건이 충족되어야 합니다.

1. 스택을 생성하거나 업데이트할 때 **성공적으로 프로비저닝된 리소스 보존** 옵션을 선택해야 합니다. 그러면 전반적으로 스택 작업이 실패하더라도 성공적으로 생성된 리소스를 삭제하지 않도록 CloudFormation에 지시합니다.

1. 스택 작업이 실패하여 스택 상태가 `CREATE_FAILED` 또는 `UPDATE_FAILED`입니다.

**참고**  
변경할 수 없는 업데이트 유형은 지원되지 않습니다.

## 성공적으로 프로비저닝된 리소스 보존(콘솔)
<a name="stack-failure-options-console"></a>

------
#### [ Create stack ]

**스택 생성 작업 중 성공적으로 프로비저닝된 리소스 보존**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)에서 CloudFormation 콘솔을 엽니다.

1. **스택** 페이지의 오른쪽 상단에서 **스택 생성**을 선택하고 **새 리소스 사용(표준)**을 선택합니다.

1. **사전 조건 - 템플릿 준비**에서 **기존 템플릿 선택**을 선택합니다.

1. **템플릿 지정**, 아래에서 스택 템플릿을 포함하는 S3 버킷의 URL을 지정하거나 스택 템플릿 파일을 업로드하도록 선택합니다. 그리고 **다음**을 선택합니다.

1. **Specify stack details**(스택 세부 정보 지정) 페이지의 **Stack name**(스택 이름) 상자에 스택 이름을 입력합니다.

1. **Parameters**(파라미터) 섹션에서 스택 템플릿에 정의된 파라미터를 지정합니다.

   기본값을 사용하여 파라미터를 사용하거나 변경할 수 있습니다.

1. 파라미터값에 만족하면 **Next**(다음)를 선택합니다.

1. **Configure stack options**(스택 옵션 구성) 페이지에서 스택에 대한 추가 옵션을 설정할 수 있습니다.

1. **Stack failure options**(스택 실패 옵션)에서 **Preserve successfully provisioned resources**(성공적으로 프로비저닝된 리소스 보존)를 선택합니다.

1. 스택 옵션에 만족하면 **Next**(다음)를 선택합니다.

1. **Review**(검토) 페이지에서 스택을 검토하고 **Create stack**(스택 생성)을 선택합니다.

*결과*: 생성에 실패한 리소스는 스택 작업이 실패할 때 스택이 롤백되지 않도록 스택 상태를 `CREATE_FAILED`로 전환합니다. 성공적으로 프로비저닝된 리소스는 `CREATE_COMPLETE` 상태입니다. **Stack events**(스택 이벤트) 탭에서 스택을 모니터링할 수 있습니다.

------
#### [ Update stack ]

**스택 업데이트 작업 중 성공적으로 프로비저닝된 리소스 보존**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)에서 CloudFormation 콘솔을 엽니다.

1. 업데이트할 스택을 선택하고 **Update**(업데이트)를 선택합니다.

1. **Update stack**(스택 지정) 페이지에서 다음 옵션 중 하나를 사용하여 스택 템플릿을 선택합니다.
   + **기존 템플릿 사용**
   + **Replace current template**(현재 템플릿 교체)
   + **Infrastructure Composer에서 템플릿 편집**

   설정을 수락하고 **Next**(다음)를 선택합니다.

1. **Specify stack details**(스택 세부 정보 지정) 페이지에서 스택 템플릿에 정의된 파라미터를 지정합니다.

   기본값을 사용하여 파라미터를 사용하거나 변경할 수 있습니다.

1. 파라미터값에 만족하면 **Next**(다음)를 선택합니다.

1. **Configure stack options**(스택 옵션 구성) 페이지에서 스택에 대한 추가 옵션을 설정할 수 있습니다.

1. **Behavior on provisioning failure**(프로비저닝 실패에 대한 동작)에서 **Preserve successfully provisioned resources**(성공적으로 프로비저닝된 리소스 보존)를 선택합니다.

1. 스택 옵션에 만족하면 **Next**(다음)를 선택합니다.

1. **Review**(검토) 페이지에서 스택을 검토하고 **Update stack**(스택 업데이트)을 선택합니다.

*결과*: 업데이트에 실패한 리소스는 스택 상태를 `UPDATE_FAILED`로 전환하고 마지막으로 알려진 안정 상태로 롤백합니다. 마지막으로 알려진 안정 상태가 없는 리소스는 다음 스택 작업 시 CloudFormation에 의해 삭제됩니다. 성공적으로 프로비저닝된 리소스는 `CREATE_COMPLETE` 또는 `UPDATE_COMPLETE` 상태입니다. **Stack events**(스택 이벤트) 탭에서 스택을 모니터링할 수 있습니다.

------
#### [ Change set ]

**참고**  
`CREATE_FAILED` 또는 `UPDATE_FAILED` 상태의 스택에 대해 변경 세트를 시작할 수 있지만 `UPDATE_ROLLBACK_FAILED` 상태의 스택에 대해 변경 세트를 시작할 수 없습니다.

**변경 세트 작업 중 성공적으로 프로비저닝된 리소스 보존**

1. AWS Management Console에 로그인하여 [https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/)에서 CloudFormation 콘솔을 엽니다.

1. 시작하려는 변경 세트가 포함된 스택을 선택한 다음 **Change sets**(변경 세트) 탭을 선택합니다.

1. 변경 세트를 선택한 다음 **Execute**(실행)를 선택합니다.

1. **Execute change set**(변경 세트 실행)에서 **Preserve successfully provisioned resources**(성공적으로 프로비저닝된 리소스 보존) 옵션을 선택합니다.

1. **Execute change set**(변경 세트 실행)를 선택합니다.

*결과*: 업데이트에 실패한 리소스는 스택 상태를 `UPDATE_FAILED`로 전환하고 마지막으로 알려진 안정 상태로 롤백합니다. 마지막으로 알려진 안정 상태가 없는 리소스는 다음 스택 작업 시 CloudFormation에 의해 삭제됩니다. 성공적으로 프로비저닝된 리소스는 `CREATE_COMPLETE` 또는 `UPDATE_COMPLETE` 상태입니다. **Stack events**(스택 이벤트) 탭에서 스택을 모니터링할 수 있습니다.

------

## 성공적으로 프로비저닝된 리소스 보존(AWS CLI)
<a name="stack-failure-options-cli"></a>

------
#### [ Create stack ]

**스택 생성 작업 중 성공적으로 프로비저닝된 리소스 보존**

[create-stack](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/create-stack.html) 작업 중 `--disable-rollback` 옵션이나 `on-failure DO_NOTHING` 열거를 선택합니다.

1. `--disable-rollback` 옵션을 사용하여 **create-stack** 명령에 스택 이름과 템플릿을 제공합니다.

   ```
   aws cloudformation create-stack --stack-name myteststack \
       --template-body file://template.yaml \
       --disable-rollback
   ```

   명령은 다음 출력을 반환합니다.

   ```
   {
       "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896"
   }
   ```

1. **describe-stacks** 명령을 사용하여 스택의 상태를 설명합니다.

   ```
   aws cloudformation describe-stacks --stack-name myteststack
   ```

   명령은 다음 출력을 반환합니다.

   ```
   {
       "Stacks":  [
           {
               "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896",
               "Description": "AWS CloudFormation Sample Template",
               "Tags": [],
               "Outputs": [],
               "StackStatusReason": “The following resource(s) failed to create: [MyBucket]”,
               "CreationTime": "2013-08-23T01:02:15.422Z",
               "Capabilities": [],
               "StackName": "myteststack",
               "StackStatus": "CREATE_FAILED",
               "DisableRollback": true
           }
       ]
   }
   ```

------
#### [ Update stack ]

**스택 업데이트 작업 중 성공적으로 프로비저닝된 리소스 보존**

1. `--disable-rollback` 옵션을 사용하여 **update-stack** 명령에 기존 스택 이름과 템플릿을 제공합니다.

   ```
   aws cloudformation update-stack --stack-name myteststack \
       --template-url https://s3.amazonaws.com/amzn-s3-demo-bucket/updated.template --disable-rollback
   ```

   명령은 다음 출력을 반환합니다.

   ```
   {
       "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896"
   }
   ```

1. **describe-stacks** 또는 **describe-stack-events** 명령을 사용하여 스택의 상태를 설명합니다.

   ```
   aws cloudformation describe-stacks --stack-name myteststack
   ```

   명령은 다음 출력을 반환합니다.

   ```
   {
       "Stacks":  [
           {
               "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896",
               "Description": "AWS CloudFormation Sample Template",
               "Tags": [],
               "Outputs": [],
               "CreationTime": "2013-08-23T01:02:15.422Z",
               "Capabilities": [],
               "StackName": "myteststack",
               "StackStatus": "UPDATE_COMPLETE",
               "DisableRollback": true
           }
       ]
   }
   ```

------
#### [ Change set ]

**참고**  
`CREATE_FAILED` 또는 `UPDATE_FAILED` 상태의 스택에 대해 변경 세트를 시작할 수 있지만 `UPDATE_ROLLBACK_FAILED` 상태의 스택에 대해 변경 세트를 시작할 수 없습니다.

**변경 세트 작업 중 성공적으로 프로비저닝된 리소스 보존**

[execute-change-set](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/execute-change-set.html) 작업 중 `--disable-rollback` 옵션을 지정합니다.

1. `--disable-rollback` 옵션을 사용하여 **execute-change-set** 명령에 스택 이름과 템플릿을 제공합니다.

   ```
   aws cloudformation execute-change-set --stack-name myteststack \
       --change-set-name my-change-set --template-body file://template.yaml
   ```

   명령은 다음 출력을 반환합니다.

   ```
   {
    "Id": "arn:aws:cloudformation:us-east-1:123456789012:changeSet/my-change-set/bc9555ba-a949-xmpl-bfb8-f41d04ec5784",
    "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896"
   }
   ```

1. `--disable-rollback` 옵션으로 변경 세트를 시작합니다.

   ```
   aws cloudformation execute-change-set --stack-name myteststack \
       --change-set-name my-change-set -–disable-rollback
   ```

1. **describe-stacks** 또는 **describe-stack-events** 명령을 사용하여 스택의 상태를 결정합니다.

   ```
   aws cloudformation describe-stack-events --stack-name myteststack
   ```

   명령은 다음 출력을 반환합니다.

   ```
   {
      "StackEvents": [
        {
           "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896",
           "EventId": "49c966a0-7b74-11ea-8071-024244bb0672",
           "StackName": "myteststack",
           "LogicalResourceId": " MyBucket",
           "PhysicalResourceId": "myteststack-MyBucket-abcdefghijk1",
           "ResourceType": "AWS::S3::Bucket",
           "Timestamp": "2020-04-10T21:43:17.015Z",
           "ResourceStatus": "UPDATE_FAILED"
           "ResourceStatusReason": "User XYZ is not allowed to perform S3::UpdateBucket on MyBucket"
        }
   }
   ```

1. 권한 오류를 수정하고 작업을 다시 시도합니다.

   ```
   aws cloudformation update-stack --stack-name myteststack \
       --use-previous-template --disable-rollback
   ```

   명령은 다음 출력을 반환합니다.

   ```
   {
       "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896"
   }
   ```

1. **describe-stacks** 또는 **describe-stack-events** 명령을 사용하여 스택의 상태를 설명합니다.

   ```
   aws cloudformation describe-stacks --stack-name myteststack
   ```

   명령은 다음 출력을 반환합니다.

   ```
   {
       "Stacks":  [
           {
               "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896",
               "Description": "AWS CloudFormation Sample Template",
               "Tags": [],
               "Outputs": [],
               "CreationTime": "2013-08-23T01:02:15.422Z",
               "Capabilities": [],
               "StackName": "myteststack",
               "StackStatus": "UPDATE_COMPLETE",
               "DisableRollback": true
           }
       ]
   }
   ```

------

### 스택 롤백
<a name="roll-back-stack-cli"></a>

[rollback-stack](https://docs.aws.amazon.com/cli/latest/reference/cloudformation/rollback-stack.html) 명령을 사용하여 스택 상태가 `CREATE_FAILED` 또는 `UPDATE_FAILED`인 스택을 마지막 안정 상태로 롤백할 수 있습니다.

다음 **rollback-stack** 명령에서는 지정된 스택을 롤백합니다.

```
aws cloudformation rollback-stack --stack-name myteststack
```

명령은 다음 출력을 반환합니다.

```
{
    "StackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/myteststack/466df9e0-0dff-08e3-8e2f-5088487c4896"
}
```

**참고**  
**rollback-stack** 작업은 마지막으로 알려진 안정 상태가 없는 스택을 삭제합니다.