

# 샘플 템플릿을 사용하여 StackSet 시작하기
<a name="stacksets-getting-started"></a>

이 자습서는 AWS Management Console을 사용하여 StackSet를 시작하는 데 도움이 됩니다. 샘플 템플릿을 사용하여 StackSet를 생성하는 프로세스를 안내합니다. 여러 리전에 스택을 배포하고, StackSet 작업을 모니터링하고, 결과를 확인하는 방법을 알아봅니다.

이 자습서에서는 미국 서부(오리건) 리전(`us-west-2`) 및 미국 동부(버지니아 북부) 리전(`us-east-1`) 내의 AWS 계정에서 AWS Config를 활성화하는 StackSet를 생성해 봅니다.미국 동부(버지니아 북부) StackSet를 사용하면 단일 작업으로 여러 계정 및 리전에서 스택을 생성, 업데이트 또는 삭제할 수 있으므로 대규모 인프라 관리에 이상적인 솔루션입니다. 이 자습서에서는 설명의 편의를 위해 단일 계정을 사용하지만, StackSet의 다중 리전 기능을 효과적으로 보여줍니다.

샘플 템플릿은 S3 버킷([https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/EnableAWSConfig.yml](https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/EnableAWSConfig.yml))에서 사용할 수 있습니다.

**참고**  
StackSet 자체는 무료이지만 이 자습서의 AWS Config와 같이 StackSet로 생성한 AWS 리소스에 대해서는 요금이 부과됩니다. 자세한 내용은 [AWS Config 요금](https://aws.amazon.com/config/pricing/)을 참조하십시오.

**Topics**
+ [사전 조건](#stacksets-tutorial-prerequisites)
+ [콘솔에서 샘플 템플릿을 사용하여 StackSet 생성](#stacksets-tutorial-create-stackset)
+ [StackSet 생성 모니터링](#stacksets-tutorial-monitor-creation)
+ [StackSet 결과 보기](#stacksets-tutorial-view-results)
+ [StackSet 업데이트](#stacksets-tutorial-update-stackset)
+ [StackSet에 스택 추가](#stacksets-tutorial-add-stacks)
+ [정리](#stacksets-tutorial-clean-up)
+ [다음 단계](#stacksets-tutorial-next-steps)

## 사전 조건
<a name="stacksets-tutorial-prerequisites"></a>

자습서를 시작하기 전에 다음 사전 조건을 완료했는지 확인합니다.
+ 자체 관리형 권한에 필요한 IAM 역할을 설정해야 합니다. StackSet를 생성하고 단일 계정 내에 스택을 배포하려면 계정에 다음 역할이 있어야 합니다.
  + `AWSCloudFormationStackSetAdministrationRole`
  + `AWSCloudFormationStackSetExecutionRole`

  이러한 역할 설정에 대한 자세한 지침은 [자체 관리형 권한 부여](stacksets-prereqs-self-managed.md) 섹션을 참조하세요.

## 콘솔에서 샘플 템플릿을 사용하여 StackSet 생성
<a name="stacksets-tutorial-create-stackset"></a>

**AWS Config를 활성화하는 StackSet를 생성하려면**

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

1. 화면 상단의 탐색 모음에서 StackSet를 관리할 AWS 리전을 선택합니다.

   StackSet를 지원하는 모든 리전을 선택할 수 있습니다. 선택한 리전은 StackSet를 사용하여 배포할 수 있는 리전에 영향을 주지 않습니다.

1. 탐색 창에서 **스택 세트**를 선택합니다.

1. **StackSet** 페이지의 상단에서 **StackSet 만들기**를 선택합니다.

1. **권한**에서 **셀프 서비스 권한**을 선택하고 사전 작업에서 생성한 IAM 역할을 선택합니다.
   + IAM 관리자 역할에서 **AWSCloudFormationStackSetAdministrationRole**을 선택합니다.
   + IAM 실행 역할 이름에서 **AWSCloudFormationStackSetExecutionRole**을 선택합니다.

1. **Prerequisite - Prepare template(사전 조건 - 템플릿 준비)**에서 **Use a sample template(샘플 템플릿 사용)**을 선택하십시오.

1. **샘플 템플릿 선택** 아래에서 **AWS Config 활성화** 템플릿을 선택합니다. 그리고 **다음**을 선택합니다.

   이 템플릿은 구성 레코더, 전송 채널 등, 계정에서 AWS Config를 활성화하는 데 필요한 리소스를 생성합니다.

1. **StackSet 세부 정보 지정** 페이지의 **StackSet 이름**에 **my-awsconfig-stackset**를 입력합니다.

1. **StackSet 설명**에 **A StackSet that enables Config across multiple Regions**를 입력합니다.

1. **파라미터**에서 다음과 같이 AWS Config 설정을 구성합니다.

   1. **모든 리소스 유형 지원**에서 지원되는 모든 리소스 유형을 기록하려면 기본값(**true**)을 유지하세요.

   1. **글로벌 리소스 유형 포함**에서 IAM 역할과 같은 글로벌 리소스를 제외하려면 기본값(**false**)를 유지하세요.

   1. **모두 지원되지 않는 경우 리소스 유형 나열**을 **<All>**로 설정된 상태로 두세요.

   1. **Config 서비스 연결 역할 리소스를 포함하는 리전**의 경우 **<DeployToAnyRegion>**을 **us-west-2**로 바꾸세요.

      즉, `AWSServiceRoleForConfig` 서비스 연결 역할은 스택이 미국 서부(오리건) 리전에 배포된 경우에만 생성됩니다. 이 절차의 뒷부분에서 배포 리전을 선택합니다.

   1. **구성 레코더 기록 빈도**에서 **매일** 기록을 선택합니다.

1. **다음**을 선택하여 계속 진행합니다.

1. **StackSet 옵션 구성** 페이지에서 **새 태그 추가**를 선택하고 키 및 값 페어를 지정하여 태그를 추가합니다.

   1. **키(Key)**에 **Stage**를 입력합니다.

   1. **값**에 **Test**을(를) 입력합니다.

   StackSet에 적용한 태그는 스택에 의해 생성된 리소스에 적용됩니다.

1. **실행 구성**에서 **활성**을 선택하여 CloudFormation의 최적화된 작업 처리를 활성화합니다.
   + 배포 시간을 단축하기 위해, 서로 충돌하지 않는 작업이 동시에 실행됩니다.
   + 서로 충돌하는 작업은 요청된 순서대로 자동으로 대기열에 추가되고 처리됩니다.

   실행 중이거나 대기 중인 작업이 있는 경우 CloudFormation은 충돌하지 않더라도 모든 수신 작업을 대기열에 넣습니다. 이 시간 동안에는 실행 설정을 변경할 수 없습니다.

1. **다음**을 선택합니다.

1. **배포 옵션 설정** 페이지의 **StackSet에 스택 추가**에서 **새 스택 배포**를 선택합니다.

1. **계정**의 경우 **Deploy stacks in accounts(계정에 스택 배포)**를 선택하십시오.

1. 텍스트 상자에 AWS 계정 ID를 입력합니다.

1. **리전 지정**에서 다음 리전을 다음 순서로 선택합니다.

   1. 미국 서부(오리건) 리전(`us-west-2`)

   1. 미국 동부(버지니아 북부) 리전(`us-east-1`)

   필요한 경우, 미국 서부(오리건) 리전 옆에 있는 위쪽 화살표를 사용하여 목록의 첫 번째 항목으로 이동합니다. 리전 순서에 따라 배포 순서가 결정됩니다.

1. **배포 옵션**에서 다음 설정을 구성합니다.

   1. **Maximum concurrent accounts**(최대 동시 계정)의 경우 **Number**(번호) 및 **1**의 기본값을 유지합니다.

      다중 계정 배포의 경우 이 설정을 사용하면 CloudFormation이 한 번에 한 계정에서만 스택을 배포합니다.

   1. **Failure tolerance(내결함성)**의 경우, **번호** 및 **0**의 기본값을 유지하십시오.

      즉, CloudFormation이 현재 리전에서 배포를 중단하고 나머지 리전에서 배포를 취소하기 전에 지정된 리전 중 하나에서 최대 0개의 스택 배포가 실패할 수 있습니다.

   1. **리전 동시성**에서 **순차적**(기본값)을 선택합니다.

      이 설정을 선택하면 CloudFormation이 한 리전에서 배포를 완료한 후에 다음 리전에서 배포를 시작합니다.

   1. **동시성 모드**에서는 기본값인 **엄격한 내결함성**을 그대로 둡니다.

      다중 계정 배포의 경우 실패 시 계정 동시성 수준이 감소하여 **내결함성** \$11 이내로 유지됩니다.

1. **다음**을 선택합니다.

1. [**검토**] 페이지에서 선택 사항을 검토합니다. 변경하려면 관련 섹션에서 **편집**을 선택합니다.

1. StackSet를 생성할 준비가 되면 **제출**을 선택합니다.

## StackSet 생성 모니터링
<a name="stacksets-tutorial-monitor-creation"></a>

**제출**을 선택하면 CloudFormation이 StackSet를 생성하고 계정의 지정된 리전에 스택을 배포하기 시작합니다. 작업 진행 상황을 모니터링할 수 있는 StackSet 세부 정보 페이지가 자동으로 열립니다.

**StackSet 생성을 모니터링하려면**

1. StackSet 세부 정보 페이지에는 진행 중인 현재 **작업**을 보여주는 작업 탭이 기본적으로 표시됩니다.

1. 처음에 작업 상태는 `RUNNING`입니다. 사용자가 구성한 배포 옵션에 따라 CloudFormation이 지정한 리전에 스택을 생성합니다.

1. 작업에 대한 세부 정보를 보려면 목록에서 작업 ID를 선택합니다.

1. 작업 세부 정보 페이지에서 각 리전에서 생성 중인 스택 인스턴스의 상태를 볼 수 있습니다.

1. 작업 상태가 `SUCCEEDED`로 변경될 때까지 기다립니다. 이는 StackSet 및 모든 스택 인스턴스가 성공적으로 생성되었음을 나타냅니다.

## StackSet 결과 보기
<a name="stacksets-tutorial-view-results"></a>

StackSet 생성이 완료되고 나면, 배포된 스택 인스턴스를 보고 지정한 리전의 계정에서 AWS Config가 활성화되었는지 확인할 수 있습니다.

**StackSet 결과를 보려면**

1. StackSet 세부 정보 페이지에서 **스택 인스턴스** 탭을 선택합니다.

1. 지정한 리전의 계정에 생성된 스택 인스턴스 목록이 표시되어야 합니다. 각 스택 인스턴스의 상태는 `SUCCEEDED`여야 하며, 이는 성공적으로 배포되었음을 나타냅니다.

1. 계정에서 AWS Config가 활성화되어 있는지 확인하려면 배포된 각 리전에서 AWS Config 콘솔을 확인하면 됩니다.

## StackSet 업데이트
<a name="stacksets-tutorial-update-stackset"></a>

StackSet를 생성한 후 파라미터 값을 수정하거나 리전을 더 추가하여 업데이트할 수 있습니다. 이 섹션에서는 AWS Config 기록 빈도 파라미터를 업데이트하는 방법을 살펴보겠습니다.

**StackSet를 업데이트하려면**

1. **StackSet** 페이지에서 **my-awsconfig-stackset**를 선택합니다.

1. StackSet를 선택한 상태로 **작업** 메뉴에서 **StackSet 세부 정보 편집**을 선택합니다.

1. **템플릿 선택** 페이지의 **사전 조건 - 템플릿 준비**에서 **현재 템플릿 사용**을 선택합니다.

1. **다음**을 선택합니다.

1. **StackSet 세부 정보 지정** 페이지의 **파라미터**에서 **구성 레코더 기록 빈도**를 찾아 **매일**에서 **계속**으로 변경합니다.

1. **다음**을 선택합니다.

1. **StackSet 옵션 구성** 페이지에서 설정을 그대로 두고 **다음**을 선택합니다.

1. **배포 옵션 설정** 페이지에서 StackSet를 생성할 때 사용한 것과 동일한 리전과 계정 ID를 지정합니다.

1. **배포 옵션**의 경우 이전과 동일한 설정을 유지합니다.

1. **다음**을 선택합니다.

1. **검토** 페이지에서 변경 내용을 검토하고 **제출**을 선택합니다.

1. CloudFormation이 StackSet 업데이트를 시작합니다. StackSet 세부 정보 페이지의 **작업** 탭에서 진행 상황을 모니터링할 수 있습니다.

## StackSet에 스택 추가
<a name="stacksets-tutorial-add-stacks"></a>

새 리전에 추가로 배포하여 StackSet에 스택을 더 추가할 수 있습니다. 이 섹션에서는 새 리전에 스택을 추가하는 방법을 보여줍니다.

**StackSet에 스택을 추가하려면**

1. **StackSet** 페이지에서 **my-awsconfig-stackset**를 선택합니다.

1. StackSet를 선택한 상태로 **작업** 메뉴에서 **StackSet에 스택 추가**를 선택합니다.

1. **배포 옵션 설정** 페이지의 **StackSet에 스택 추가**에서 **새 스택 배포**를 선택합니다.

1. **계정**에서 **계정에 스택 배포**를 선택하고 계정 ID를 입력합니다.

1. **리전 지정**에서 **유럽(아일랜드)**(`eu-west-1`)와 같은 새 리전을 선택합니다.

1. **배포 옵션**의 경우 이전과 동일한 설정을 유지합니다.

1. **다음**을 선택합니다.

1. **재정의 지정** 페이지의 속성 값을 지정한 값으로 남겨두고 **다음**을 선택합니다.

1. **검토** 페이지에서 선택 사항을 검토하고 **제출**을 선택하십시오.

1. CloudFormation이 지정한 리전에 새 스택을 생성하기 시작합니다. StackSet 세부 정보 페이지의 **작업** 탭에서 진행 상황을 모니터링할 수 있습니다.

## 정리
<a name="stacksets-tutorial-clean-up"></a>

원치 않는 AWS Config 리소스에 대한 요금이 발생하지 않도록 하려면, StackSet에서 스택을 삭제하고, StackSet 자체를 삭제하고, 이 자습서에서 생성한 IAM 역할을 제거하여 정리해야 합니다. 모든 리소스는 사용자의 계정 내에서 배포되므로 간단히 정리할 수 있습니다.

**StackSet에서 스택을 삭제하려면**

1. **StackSet** 페이지에서 **my-awsconfig-stackset**를 선택합니다.

1. StackSet를 선택한 상태로 **작업** 메뉴에서 **StackSet에서 스택 삭제**를 선택합니다.

1. **배포 옵션 설정** 페이지의 **계정**에서 **계정에 스택 배포**를 선택하고 계정 ID를 입력합니다.

1. **리전 지정**에서 스택을 배포한 리전을 모두 선택합니다.

1. **배포 옵션**의 경우 기본 설정을 유지합니다.

1. 스택과 해당 리소스가 삭제되도록, **스택 유지**가 켜져 *있지 않은지* 확인합니다.

1. **다음**을 선택합니다.

1. **검토** 페이지에서 선택 사항을 검토하고 **제출**을 선택하십시오.

1. CloudFormation이 StackSet에서 스택을 삭제하기 시작합니다. StackSet 세부 정보 페이지의 **작업** 탭에서 진행 상황을 모니터링할 수 있습니다.

**StackSet를 삭제하려면**

1. 스택이 모두 삭제된 후 **StackSet** 페이지에서 **my-awsconfig-stackset**를 선택합니다.

1. StackSet를 선택한 상태로 **작업** 메뉴에서 **StackSet 삭제**를 선택합니다.

1. 확인하라는 메시지가 나타나면 **삭제**를 선택합니다.

**IAM 서비스 역할을 삭제하려면**

사용자의 계정에만 배포했으므로, 이 단일 계정에서 IAM 역할만 삭제하면 되고 다중 계정 배포보다 정리가 훨씬 간단합니다.

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

1. 탐색 창에서 **역할**을 선택합니다.

1. 검색 상자에 **AWSCloudFormationStackSet**를 입력하여 이 자습서에서 생성한 역할을 찾습니다.

1. **AWSCloudFormationStackSetAdministrationRole** 옆의 확인란을 선택합니다.

1. 페이지 상단에서 **삭제**를 선택합니다.

1. 확인 대화 상자에 **delete**를 입력한 다음 **삭제**를 선택합니다.

1. 동일한 프로세스를 반복하여 **AWSCloudFormationStackSetExecutionRole**을 삭제합니다.

StackSet를 삭제하고 나면, `AWS::S3::Bucket` 리소스의 `DeletionPolicy` 속성으로 인해 각 AWS 리전에 Amazon S3 버킷이 남아 있습니다. 따라서 AWS Config 기록 데이터가 보존됩니다. 이 데이터가 더 이상 필요하지 않은 경우 버킷을 수동으로 안전하게 삭제할 수 있습니다. 버킷을 삭제하려면 먼저 버킷을 비워야 합니다. 버킷을 비우면 버킷 내 모든 객체가 삭제됩니다.

**Amazon S3 버킷을 비우고 삭제하려면**

1. [Amazon S3 콘솔](https://console.aws.amazon.com/s3/)을 엽니다.

1. 콘솔 왼쪽의 탐색 창에서 **버킷**을 선택합니다.

1. 배포한 각 리전에서 이 StackSet에 대해 생성된 버킷이 **버킷** 목록에 표시됩니다. 이 StackSet에 대해 생성된 버킷의 이름 옆에 있는 옵션을 선택한 다음 **비우기**를 선택합니다.

1. **버킷 비우기** 페이지에서 텍스트 필드에 **permanently delete**를 입력하여 버킷을 비우려는 의사를 확정한 후 **비우기**를 선택합니다.

1. [**버킷 비우기: 상태(Empty bucket: Status)**] 페이지에서 버킷 비우기 프로세스의 진행 상황을 모니터링합니다.

1. 버킷 목록으로 돌아가려면 **종료**를 선택합니다.

1. 버킷의 이름 옆에 있는 옵션을 선택한 다음 **삭제**를 선택합니다.

1. 확인 메시지가 나타나면 버킷의 이름을 입력한 다음 **버킷 삭제**를 선택합니다.

1. **버킷** 목록에서 버킷 삭제 프로세스의 진행 상황을 모니터링합니다. Amazon S3가 버킷 삭제를 완료하면 목록에서 해당 버킷을 제거합니다.

1. 다른 리전의 StackSet에 의해 생성된 각 버킷마다 이 프로세스를 반복합니다.

## 다음 단계
<a name="stacksets-tutorial-next-steps"></a>

축하합니다\$1 샘플 템플릿을 사용하여 StackSet를 생성하고, 계정 내의 여러 리전에 스택을 배포하고, StackSet를 업데이트하고, 스택을 더 추가하고, 리소스를 정리했습니다. 단일 계정 배포에 집중함으로써, StackSet의 핵심 다중 리전 기능을 학습하기에 편리하도록 정리 프로세스를 간소화했습니다.

StackSet에 대해 자세히 알아보려면 다음 주제를 살펴보세요.
+ [CloudFormation StackSet 내 스택에서 파라미터 값 재정의](stackinstances-override.md) - 특정 계정 및 리전의 파라미터 값을 재정의하는 방법을 알아봅니다.
+ [서비스 관리형 권한으로 CloudFormation StackSet 생성](stacksets-orgs-associate-stackset-with-org.md) - AWS Organizations를 사용하여 다중 계정 배포를 위한 StackSet를 생성하는 방법을 살펴봅니다.