

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 카탈로그 관리
<a name="catalogs"></a>

AWS Service Catalog 는 관리자 콘솔에서 포트폴리오, 제품 및 제약 조건을 관리하기 위한 인터페이스를 제공합니다.

**참고**  
이 단원의 작업을 수행하려면 AWS Service Catalog에 대한 관리자 권한이 있어야 합니다. 자세한 내용은 [의 자격 증명 및 액세스 관리 AWS Service Catalog](controlling_access.md) 섹션을 참조하십시오.

**Topics**
+ [포트폴리오 관리](catalogs_portfolios.md)
+ [제품 관리](catalogs_products.md)
+ [AWS Service Catalog 제약 조건 사용](constraints.md)
+ [AWS Service Catalog 서비스 작업](using-service-actions.md)
+ [포트폴리오에 AWS Marketplace 제품 추가](catalogs_marketplace-products.md)
+ [CloudFormation StackSets 사용](using-stacksets.md)
+ [예산 관리](catalogs_budgets.md)

# 포트폴리오 관리
<a name="catalogs_portfolios"></a>

 AWS Service Catalog  관리자 콘솔의 **포트폴리오** 페이지에서 포트폴리오를 만들고, 보고, 업데이트합니다.

**Topics**
+ [포트폴리오 생성, 보기 및 삭제](#portfoliomgmt-menu)
+ [포트폴리오 세부 정보 보기](#portfoliomgmt-portdetails)
+ [포트폴리오 생성 및 삭제](portfoliomgmt-create.md)
+ [제품 추가](portfoliomgmt-products.md)
+ [제약 조건 추가](portfoliomgmt-constraints.md)
+ [사용자에게 액세스 권한 부여](catalogs_portfolios_users.md)
+ [포트폴리오 공유](catalogs_portfolios_sharing_how-to-share.md)
+ [포트폴리오 공유 및 가져오기](catalogs_portfolios_sharing.md)

## 포트폴리오 생성, 보기 및 삭제
<a name="portfoliomgmt-menu"></a>

**포트폴리오** 페이지에 현재 리전에서 만든 포트폴리오 목록이 표시됩니다. 이 페이지를 사용하여 새 포트폴리오를 만들거나, 포트폴리오의 세부 정보를 보거나, 계정에서 포트폴리오를 삭제합니다.

****포트폴리오** 페이지를 보려면**

1. Service Quotas 콘솔([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/))을 엽니다.

1. 필요에 따라 다른 리전을 선택합니다.

1. 를 처음 사용하는 경우 AWS Service Catalog 시작 페이지가 AWS Service Catalog표시됩니다. **시작하기**를 선택하여 포트폴리오를 만듭니다. 지침에 따라 첫 포트폴리오를 만든 후 **포트폴리오** 페이지로 이동합니다.

를 사용하는 동안 언제든지 **포트폴리오** 페이지로 돌아갈 AWS Service Catalog수 있습니다. 탐색 모음에서 **서비스 카탈로그**를 선택한 다음 **포트폴리오를** 선택합니다.

## 포트폴리오 세부 정보 보기
<a name="portfoliomgmt-portdetails"></a>

 AWS Service Catalog 관리자 콘솔의 **포트폴리오 세부 정보** 페이지에는 포트폴리오에 대한 설정이 나열됩니다. 이 페이지를 사용하여 포트폴리오의 제품을 관리하고, 사용자에게 제품에 대한 액세스 권한을 부여하고, TagOption과 제약 조건을 적용합니다.

****포트폴리오 세부 정보** 페이지를 보려면**

1. Service Quotas 콘솔([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/))을 엽니다.

1. 관리하려는 포트폴리오를 선택합니다.

# 포트폴리오 생성 및 삭제
<a name="portfoliomgmt-create"></a>

**포트폴리오** 페이지를 사용하여 포트폴리오를 생성 및 삭제합니다.

**새 포트폴리오를 생성하려면**

1. 왼쪽 탐색 메뉴에서 **포트폴리오**를 선택합니다.

1. **포트폴리오 생성**을 선택합니다.

1. **포트폴리오 생성** 페이지에서 요청된 정보를 입력합니다.

1. **Create**. AWS Service Catalog creates 포트폴리오를 선택하고 포트폴리오 세부 정보를 표시합니다.

**포트폴리오 삭제**
**참고**  
*로컬* 포트폴리오만 삭제할 수 있습니다. *가져온* (공유) 포트폴리오는 제거할 수 있지만 가져온 포트폴리오는 삭제할 수 없습니다.

포트폴리오를 삭제하려면 먼저 포트폴리오의 제품, 제약, 그룹, 역할, 사용자, 공유 및 TagOption를 모두 제거해야 합니다. 이렇게 하려면 포트폴리오를 열어 **포트폴리오 세부 정보**를 확인합니다. 그런 다음 탭을 선택하여 제거합니다.
**참고**  
오류를 방지하려면 제품을 제거하기 *전에* 포트폴리오에서 제약을 제거합니다.

1. 왼쪽 탐색 메뉴에서 **포트폴리오**를 선택합니다.

1. 삭제할 포트폴리오를 선택합니다.

1. **삭제**를 선택합니다. *로컬* 포트폴리오만 삭제할 수 있습니다. *가져온* (공유) 포트폴리오를 삭제하려는 경우, **작업** 메뉴를 사용할 수 없습니다.

1. 확인 창에서 **삭제**를 선택합니다.

# 제품 추가
<a name="portfoliomgmt-products"></a>

 새 제품을 기존 포트폴리오에 직접 업로드하거나 카탈로그의 기존 제품을 포트폴리오에 연결하여 포트폴리오에 제품을 추가할 수 있습니다.

**참고**  
 AWS Service Catalog 제품을 생성할 때 CloudFormation 템플릿 또는 Terraform 구성 파일을 업로드할 수 있습니다. CloudFormation 템플릿은 Amazon Simple Storage Service(Amazon S3) 버킷에 저장되며 버킷 이름은 "***cf-templates-***"로 시작합니다. 또한 제품을 프로비저닝할 때 추가 버킷에서 객체를 검색할 수 있는 권한이 있어야 합니다. 자세한 내용은 [제품 생성](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/productmgmt-cloudresource.html#productmgmt-cloudresource-troubleshooting) 단원을 참조하십시오.

## 새 제품 추가
<a name="portfoliomgmt-products-new"></a>

**포트폴리오 세부 정보** 페이지에서 바로 새 제품을 추가합니다. 이 페이지에서 제품을 생성하면가 현재 선택한 포트폴리오에 제품을 AWS Service Catalog 추가합니다.

**새 제품을 추가하려면**

1.  **포트폴리오** 페이지로 이동한 후 제품을 추가하려는 포트폴리오 이름을 선택합니다.

1. **포트폴리오 세부 정보** 페이지에서 **제품** 섹션을 확장한 다음, **신규 제품 업로드**를 선택합니다.

1. **제품 세부 정보 입력**에 다음을 입력합니다.
   + **제품 이름** - 제품 이름입니다.
   + **제품 설명**(선택 사항) - 제품 설명. 이 설명은 올바른 제품을 선택할 수 있도록 제품 목록에 표시됩니다.
   + **설명** - 전체 설명입니다. 이 설명은 올바른 제품을 선택할 수 있도록 제품 목록에 표시됩니다.
   + **소유자 또는 배포자** - 소유자의 이름 또는 이메일 주소. 배포자의 연락처 정보는 선택 사항입니다.
   + **공급업체**(선택 사항) - 애플리케이션 게시자의 이름입니다. 이 필드를 통해 제품 목록을 정렬하여 제품을 더 쉽게 찾을 수 있습니다.

1. **버전 세부 정보** 페이지에서 다음을 입력합니다.
   + **템플릿 선택** - CloudFormation 제품의 경우 자체 템플릿 파일, 로컬 드라이브의 CloudFormation 템플릿 또는 Amazon S3에 저장된 템플릿, 기존 CloudFormation 스택 ARN 템플릿 또는 외부 리포지토리에 저장된 템플릿 파일을 가리키는 URL을 선택합니다.

     Teraform 제품의 경우 자체 템플릿 파일, 로컬 드라이브의 tar.gz 구성 파일 또는 Amazon S3에 저장된 템플릿을 가리키는 URL 또는 외부 리포지토리에 저장된 tar.gz 구성 파일을 선택합니다.
   + **버전 이름**(선택 사항) - 제품 버전의 이름입니다(예: ‘v1’, ‘v2beta’). 공백은 사용할 수 없습니다.
   + **설명**(선택 사항) - 이 버전과 이전 버전의 차이점 등이 포함된 제품 버전에 대한 설명입니다.

1. **지원 세부 정보 입력**에 다음을 입력합니다.
   + **이메일 연락처**(선택 사항) - 제품 관련 문제를 보고하기 위한 이메일 주소입니다.
   + **지원 링크**(선택 사항) - 사용자가 지원 정보 또는 파일 티켓을 찾을 수 있는 사이트 URL입니다. URL은 `http://` 또는 `https://`로 시작해야 합니다. 관리자는 지원 정보의 정확성과 액세스를 관리할 책임이 있습니다.
   + **지원 설명**(선택 사항) - **이메일 연락처** 및 **지원 링크**를 사용하는 방법에 대한 설명입니다.

1. **제품 생성**을 선택합니다.

## 기존 제품 추가
<a name="portfoliomgmt-products-existing"></a>

**포트폴리오** 목록, **포트폴리오 세부 정보** 페이지 또는 **제품 목록** 페이지 등 세 위치에서 포트폴리오에 기존 제품을 추가할 수 있습니다.

**포트폴리오에 기존 제품을 추가하는 방법**

1. **포트폴리오** 페이지로 이동합니다.

1. 포트폴리오를 선택합니다. 그런 다음 **작업** - **포트폴리오에 제품 추가**를 선택합니다.

1.  제품을 선택한 다음 **포트폴리오에 제품 추가**를 선택합니다.

## 포트폴리오에서 제품 제거
<a name="portfoliomgmt-products-remove"></a>

제품을 더 이상 사용하지 않게 하려면 포트폴리오에서 제품을 제거합니다. **제품** 페이지의 카탈로그에서 제품을 계속 사용할 수 있으며, 다른 포트폴리오에 추가할 수도 있습니다. 포트폴리오에서 여러 제품을 한 번에 제거할 수 있습니다.

**포트폴리오에서 제품을 제거하려면**

1. **포트폴리오** 페이지로 이동한 후 제품이 포함된 포트폴리오를 선택합니다. **포트폴리오 세부 정보** 페이지가 열립니다.

1. **제품** 섹션을 확장합니다.

1. 제품을 하나 이상 선택한 후 **제거**를 선택합니다.

1. 선택 내용을 확인합니다.

# 제약 조건 추가
<a name="portfoliomgmt-constraints"></a>

사용자가 제품을 사용하는 방식을 제어하는 제약을 추가해야 합니다. 에서 AWS Service Catalog 지원하는 제약 유형에 대한 자세한 내용은 섹션을 참조하세요[AWS Service Catalog 제약 조건 사용](constraints.md).

 포트폴리오에 제품을 배치한 후 제약 조건을 추가합니다.

**제품에 제약 조건을 추가하려면**

1. Service Quotas 콘솔([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/))을 엽니다.

1. **포트폴리오**를 선택하고 포트폴리오를 선택합니다.

1. 포트폴리오 세부 정보 페이지에서 **제약 조건 생성** 섹션을 확장한 다음, **제약 추가** 탭을 선택합니다.

1. **제품**에서 제약 조건을 적용할 제품을 선택합니다.

1. **제약 조건 유형**에서 다음 옵션 중 하나를 선택합니다.

   **시작** - AWS 리소스를 프로비저닝하는 데 사용되는 제품에 IAM 역할을 할당할 수 있습니다. 자세한 내용은 [AWS Service Catalog 시작 제약 조건](constraints-launch.md) 단원을 참조하십시오.

   **알림** - Amazon SNS 주제로 제품 알림을 스트리밍할 수 있습니다. 자세한 내용은 [AWS Service Catalog 알림 제약 조건](constraints-notification.md) 섹션을 참조하십시오.

   **템플릿** - 최종 사용자가 제품을 시작할 때 사용할 수 있는 옵션을 제한할 수 있습니다. 템플릿은 하나 이상의 규칙이 포함된 JSON 형식의 텍스트 파일로 구성됩니다. 규칙은 제품에서 사용하는 CloudFormation 템플릿에 추가됩니다. 자세한 내용은 [템플릿 제약 조건 규칙](reference-template_constraint_rules.md) 단원을 참조하십시오.

    **스택 세트** - CloudFormation StackSets. 자세한 내용은 [AWS Service Catalog 스택 세트 제약 조건](constraints-stackset.md) 단원을 참조하십시오.

   **태그 업데이트** - 제품을 프로비저닝한 후 태그를 업데이트할 수 있습니다. 자세한 내용은 [AWS Service Catalog 시작 제약 조건](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/constraints-resourceupdate.html)을 참조하십시오.

1.  **계속**을 선택하고 필요한 정보를 입력합니다.

**제약 조건을 편집하려면**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/catalog/](https://console.aws.amazon.com/catalog/) AWS Service Catalog 관리자 콘솔을 엽니다.

1. **포트폴리오**를 선택하고 포트폴리오를 선택합니다.

1. **포트폴리오 세부 정보** 페이지에서 **제약 조건 생성** 섹션을 확장한 후 편집할 제약 조건을 선택합니다.

1. **제약 편집**을 선택합니다.

1. 필요에 따라 제약 조건을 편집한 후 **저장** 탭을 선택합니다.

# 사용자에게 액세스 권한 부여
<a name="catalogs_portfolios_users"></a>

사용자에게 그룹 또는 역할을 통해 포트폴리오에 대한 액세스 권한을 부여합니다. 여러 사용자에게 포트폴리오 액세스 권한을 부여하는 가장 좋은 방법은 사용자를 하나의 IAM 그룹에 넣고 해당 그룹에 액세스 권한을 부여하는 것입니다. 그렇게 하면 해당 그룹에서 사용자를 간단히 추가하고 삭제하여 포트폴리오 액세스를 관리할 수 있습니다. 자세한 내용은 *IAM 사용 설명서*의 [IAM 사용자 및 그룹](https://docs.aws.amazon.com/IAM/latest/UserGuide/Using_WorkingWithGroupsAndUsers.html)을 참조하십시오.

포트폴리오에 대한 액세스 권한 외에도 사용자는 AWS Service Catalog 최종 사용자 콘솔에도 액세스할 수 있어야 합니다. IAM에서 권한을 적용하여 콘솔에 대한 액세스 권한을 부여할 수 있습니다. 자세한 내용은 [의 자격 증명 및 액세스 관리 AWS Service Catalog](controlling_access.md) 섹션을 참조하십시오.

포트폴리오와 해당 주체를 다른 계정과 공유하려는 경우 주체 이름(그룹, 역할 또는 사용자)을 포트폴리오와 연결할 수 있습니다. 주체 이름은 포트폴리오와 공유되며 수신자 계정에서 최종 사용자에게 액세스 권한을 부여하는 데 사용됩니다.

**사용자 또는 그룹에 포트폴리오 액세스 권한을 부여하려면**

1. Service Quotas 콘솔([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/))을 엽니다.

1.  탐색 창에서 **관리**를 선택한 다음 **포트폴리오**를 선택합니다.

1.  그룹, 역할 또는 사용자에게 액세스 권한을 부여하려는 포트폴리오를 선택합니다. **포트폴리오 세부 정보** 페이지로 AWS Service Catalog 이동합니다.

1.  **포트폴리오 세부 정보** 페이지에서 **액세스** 탭을 선택합니다.

1.  **포트폴리오 액세스**에서 **액세스 권한 부여**를 선택합니다.

1.  **유형**에서 **주체 이름**을 선택한 다음 **group/**, **role/** 또는 **user/**, 유형을 선택합니다. 최대 9개의 주체 이름을 추가할 수 있습니다.

1.  **액세스 권한 부여**를 선택하여 주체를 현재 포트폴리오에 연결합니다.

**포트폴리오에 대한 액세스를 제거하려면**

1. **포트폴리오 세부 정보** 페이지에서 그룹, 역할 및 사용자 탭을 선택합니다.

1. **액세스 제거**를 선택합니다.

# 포트폴리오 공유
<a name="catalogs_portfolios_sharing_how-to-share"></a>

다른 AWS 계정의 AWS Service Catalog 관리자가 최종 사용자에게 제품을 배포할 수 있도록 하려면 account-to-account 공유 또는를 사용하여 AWS Service Catalog 포트폴리오를 공유합니다 AWS Organizations.

 계정 간 공유 또는 조직을 사용하여 포트폴리오를 공유할 때 해당 포트폴리오의 *참조*를 공유하는 것입니다. 가져온 포트폴리오의 제품과 제약 조건은 공유한 원래 포트폴리오인 *공유 포트폴리오*에 적용하는 변경 사항과 동기화됩니다.

수신자는 제품 또는 제약 조건을 변경할 수 없지만 최종 사용자에 대한 AWS Identity and Access Management 액세스 권한을 추가할 수 있습니다.

**참고**  
 공유 리소스는 공유할 수 없습니다. 여기에는 공유 제품이 포함된 포트폴리오가 포함됩니다.

## 계정 간 공유
<a name="portfolio-sharing-account"></a>

이 단계를 완료하려면 대상 계정의 AWS 계정 ID를 얻어야 합니다. ID는 대상 **계정의에 있는 내** 계정 페이지에서 찾을 수 있습니다. AWS Management Console 

**포트폴리오를 AWS 계정과 공유하려면**

1. Service Quotas 콘솔([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/))을 엽니다.

1. 왼쪽 탐색 메뉴에서 **포트폴리오**를 선택한 다음 공유하려는 포트폴리오를 선택합니다. **작업** 메뉴에서 **공유**를 선택합니다.

1. **계정 ID 입력**에 공유하려는 계정의 AWS 계정 ID를 입력합니다. (선택 사항) [TagOption 공유](#tagoptions-share)를 선택합니다. 그런 다음 **공유**를 선택합니다.

1. 대상 계정의 AWS Service Catalog 관리자에게 URL을 보냅니다. 이 URL에서 자동으로 제공되는 공유 포트폴리오의 ARN이 있는 **포트폴리오 가져오기** 페이지가 열립니다.

### 포트폴리오 가져오기
<a name="catalogs_portfolios_sharing_importing"></a>

다른 AWS 계정의 AWS Service Catalog 관리자가 포트폴리오를 공유하는 경우 최종 사용자에게 제품을 배포할 수 있도록 해당 포트폴리오를 계정으로 가져옵니다.

포트폴리오를 공유한 경우 포트폴리오를 가져올 필요가 없습니다 AWS Organizations.

포트폴리오를 가져오려면 관리자의 포트폴리오 가져오기 URL이 필요합니다.

가져온 모든 포트폴리오를 보려면 [https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/) AWS Service Catalog 콘솔을 엽니다. **포트폴리오** 페이지에서 **가져온 항목** 탭을 선택합니다. **가져온 포트폴리오** 테이블을 검토합니다.

## 와 공유 AWS Organizations
<a name="portfolio-sharing-organizations"></a>

를 사용하여 AWS Service Catalog 포트폴리오를 공유할 수 있습니다 AWS Organizations.

 먼저 마스터 계정에서 공유할지 아니면 위임 관리자 계정에서 공유할지 여부를 결정해야 합니다. 마스터 계정에서 공유하지 않으려면 위임 관리자 계정을 등록하여 공유에 사용합니다. 자세한 내용을 알아보려면 *CloudFormation 사용 설명서*의 [위임된 관리자 등록](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-orgs-delegated-admin.html)을 참조하십시오.

 다음으로, 공유할 대상을 결정해야 합니다. 다음 엔터티와 공유할 수 있습니다.
+ 조직 계정.
+ 조직 단위(OU).
+ 조직 자체. (이 계정은 조직의 모든 계정과 공유됩니다.)

### 관리 계정에서 공유하기
<a name="sharing-from-master"></a>

조직 구조를 사용하거나 조직 노드의 ID를 입력하면 조직과 포트폴리오를 공유할 수 있습니다.

****조직 구조를 사용하여 조직과 포트폴리오를 공유하려면****

1. [https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/) AWS Service Catalog 콘솔을 엽니다.

1. **포트폴리오** 페이지에서 공유하려는 포트폴리오를 선택하고 탭을 선택합니다. **작업** 메뉴에서 **공유**를 선택합니다.

1. **AWS Organizations**를 선택하고 조직 구조로 필터링합니다.

   루트 노드를 선택하여 전체 조직, 상위 조직 단위(OU), 하위 OU 또는 조직 내 AWS 계정과 포트폴리오를 공유할 수 있습니다.

   상위 OU에 공유하면 포트폴리오가 해당 상위 OU 내의 모든 계정 및 하위 OU와 공유됩니다.

   ** AWS 계정만 보기를** 선택하여 조직의 모든 AWS 계정 목록을 볼 수 있습니다.

****조직 노드의 ID를 입력하여 조직과 포트폴리오를 공유하려면****

1. [https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/) AWS Service Catalog 콘솔을 엽니다.

1. **포트폴리오** 페이지에서 공유하려는 포트폴리오를 선택하고 탭을 선택합니다. **작업** 메뉴에서 **공유**를 선택합니다.

1. **조직 노드**를 선택합니다.

   조직 전체, 조직 내 AWS 계정 또는 OU와 공유할지 여부를 선택합니다.

   선택한 조직 노드의 ID를 입력합니다.이 ID는 [https://console.aws.amazon.com/organizations/](https://console.aws.amazon.com/organizations/)의 AWS Organizations 콘솔 내에서 찾을 수 있습니다.

### 위임 관리자 계정에서 공유
<a name="delegated-admin"></a>

 조직의 마스터 계정은 조직의 위임 관리자로 다른 계정을 등록 및 등록 취소할 수 있습니다.

위임된 관리자는 관리 계정과 동일한 방식으로 조직의 AWS Service Catalog 리소스를 공유할 수 있습니다. 포트폴리오 등을 생성, 삭제 및 공유할 수 있는 권한이 부여됩니다.

위임 관리자를 등록하거나 등록 취소하려면 마스터 계정의 API 또는 CLI를 사용해야 합니다. 자세한 내용은 *AWS Organizations API 참조*의 [RegisterDelegatedAdministrator](https://docs.aws.amazon.com/organizations/latest/APIReference/API_RegisterDelegatedAdministrator.html) 및 [DeregisterDelegatedAdministrator](https://docs.aws.amazon.com/organizations/latest/APIReference/API_DeregisterDelegatedAdministrator.html)를 참조하십시오.

**참고**  
대리인을 지정하려면 먼저 관리자가 [https://docs.aws.amazon.com/servicecatalog/latest/dg/API_EnableAWSOrganizationsAccess.html](https://docs.aws.amazon.com/servicecatalog/latest/dg/API_EnableAWSOrganizationsAccess.html)를 호출해야 합니다.

위임 관리자 계정에서 포트폴리오를 공유하는 절차는 [관리 계정에서 공유하기](#sharing-from-master)에서 설명한 것처럼 마스터 계정에서 공유하는 절차와 동일합니다.

 멤버가 위임 관리자로 등록 취소된 경우 다음과 같은 상황이 발생합니다.
+ 해당 계정에서 생성된 포트폴리오 공유가 제거됩니다.
+ 더 이상 새로운 포트폴리오 공유를 생성할 수 없습니다.

**참고**  
 위임 관리자가 생성한 포트폴리오 및 공유가 위임 관리자의 등록 취소된 후 제거되지 않으면 위임 관리자를 다시 등록하고 등록 취소합니다. 이렇게 하면 해당 계정에서 생성한 포트폴리오 및 공유가 제거됩니다.

### 조직 내 계정 이동
<a name="move-account"></a>

조직 내에서 계정을 이동하면 계정과 공유된 AWS Service Catalog 포트폴리오가 변경될 수 있습니다.

계정은 대상 조직 또는 조직 단위와 공유한 포트폴리오에만 액세스할 수 있습니다.

## 포트폴리오 공유 시 TagOption 공유
<a name="tagoptions-share"></a>

관리자는 TagOption를 포함하도록 공유를 생성할 수 있습니다. TagOption는 관리자가 다음을 수행할 수 있는 키-값 쌍입니다.
+ 태그의 분류를 정의하고 적용합니다.
+ 태그 옵션을 정의하고 이를 제품 및 포트폴리오에 연결합니다.
+ 포트폴리오 및 제품과 관련된 태그 옵션을 다른 계정과 공유합니다.

기본 계정에서 태그 옵션을 추가하거나 제거하면 변경 내용이 수신자 계정에 자동으로 표시됩니다. 수신자 계정에서 최종 사용자가 TagOptions로 제품을 프로비저닝할 때 프로비저닝된 제품의 태그가 되는 태그의 값을 선택해야 합니다.

수신자 계정에서 관리자는 추가 로컬 TagOption를 가져온 포트폴리오에 연결하여 해당 계정에만 적용되는 태그 지정 규칙을 적용할 수 있습니다.

**참고**  
포트폴리오를 공유하려면 소비자의 AWS 계정 ID가 필요합니다. 콘솔의 **내** AWS 계정에서 계정 ID를 찾습니다.

**참고**  
TagOption에 단일 값이 있는 경우는 프로비저닝 프로세스 중에 해당 값을 AWS 자동으로 적용합니다.

**포트폴리오를 공유할 때 TagOption을 공유하려면**

1. 왼쪽 탐색 메뉴에서 **포트폴리오**를 선택합니다.

1. **로컬 포트폴리오**에서 포트폴리오를 선택하고 엽니다.

1. 위 목록에서 **공유**를 선택한 다음 **공유** 버튼을 선택합니다.

1. 다른 AWS 계정 또는 조직과 공유하도록 선택합니다.

1. 12자리 계정 ID 번호를 입력하고 **활성화**를 선택한 다음 **공유**를 선택합니다.

   공유한 계정이 **공유 대상 계정** 섹션에 표시됩니다. 이는 TagOption가 활성화되었는지 여부를 나타냅니다.

TagOption를 포함하도록 포트폴리오 공유를 업데이트할 수도 있습니다. 이제 포트폴리오와 제품에 속하는 모든 TagOption가 이 계정에서 공유됩니다.

**TagOption를 포함하도록 포트폴리오 공유를 업데이트하려면**

1. 왼쪽 탐색 메뉴에서 **포트폴리오**를 선택합니다.

1. **로컬 포트폴리오**에서 포트폴리오를 선택하고 엽니다.

1. 위 목록에서 **공유**를 선택합니다.

1. **공유 대상 계정**에서 계정 ID를 선택한 다음 **작업**을 선택합니다.

1. **공유 취소 업데이트** 또는 **공유 취소**를 선택합니다.

   **공유 취소 업데이트**를 선택한 경우 **활성화**를 선택하여 TagOption을 시작합니다. 공유한 계정이 **공유 대상 계정** 섹션에 표시됩니다.

   **공유 취소**를 선택한 경우 계정을 더 이상 공유하지 않을 것인지 확인하십시오.

## 포트폴리오를 공유할 때 주체 이름 공유
<a name="principal-name-share"></a>

관리자는 주체 이름이 포함된 포트폴리오 공유를 생성할 수 있습니다. 주체 이름은 관리자가 포트폴리오에서 지정한 다음 포트폴리오와 공유할 수 있는 그룹, 역할 및 사용자의 이름입니다. 포트폴리오를 공유할 때는 해당 보안 주체 이름이 이미 존재하는지 AWS Service Catalog 확인합니다. 존재하는 경우 일치하는 IAM 보안 주체를 공유 포트폴리오와 AWS Service Catalog 자동으로 연결하여 사용자에게 액세스 권한을 부여합니다.

**참고**  
보안 주체를 포트폴리오와 연결하면 해당 포트폴리오가 다른 계정과 공유될 때 잠재적인 권한 에스컬레이션 경로가 생길 수 있습니다. AWS Service Catalog 관리자가 *아니지만* 여전히 보안 주체(사용자/역할)를 생성할 수 있는 수신자 계정의 사용자의 경우 해당 사용자는 포트폴리오의 보안 주체 이름 연결과 일치하는 IAM 보안 주체를 생성할 수 있습니다. 이 사용자는 어떤 보안 주체 이름이 연결되는 AWS Service Catalog지 모를 수 있지만 사용자를 추측할 수 있습니다. 이 잠재적 에스컬레이션 경로가 우려되는 경우는를 `PrincipalType`로 사용할 것을 AWS Service Catalog 권장합니다`IAM`. 이 구성에서는 `PrincipalARN`이 연결되기 전에 수신자 계정에 이미 존재해야 합니다.

기본 계정에서 보안 주체 이름을 추가하거나 제거하면가 수신자 계정에 이러한 변경 사항을 AWS Service Catalog 자동으로 적용합니다. 그러면 수신자 계정의 사용자가 역할에 따라 작업을 수행할 수 있습니다.
+ **최종 사용자**는 포트폴리오 제품을 프로비저닝, 업데이트 및 종료할 수 있습니다.
+ **관리자**는 가져온 포트폴리오에 추가 IAM 보안 주체를 연결하여 해당 계정에 특정한 최종 사용자에게 액세스 권한을 부여할 수 있습니다.

**참고**  
보안 주체 이름 공유는 에서만 사용할 수 있습니다 AWS Organizations.

**포트폴리오를 공유할 때 주체 이름을 공유하려면**

1. 왼쪽 탐색 메뉴에서 **포트폴리오**를 선택합니다.

1. **로컬 포트폴리오**에서 공유하려는 포트폴리오를 선택합니다.

1. **작업** 메뉴에서 **공유**를 선택합니다.

1.  AWS Organizations에서 조직을 선택합니다.

1. 전체 **조직 루트**, **조직 단위(OU)** 또는 **조직 멤버**를 선택합니다.

1. **공유** 설정에서 **주체 공유** 옵션을 활성화합니다.

주체 이름 공유를 포함하도록 포트폴리오 공유를 업데이트할 수도 있습니다. 이렇게 하면 해당 포트폴리오에 속하는 모든 주체 이름이 수신자 계정과 공유됩니다.

**주체 이름을 활성화 또는 비활성화하도록 포트폴리오 공유를 업데이트하려면**

1. 왼쪽 탐색 메뉴에서 **포트폴리오**를 선택합니다.

1. **로컬 포트폴리오**에서 업데이트하려는 포트폴리오를 선택합니다.

1. **공유** 탭을 선택합니다.

1. 업데이트하려는 공유를 선택한 다음 **공유**를 선택합니다.

1. **공유 업데이트를** 선택한 다음 **활성화**를 선택하여 보안 주체 공유를 시작합니다. AWS Service Catalog 그런 다음 수신자 계정에서 보안 주체 이름을 공유합니다.

수신자 계정과의 주체 이름 공유를 중단하려면 주체 공유를 **비활성화합니다.**

### 사용자 이름 공유 시 와일드카드 사용
<a name="wildcards-principal-names"></a>

AWS Service Catalog 는 '\$1' 또는 '?'와 같은 와일드카드를 사용하여 IAM 보안 주체(사용자, 그룹 또는 역할) 이름에 대한 포트폴리오 액세스 권한 부여를 지원합니다. 와일드카드 패턴을 사용하면 한 번에 여러 IAM 사용자 이름을 포함할 수 있습니다. ARN 경로와 주체 이름에는 와일드카드 문자를 무제한으로 사용할 수 있습니다.

**허용되는** 와일드카드 ARN의 예:
+ **arn:aws:iam:::role/ResourceName\$1\$1**
+ **arn:aws:iam:::role/\$1/ResourceName\$1?**

**허용되지 않는** 와일드카드 ARN의 예:
+ **arn:aws:iam:::\$1/ResourceName**

IAM 주체 ARN 형식(**arn:partition:iam:::resource-type/resource-path/resource-name**)에서 유효한 값에는 **user/**, **group/**, 또는 **role/**이 포함됩니다. ‘?’ 및 ‘\$1’는 resource-id 세그먼트의 리소스 유형 이후에만 허용됩니다. resource-id 내 어디에나 특수 문자를 사용할 수 있습니다.

‘\$1’ 문자는 ‘/’ 문자와도 일치하므로 resource-id *내에* 경로를 구성할 수 있습니다. 예제:

**arn:aws:iam:::role/**\$1**/ResourceName\$1?**는 **arn:aws:iam:::role/pathA/pathB/ResourceName\$11**와 **arn:aws:iam:::role/pathA/ResourceName\$11** 둘 다와 일치합니다.

# 포트폴리오 공유 및 가져오기
<a name="catalogs_portfolios_sharing"></a>

다른 조직 또는 조직의 다른에 속한 사용자 AWS 계정와 같이에 속하지 않은 사용자가 AWS Service Catalog 제품을 사용할 AWS 계정 수 있도록 하려면 포트폴리오를 해당 사용자와 공유합니다. 계정 간 공유, 조직 공유, 스택 세트를 사용한 카탈로그 배포 등 여러 가지 방법으로 이 작업을 수행할 수 있습니다.

 제품 및 포트폴리오를 다른 계정에 공유하기 전에 카탈로그의 참조를 공유할지 아니면 카탈로그의 사본을 각 수신자 계정에 배포할지 결정해야 합니다. 사본을 배포하는 경우 수신자 계정에 전파할 업데이트가 있으면 다시 배포해야 합니다.

스택 세트를 사용하여 동시에 여러 계정에 카탈로그를 배포할 수 있습니다. 참조(가져온 포트폴리오 버전이 원본과 동기화된 상태로 유지됨)를 공유하려는 경우 계정 간 공유를 사용하거나 AWS Organizations를 사용하여 공유할 수 있습니다.

스택 세트를 사용하여 카탈로그 사본을 배포하려면 [회사 표준 AWS Service Catalog 제품의 다중 리전, 다중 계정 카탈로그를 설정하는 방법을](https://aws.amazon.com/blogs/mt/how-to-set-up-a-multi-region-multi-account-catalog-of-company-standard-aws-service-catalog-products/) 참조하세요.

account-to-account 공유를 사용하여 포트폴리오를 공유하거나 다른 AWS 계정의 관리자가 포트폴리오를 자신의 계정으로 가져와 해당 계정의 최종 사용자에게 제품을 배포할 수 있도록 AWS Organizations허용합니다 AWS Service Catalog .

이 *가져온 포트폴리오*는 독립 사본이 아닙니다. 가져온 포트폴리오의 제품과 제약 조건은 공유한 원래 포트폴리오인 *공유 포트폴리오*에 적용하는 변경 사항과 동기화됩니다. 포트폴리오를 공유하는 관리자인 *수신자 관리자는* 제품 또는 제약 조건을 변경할 수 없지만 최종 사용자에 대한 액세스 권한을 추가 AWS Identity and Access Management (IAM)할 수 있습니다. 자세한 내용은 [사용자에게 액세스 권한 부여](catalogs_portfolios_users.md) 단원을 참조하십시오.

수신자 관리자는 다음과 같은 방법으로 AWS 계정에 속한 최종 사용자에게 제품을 배포할 수 있습니다.
+ 가져온 포트폴리오에 IAM 사용자, 그룹 및 역할을 추가합니다.
+ 가져온 포트폴리오의 제품을 **로컬 포트폴리오**에 추가하면 수신자 관리자가 생성하고 AWS 계정에 속한 별도의 포트폴리오가 생성됩니다. 그런 다음 수신 관리자는 로컬 포트폴리오에 IAM 사용자, 그룹 및 역할을 추가합니다. 공유 포트폴리오의 제품에 적용한 제약 조건은 로컬 포트폴리오에도 있습니다. 수신 관리자는 로컬 포트폴리오에 제약 조건을 추가할 수 있지만, 가져온 제약 조건은 제거할 수 없습니다.

공유 포트폴리오에 제품 또는 제약 조건을 추가하거나 여기에서 제품 또는 제약 조건을 제거하면 해당 포트폴리오의 가져온 모든 인스턴스에 해당 변경 내용이 전파됩니다. 예를 들어 공유 포트폴리오에서 제품을 제거하면 가져온 포트폴리오에서도 해당 제품이 제거됩니다. 가져온 제품이 추가된 모든 로컬 포트폴리오에서도 제거됩니다. 제품을 제거하기 전에 최종 사용자가 제품을 시작한 경우, 최종 사용자의 프로비저닝된 제품이 계속 실행되지만 추후 시작 시 해당 제품을 사용할 수 없게 됩니다.

공유 포트폴리오의 제품에 시작 제약 조건을 적용하면 해당 제품의 가져온 모든 인스턴스에 전파됩니다. 수신 관리자가 이 시작 제약 조건을 재정의하려면 로컬 포트폴리오에 해당 제품을 추가한 후 여기에 다른 시작 제약 조건을 적용해야 합니다. 적용된 시작 제약 조건은 해당 제품의 시작 역할을 설정합니다.

*시작 역할은* 최종 사용자가 제품을 시작할 때가 리소스(예: Amazon EC2 인스턴스 또는 Amazon RDS 데이터베이스)를 프로비저닝 AWS 하는 데 AWS Service Catalog 사용하는 IAM 역할입니다. 관리자는 특정 시작 역할 ARN 또는 로컬 역할 이름을 지정하도록 선택할 수 있습니다. 역할 ARN을 사용하는 경우 최종 사용자가 시작 역할을 소유한 계정이 아닌 다른 AWS 계정에 속해 있더라도 해당 역할이 사용됩니다. 로컬 역할 이름을 사용하는 경우 최종 사용자의 계정에서 해당 이름을 가진 IAM 역할이 사용됩니다.

시작 제약 조건 및 시작 역할에 대한 자세한 내용은 [AWS Service Catalog 시작 제약 조건](constraints-launch.md) 단원을 참조하십시오. 시작 역할을 소유한 AWS 계정은 AWS 리소스를 프로비저닝하며,이 계정에는 해당 리소스에 대한 사용 요금이 발생합니다. 자세한 내용은 [AWS Service Catalog 요금](https://aws.amazon.com/servicecatalog/pricing/)을 참조하세요.

이 동영상에서는의 계정 간에 포트폴리오를 공유하는 방법을 보여줍니다 AWS Service Catalog.

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/BVSohYOppjk/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/BVSohYOppjk)


**참고**  
가져왔거나 공유한 포트폴리오의 제품은 다시 공유할 수 없습니다.

**참고**  
포트폴리오 가져오기는 관리 계정과 종속 계정 간의 동일한 리전에서 이루어져야 합니다.

## 공유 포트폴리오와 가져온 포트폴리오 간의 관계
<a name="shared-imported-portfolios-relationship"></a>

다음 표에는 가져온 포트폴리오와 공유 포트폴리오 간의 관계와 포트폴리오를 가져오는 관리자가 해당 포트폴리오 및 그 안의 제품에 대해 할 수 있는 작업과 할 수 없는 작업이 요약되어 있습니다.


| 공유 포트폴리오의 요소 | 가져온 포트폴리오와의 관계 | 수신 관리자가 할 수 있는 작업 | 수신 관리자가 할 수 없는 작업 | 
| --- | --- | --- | --- | 
| 제품 및 제품 버전 |  상속됩니다. 포트폴리오 생성자가 공유 포트폴리오에 제품을 추가하거나 제거하면 가져온 포트폴리오에 해당 변경 내용이 전파됩니다.  |  로컬 포트폴리오에 가져온 제품 추가. 제품이 공유 포트폴리오와 동기화됨.  |  가져온 포트폴리오에 제품을 업로드 또는 추가하거나 가져온 포트폴리오에서 제품 제거  | 
| 시작 제약 조건 |  상속됩니다. 포트폴리오 생성자가 *공유 제품*에 시작 제약 조건을 추가하거나 제거하면 해당 제품의 가져온 모든 인스턴스에 해당 변경 내용이 전파됩니다. 수신 관리자가 *로컬* 포트폴리오에 가져온 제품을 추가할 경우, 해당 제품에 적용된 가져온 시작 제약 조건이 로컬 포트폴리오에도 있게 됩니다.  | 로컬 포트폴리오에서 관리자는 제품의 로컬 시작에 영향을 미치는 시작 제약을 적용할 수 있습니다. |  가져온 포트폴리오에 시작 제약 조건을 추가하거나 제거  | 
| 템플릿 제약 조건 |  상속됩니다. 포트폴리오 생성자가 공유 제품에 템플릿 제약 조건을 추가하거나 제거하면 해당 제품의 가져온 모든 인스턴스에 해당 변경 내용이 전파됩니다. 수신 관리자가 로컬 포트폴리오에 가져온 제품을 추가할 경우, 해당 제품에 적용된 가져온 시작 제약 조건이 로컬 포트폴리오에도 있게 됩니다.  |  로컬 포트폴리오에서 관리자는 가져온 제약 조건 외에도 적용되는 템플릿 제약 조건을 추가할 수 있음  |  가져온 템플릿 제약 조건 제거  | 
| 사용자, 그룹 및 역할 | 상속되지 않습니다. | 관리자의 AWS 계정에 있는 사용자, 그룹 및 역할 추가 | 해당 사항 없음. | 

# 제품 관리
<a name="catalogs_products"></a>

 템플릿을 메타데이터로 패키징하여 제품을 생성하고, 업데이트된 템플릿을 기반으로 새 버전을 생성하여 제품을 업데이트하고, 여러 제품을 함께 포트폴리오로 그룹화하여 사용자에게 배포합니다.

제품의 새 버전은 포트폴리오를 통해 제품에 액세스할 수 있는 모든 사용자에게 전파됩니다. 업데이트를 배포하는 경우 최종 사용자가 몇 번의 클릭만으로 기존의 프로비저닝된 제품을 업데이트할 수 있습니다.

**Topics**
+ [제품 페이지 보기](#productmgmt-menu)
+ [제품 생성](productmgmt-cloudresource.md)
+ [포트폴리오에 제품 추가](catalogs_portfolios_adding-products.md)
+ [제품 업데이트](productmgmt-update.md)
+ [GitHub, GitHub Enterprise 또는 Bitbucket의 템플릿 파일에 제품 동기화](git-synced-sc-products.md)
+ [제품 삭제](productmgmt-delete.md)
+ [버전 관리](managing-versions.md)

## 제품 페이지 보기
<a name="productmgmt-menu"></a>

 AWS Service Catalog 관리자 콘솔의 제품 **목록 페이지에서 제품을** 관리합니다.

****제품 목록** 페이지를 보려면**

1. Service Quotas 콘솔([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/))을 엽니다.

1. **제품 목록**을 선택합니다.

# 제품 생성
<a name="productmgmt-cloudresource"></a>

 AWS Service Catalog 관리자 콘솔의 제품 페이지에서 **제품을** 생성합니다.

**참고**  
Terraform 제품을 만들려면 Terraform 프로비저닝 엔진 및 시작 역할을 포함한 추가 구성이 필요합니다. 자세한 내용은 [Terraform 제품 시작하기](getstarted-Terraform.md) 섹션을 참조하십시오.

**새 AWS Service Catalog 제품을 생성하려면**

1. **제품 목록** 페이지로 이동합니다.

1. **제품 생성**을 선택한 다음 **제품 생성**을 선택합니다.

1. **제품 세부 정보** - 생성하려는 제품 유형을 선택할 수 있습니다. AWS Service Catalog Supports CloudFormation, Terraform Cloud 및 External(Terraform Community Edition 지원) 제품 유형을 선택합니다. 제품 세부 정보에는 목록 또는 세부 정보 페이지에서 제품을 검색하고 볼 때 나타나는 메타데이터도 포함됩니다. 다음을 입력합니다.
   + **제품 이름** - 제품 이름입니다.
   +  **제품 설명** - 제품 목록에 설명이 표시되어 올바른 제품을 선택하는 데 도움이 됩니다.
   + **소유자** - 이 제품을 게시하는 개인 또는 조직입니다. 소유자는 IT 조직 또는 관리자의 이름일 수 있습니다.
   + **공급업체**(선택 사항) - 애플리케이션 게시자의 이름입니다. 이 필드를 통해 제품 목록을 정렬하여 제품을 더 쉽게 찾을 수 있습니다.

1. **버전 세부 정보를** 통해 템플릿 파일을 추가하고 제품을 빌드할 수 있습니다. 다음을 입력합니다.
   +  **방법 선택** - 템플릿 파일을 추가하는 방법은 네 가지가 있습니다.
     + **로컬 템플릿 파일 사용** - 로컬 드라이브에서 CloudFormation 템플릿 또는 Terraform tar.gz 구성 파일을 업로드합니다.
     + **Amazon S3 URL 사용** - Amazon S3에 저장된 CloudFormation 템플릿 또는 Terraform tar.gz 구성 파일을 가리키는 URL을 지정합니다. Amazon S3 URL을 지정하는 경우에는 `https://`로 시작해야 합니다.
     + **외부 리포지토리 사용** - GitHub, GitHub Enterprise 또는 Bitbucket 코드 리포지토리를 지정합니다.를 AWS Service Catalog 사용하면 제품을 템플릿 파일에 동기화할 수 있습니다. Terraform 제품의 경우 템플릿 파일 형식은 Tar에 보관되고 Gzip으로 압축된 단일 파일이어야 합니다.
     + **기존 CloudFormation 스택 사용** - 기존 CloudFormation 스택의 ARN을 입력합니다. 이 방법은 Terraform Cloud 또는 외부 제품을 지원하지 않습니다.
   +  **버전 이름**(선택 사항) - 제품 버전의 이름입니다(예: ‘v1’, ‘v2beta’). 공백은 사용할 수 없습니다.
   +  **설명**(선택 사항) - 이 버전과 이전 버전의 차이점 등이 포함된 제품 버전에 대한 설명입니다.
   +  **지침** - **제품 세부 정보** 페이지의 버전 탭에서 관리됩니다. 제품 생성 워크플로 중 제품 버전을 만들면 해당 버전에 대한 지침이 기본값으로 설정됩니다. 지침에 대한 자세한 내용은 [버전 관리](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/managing-versions.html) 섹션을 참조하십시오.

1. **지원 세부 정보**는 회사 내 조직을 식별하고 지원을 위한 연락 창구를 제공합니다. 다음을 입력합니다.
   + **이메일 연락처**(선택 사항) - 제품 관련 문제를 보고하기 위한 이메일 주소입니다.
   + **지원 링크**(선택 사항) - 사용자가 지원 정보 또는 파일 티켓을 찾을 수 있는 사이트 URL입니다. URL은 `http://` 또는 `https://`로 시작해야 합니다. 관리자는 지원 정보의 정확성과 액세스를 관리할 책임이 있습니다.
   + **지원 설명**(선택 사항) - **이메일 연락처** 및 **지원 링크**를 사용하는 방법에 대한 설명입니다.

1.  **태그 관리** (선택 사항) - 태그를 사용하여 리소스를 분류하는 것 외에도 태그를 사용하여 이 리소스를 만들 권한을 인증할 수도 있습니다.

1. **제품 생성** - 양식을 작성했으면 **제품 생성**을 선택합니다. 몇 초 후 **제품 목록** 페이지에 제품이 표시됩니다. 제품을 보기 위해 브라우저를 새로 고쳐야 할 수도 있습니다.

CodePipeline을 사용하여 제품 템플릿을에 배포하고 소스 리포지토리에서 변경한 내용을 전달하도록 파이프라인을 생성 AWS Service Catalog 및 구성할 수도 있습니다. 자세한 내용은[ 자습서: 배포 대상 파이프라인 생성을 참조하세요 AWS Service Catalog](https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-S3-servicecatalog.html).

 CloudFormation 또는 Terraform 템플릿에서 파라미터 속성을 정의하고 프로비저닝 중에 해당 규칙을 적용할 수 있습니다. 이러한 속성은 최소 및 최대 길이, 최소 및 최대 값, 허용되는 값 및 값에 대한 정규식을 정의할 수 있습니다. 제공된 값이 파라미터 속성을 준수하지 않는 경우는 프로비저닝 중에 경고를 AWS Service Catalog 발행합니다. 파라미터 속성에 대한 자세한 내용은 *CloudFormation 사용 설명서*의 [파라미터](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html) 섹션을 참조하십시오.

## 문제 해결
<a name="productmgmt-cloudresource-troubleshooting"></a>

 Amazon S3 버킷에서 객체를 검색할 수 있는 권한이 있어야 합니다. 그렇지 않으면 제품을 시작하거나 업데이트할 때 오류가 발생할 수 있습니다.

```
Error: failed to process product version s3 access denied exception
```

 이 메시지가 표시되면 다음 버킷에서 객체를 검색할 수 있는 권한이 있는지 확인하십시오.
+  프로비저닝 아티팩트 템플릿이 저장되는 버킷입니다.
+  "***cf-templates-\$1***"로 시작하고가 프로비저닝 아티팩트 템플릿을 AWS Service Catalog 저장하는 버킷입니다.
+  "***sc-\$1***"로 시작하고가 메타데이터를 AWS Service Catalog 저장하는 내부 버킷입니다. 계정에서는 이 버킷을 볼 수 없습니다.

 다음 예제 정책은 앞서 언급한 버킷에서 객체를 검색하는 데 필요한 최소 권한을 보여줍니다.

```
{
          "Sid": "VisualEditor1",
          "Effect": "Allow",
          "Action": "s3:GetObject*",
          "Resource": [
              "arn:aws:s3:::YOUR_TEMPLATE_BUCKET",
              "arn:aws:s3:::YOUR_TEMPLATE_BUCKET/*",
              "arn:aws:s3:::cf-templates-*",
              "arn:aws:s3:::cf-templates-*/*",
              "arn:aws:s3:::sc-*",
              "arn:aws:s3:::sc-*/*"
          ]
      }
```

# 포트폴리오에 제품 추가
<a name="catalogs_portfolios_adding-products"></a>

 포트폴리오 수에 제한 없이 제품을 추가할 수 있습니다. 제품이 업데이트되면 공유 포트폴리오를 포함해 해당 제품이 포함된 모든 포트폴리오가 새 버전을 자동으로 수신합니다.

**포트폴리오에 카탈로그의 제품을 추가하려면**

1.  **제품 목록** 페이지로 이동합니다.

1.  제품을 선택한 다음 **작업**을 선택합니다. 드롭다운 메뉴에서 **포트폴리오에 제품 추가**를 선택합니다. **포트폴리오에 *name-of-product* 추가** 페이지로 이동합니다.

1.  포트폴리오를 선택한 다음 **포트폴리오에 제품 추가**를 선택합니다.

Terraform 제품을 포트폴리오에 추가할 때는 제품에 시작 제약이 필요합니다. 계정에서 IAM 역할을 선택하거나, IAM 역할 ARN을 입력하거나, 역할 이름을 입력해야 합니다. 역할 이름을 지정하면 계정이 시작 제약 조건을 사용할 때 계정에서 해당 이름을 가진 IAM 역할이 사용됩니다. 그러면 계정과 무관하게 시작 역할 제약 조건을 사용할 수 있으므로 공유 계정당 리소스를 더 적게 만들 수 있습니다. 세부 정보 및 지침은 [6단계: Terraform 제품에 시작 제약 추가](getstarted-launchconstraint-Terraform.md) 섹션을 참조하십시오.

 포트폴리오에는 CloudFormation 및 Terraform 제품 유형이 혼합된 수많은 제품이 포함될 수 있습니다.

# 제품 업데이트
<a name="productmgmt-update"></a>

 제품의 템플릿을 업데이트해야 하는 경우 제품의 새 버전을 만듭니다. 새 제품 버전은 해당 제품이 들어 있는 포트폴리오에 액세스할 수 있는 모든 사용자에게 자동으로 제공됩니다.

**참고**  
기존 제품을 업데이트할 때는 제품 유형(CloudFormation 또는 Teraform)을 변경할 수 없습니다. 예를 들어 CloudFormation 제품을 업데이트하는 경우 기존 CloudFormation 템플릿을 Terraform tar.gz 구성 파일로 바꿀 수 없습니다. 기존 CloudFormation 템플릿 파일을 새 CloudFormation 템플릿 파일로 업데이트해야 합니다.

 이전 제품 버전의 프로비저닝된 제품을 현재 실행하는 최종 사용자는 프로비저닝된 제품을 새 버전으로 업데이트할 수 있습니다. 새 버전의 제품을 사용할 수 있게 되면 사용자는 **프로비저닝된 제품 목록** 또는 **프로비저닝된 제품 세부 정보** 페이지에서 **프로비저닝된 제품 업데이트** 명령을 사용할 수 있습니다.

제품의 새 버전을 생성하기 전에 CloudFormation 또는 Terraform 엔진에서 제품 업데이트를 테스트하여 제대로 작동하는지 확인하는 것이 AWS Service Catalog 좋습니다.

**새 제품 버전을 만들려면**

1.  **제품 목록** 페이지로 이동합니다.

1.  업데이트하려는 제품을 선택합니다. *제품 세부 정보* 페이지로 이동합니다.

1.  *제품 세부 정보* 페이지에서 **버전 ** 탭을 확장한 다음 **새 버전 생성**을 선택합니다.

1.  **버전 세부 정보**에서 다음을 수행하십시오.
   + **템플릿 선택** - 템플릿 파일을 추가하는 방법은 네 가지가 있습니다.

     *로컬 템플릿 파일 사용* - 로컬 드라이브에서 CloudFormation 템플릿 또는 Terraform tar.gz 구성 파일을 업로드합니다.

     *Amazon S3 URL 사용* - Amazon S3에 저장된 CloudFormation 템플릿 또는 Terraform tar.gz 구성 파일을 가리키는 URL을 지정합니다. Amazon S3 URL을 지정하는 경우에는 https://로 시작해야 합니다.

     *외부 리포지토리 사용* - GitHub, GitHub Enterprise 또는 Bitbucket 코드 리포지토리를 지정합니다.를 AWS Service Catalog 사용하면 제품을 템플릿 파일에 동기화할 수 있습니다. Terraform 제품의 경우 템플릿 파일 형식은 Tar에 보관되고 Gzip으로 압축된 단일 파일이어야 합니다.

     *기존 CloudFormation 스택 사용* - 기존 CloudFormation 스택의 ARN을 입력합니다. 이 방법은 Terraform Cloud 또는 외부 제품을 지원하지 않습니다.
   + **버전 제목** - 제품 버전의 이름입니다(예: ‘v1’, ‘v2beta’). 공백은 사용할 수 없습니다.
   + **설명**(선택 사항) - 이 버전과 이전 버전의 차이점 등이 포함된 제품 버전에 대한 설명입니다.

1. **제품 버전 생성**을 선택합니다.

 CodePipeline을 사용하여 제품 템플릿을 배포할 파이프라인을 생성 및 구성 AWS Service Catalog하고 소스 리포지토리에 변경 사항을 전달할 수도 있습니다. 자세한 내용은 [자습서: 배포 대상 파이프라인 생성을 참조하세요 AWS Service Catalog](https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-S3-servicecatalog.html).

# GitHub, GitHub Enterprise 또는 Bitbucket의 템플릿 파일에 제품 동기화
<a name="git-synced-sc-products"></a>

AWS Service Catalog 를 사용하면 제품을 외부 리포지토리 공급자를 통해 관리되는 템플릿 파일에 동기화할 수 있습니다.는 이러한 유형의 템플릿 연결이 있는 제품을 *Git 동기화*된 제품으로 AWS Service Catalog 지칭합니다. 리포지토리의 옵션에는 GitHub, GitHub Enterprise 또는 Bitbucket 등이 있습니다. 외부 리포지토리 계정으로에 AWS 계정 권한을 부여한 후 새 AWS Service Catalog 제품을 생성하거나 기존 제품을 업데이트하여 리포지토리의 템플릿 파일에 동기화할 수 있습니다. 템플릿 파일을 변경하고 리포지토리에서 커밋하면(예: git-push 사용)는 변경 사항을 AWS Service Catalog 자동으로 감지하고 새 제품 버전(아티팩트)을 생성합니다.

**Topics**
+ [제품을 외부 템플릿 파일에 동기화하는 데 필요한 권한](#required-perms-synced-repo)
+ [계정 연결 생성](#create-synced-product)
+ [Git 동기화 제품 연결 보기](#view-repo-sync)
+ [Git 동기화 제품 연결 업데이트](#update-repo-sync)
+ [Git 동기화 제품 연결 삭제](#delete-repo-sync)
+ [GitHub, GitHub Enterprise 또는 Bitbucket 템플릿 파일에 Terraform 제품 동기화](#git-synced-Terraform)
+ [AWS 리전 Git 동기화 제품에 대한 지원](git-sync-supported-regions.md)

## 제품을 외부 템플릿 파일에 동기화하는 데 필요한 권한
<a name="required-perms-synced-repo"></a>

다음 AWS Identity and Access Management (IAM) 정책을 템플릿으로 사용하여 AWS Service Catalog 관리자가 제품을 외부 리포지토리의 템플릿 파일에 동기화할 수 있습니다. 이 정책에는 CodeConnections 및의 필수 권한이 모두 포함되어 있습니다 AWS Service Catalog. 에서는 아래 템플릿 정책을 복사하고 리포지토리 동기화 제품을 활성화할 때 [관리형 정책](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/security-iam-awsmanpol)도 사용할 AWS Service Catalog `AWSServiceCatalogAdminFullAccess` 것을 AWS Service Catalog 권장합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "CodeStarAccess",
            "Effect": "Allow",
            "Action": [
            "codestar-connections:UseConnection",
            "codestar-connections:PassConnection",
            "codestar-connections:CreateConnection",
            "codestar-connections:DeleteConnection",
            "codestar-connections:GetConnection",
            "codestar-connections:ListConnections",
            "codestar-connections:ListInstallationTargets",
            "codestar-connections:GetInstallationUrl",
            "codestar-connections:StartOAuthHandshake",
            "codestar-connections:UpdateConnectionInstallation",
            "codestar-connections:GetIndividualAccessToken"
            ],
            "Resource": "arn:aws:codestar-connections:*:*:connection/*"
        },
        {
        "Sid": "CreateSLR",
        "Effect": "Allow",
        "Action": "iam:CreateServiceLinkedRole",
        "Resource": "arn:aws:iam::*:role/aws-service-role/sync.servicecatalog.amazonaws.com/AWSServiceRoleForServiceCatalogArtifactSync",
        "Condition": {
        "StringLike": {
        "iam:AWSServiceName": "sync.servicecatalog.amazonaws.com"
                }
            }
        }
    ]
}
```

------

## 계정 연결 생성
<a name="create-synced-product"></a>

템플릿 파일을 AWS Service Catalog 제품에 동기화하기 전에 일회성 account-to-account 연결을 생성하고 권한을 부여해야 합니다. 이 연결을 사용하여 원하는 템플릿 파일이 들어 있는 리포지토리의 세부 정보를 지정할 수 있습니다. AWS Service Catalog 콘솔, CodeConnections 콘솔, AWS Command Line Interface (CLI) 또는 CodeConnections APIs.

연결을 설정한 후 AWS Service Catalog 콘솔, AWS Service Catalog API 또는 CLI를 사용하여 동기화된 AWS Service Catalog 제품을 생성할 수 있습니다. AWS Service Catalog 관리자는 리포지토리 및 브랜치의 템플릿 파일을 기반으로 새 제품을 생성하거나 기존 AWS Service Catalog 제품을 업데이트할 수 있습니다. 리포지토리에서 변경 사항이 커밋되면는 변경 사항을 AWS Service Catalog 자동으로 감지하고 새 제품 버전을 생성합니다. 이전 제품 버전은 규정된 버전 제한까지 유지되며 **사용되지 않음** 상태가 할당됩니다.

또한는 연결이 생성된 후 서비스 연결 역할(SLR)을 AWS Service Catalog 자동으로 생성합니다. 이러한 SLR을 통해 AWS Service Catalog 는 리포지토리에 커밋된 모든 템플릿 파일 변경 내용을 감지할 수 있습니다. 또한 SLR을 사용하면 AWS Service Catalog 가 동기화된 제품에 대한 새 제품 버전을 자동으로 생성할 수 있습니다. SLR 권한 및 기능에 대한 자세한 내용은 [AWS Service Catalog의 서비스 연결 역할](#required-perms-synced-repo) 섹션을 참조하십시오.

**새 Git 동기화 제품을 만들려면**

1. 왼쪽 탐색 창에서 **제품 목록**을 선택한 다음, **제품 생성**을 선택합니다.

1. **제품 세부 정보**를 입력합니다.

1. 버전 세부 정보에서 **공급자를 사용하여 코드 리포지토리 지정을 AWS CodeStar **선택한 다음 **새 AWS CodeStar 연결 생성** 링크를 선택합니다.

1. 연결을 만든 후 연결 목록을 새로 고친 다음, 새 연결을 선택합니다. **리포지토리**, **브랜치**, **템플릿 파일 경로**를 비롯한 리포지토리 세부 정보를 지정합니다.

   Terraform 구성 파일 사용에 대한 자세한 내용은 [GitHub, GitHub Enterprise 또는 Bitbucket 템플릿 파일에 Terraform 제품 동기화](#git-synced-Terraform)을 참조하십시오.

   1. (새 AWS Service Catalog 제품 리소스를 생성할 때 선택 사항) **지원 세부 정보** 섹션에서 제품에 대한 메타데이터를 추가합니다.

   1. (새 AWS Service Catalog 제품 리소스를 생성할 때 선택 사항) **태그** 섹션에서 **새 태그 추가**를 선택하고 **키** 및 **값** 페어를 입력합니다.

1. **새 프로젝트 생성**을 선택합니다.

**Git 동기화 제품을 여러 개 만들려면**

1.  AWS Service Catalog 콘솔 왼쪽 탐색 패널에서 **제품 목록을** 선택한 다음 **여러 git 관리형 제품 생성을** 선택합니다.

1. **일반 제품 세부 정보**를 입력합니다.

1. 외부 리포지토리 세부 정보에서 **AWS CodeStar 연결**을 선택한 다음 **리포지토리**와 **브랜치**를 지정합니다.

1. 제품 추가 창에서 **템플릿 파일 경로**와 **제품 이름**을 입력합니다. **새 항목 추가**를 선택하고 원하는 대로 제품을 계속 추가합니다.

1. 원하는 제품을 모두 추가한 후 **제품 대량 생성**을 선택합니다.

**기존 AWS Service Catalog 제품을 외부 리포지토리에 연결하려면**

1.  AWS Service Catalog 콘솔 왼쪽 탐색 패널에서 **제품 목록을** 선택한 다음 **제품을 외부 리포지토리에 연결을** 선택합니다.

1. 제품 선택 페이지에서 외부 리포지토리에 연결할 제품을 선택하고 **다음**을 선택합니다.

1. 소스 세부 정보 지정 페이지에서 기존 AWS CodeStar 연결을 선택한 다음 **리포지토리**, **브랜치** 및 **템플릿 파일 경로를** 지정합니다.

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

1. 검토 및 제출 페이지에서 연결 세부 정보를 확인한 다음 **제품을 외부 리포지토리에 연결**을 선택합니다.

## Git 동기화 제품 연결 보기
<a name="view-repo-sync"></a>

 AWS Service Catalog 콘솔, API 또는 AWS CLI 를 사용하여 리포지토리 연결 세부 정보를 볼 수 있습니다. 템플릿 파일에 연결된 AWS Service Catalog 제품의 경우 리포지토리 연결 및 마지막 **동기화 상태에서** 템플릿이 제품과 마지막으로 동기화된 시간에 대한 정보를 검색할 수 있습니다.

**참고**  
제품 수준에서 리포지토리 정보와 **마지막 동기화 상태**를 볼 수 있습니다. 리포지토리 세부 정보를 보려면 CodeConnections APIs에 IAM 권한이 있어야 합니다. 이러한 IAM [권한에 필요한 정책에 대한 자세한 내용은 AWS Service Catalog 제품을 템플릿 파일에 동기화하는 데](#required-perms-synced-repo) 필요한 권한을 참조하세요.

**를 사용하여 연결 및 리포지토리 세부 정보를 보려면 AWS Management Console**

1. 왼쪽 탐색 창에서 **제품 목록**을 선택합니다.

1. 목록에서 제품을 선택합니다.

1. **제품** 페이지에서 **제품 소스 세부 정보** 섹션으로 이동합니다.

1. 제품 버전의 소스 수정 ID를 보려면 **마지막으로 생성된 버전** 링크를 선택합니다. **버전 세부 정보** 섹션에는 소스 수정 ID가 표시됩니다.

**를 사용하여 연결 및 리포지토리 세부 정보를 보려면 AWS CLI**

에서 다음 명령을 AWS CLI실행합니다.

`$ aws servicecatalog describe-product-as-admin`

`$ aws servicecatalog describe-provisioning-artifact`

`$ aws servicecatalog search-product-as-admin`

`$ aws servicecatalog list-provisioning-artifacts`

## Git 동기화 제품 연결 업데이트
<a name="update-repo-sync"></a>

 AWS Service Catalog 콘솔, AWS Service Catalog API 또는를 사용하여 기존 계정 연결 및 Git 동기화 제품을 업데이트할 수 있습니다 AWS CLI.

기존 AWS Service Catalog 제품을 템플릿 파일에 연결하는 방법을 알아보려면 [ 새 Git 동기화 제품 연결 생성을](#create-synced-product) 참조하세요.

**기존 제품을 Git 동기화 제품으로 업데이트하려면**

1. 왼쪽 탐색 패널에서 **제품 목록**을 선택하고 다음 옵션 중 하나를 선택합니다.
   + **단일 제품**을 업데이트하려면 제품을 선택하고 **제품 소스 세부 정보** 섹션으로 이동한 다음 **세부 정보 편집**을 선택합니다.
   + **여러 제품**을 업데이트하려면 **외부 리포지토리에 제품 연결**을 선택하고 제품을 10개까지 선택한 후 **다음**을 선택합니다.

1. **제품 소스 세부 정보** 섹션에서 다음 업데이트를 수행합니다.
   + 연결을 지정합니다.
   + 리포지토리를 지정합니다.
   + 브랜치를 지정합니다.
   + 템플릿 파일의 이름을 지정합니다.

1. **변경 사항 저장**을 선택합니다.

**참고**  
외부 리포지토리에 아직 연결되지 않은 제품의 경우, 제품을 선택한 후 제품 정보 페이지 상단의 경고에 표시되는 **외부 리포지토리에 연결** 옵션을 사용할 수 있습니다.

 AWS Service Catalog 콘솔 또는를 사용하여 AWS CLI 
+ 기존 AWS Service Catalog 제품을 외부 리포지토리의 템플릿 파일에 연결
+ 제품 이름, 설명 및 태그를 포함한 제품 메타데이터를 업데이트합니다.
+ 이전에 연결한 AWS Service Catalog 제품에 대한 연결을 재구성합니다(다른 리포지토리 소스를 사용하도록 동기화 업데이트).

**AWS Service Catalog 콘솔을 사용하여 연결 및 리포지토리 세부 정보를 업데이트하려면**

1.  AWS Service Catalog 콘솔 왼쪽 탐색 패널에서 **제품 목록을** 선택한 다음 외부 리포지토리에 현재 연결된 제품을 선택합니다.

1. **제품 소스 세부 정보** 섹션에서 **제품 소스 편집**을 선택합니다.

1. **제품 소스 세부 정보** 섹션에서 원하는 새 리포지토리를 지정합니다.

1. **변경 사항 저장**을 선택합니다.

**를 사용하여 연결 및 리포지토리 세부 정보를 업데이트하려면 AWS CLI**

에서 `$ aws servicecatalog update-product` 및 `$ aws servicecatalog update-provisioning-artifact` 명령을 AWS CLI 실행합니다.

## Git 동기화 제품 연결 삭제
<a name="delete-repo-sync"></a>

 AWS Service Catalog 콘솔, CodeConnections API 또는를 사용하여 AWS Service Catalog 제품과 템플릿 파일 간의 연결을 삭제할 수 있습니다 AWS CLI. 템플릿 파일에서 제품의 연결을 해제하면 동기화된 AWS Service Catalog 제품이 정기적으로 관리되는 제품으로 전환됩니다. 제품 연결을 끊은 후 템플릿 파일을 변경하고 이전에 연결된 리포지토리에서 커밋하면 변경 내용이 반영되지 *않습니다*. AWS Service Catalog 제품을 외부 리포지토리의 템플릿 파일에 다시 연결하려면 [연결 및 동기화된 AWS Service Catalog 제품 업데이트를 참조하세요]().

**AWS Service Catalog 콘솔을 사용하여 Git 동기화 제품의 연결을 해제하려면**

1. 의 왼쪽 탐색 패널에서 **제품 목록을** AWS Management Console선택합니다.

1. 목록에서 제품을 선택합니다.

1. **제품** 페이지에서 **제품 소스 세부 정보** 섹션으로 이동합니다.

1. **연결 해제**를 선택합니다.

1. 작업을 확인한 다음 **연결 해제**를 선택합니다.

**를 사용하여 Git 동기화 제품의 연결을 해제하려면 AWS CLI**

에서 `$ aws servicecatalog update-product` 명령을 AWS CLI실행합니다. `ConnectionParameters` 입력에서 지정된 연결을 제거합니다.

**CodeConnections API 또는를 사용하여 연결을 삭제하려면 AWS CLI**

CodeConnections API 또는에서 `$ aws codestar-connections delete-connection` 명령을 AWS CLI실행합니다.

## GitHub, GitHub Enterprise 또는 Bitbucket 템플릿 파일에 Terraform 제품 동기화
<a name="git-synced-Terraform"></a>

Terraform 구성 파일을 사용하여 Git 동기화 제품을 만들 때 파일 경로는 tar.gz 형식만 허용합니다. Terraform 폴더 형식은 파일 경로에 사용할 수 없습니다.

# AWS 리전 Git 동기화 제품에 대한 지원
<a name="git-sync-supported-regions"></a>

AWS Service Catalog 는 아래 표에 표시된 AWS 리전 대로에서 Git 동기화 produtcs를 지원합니다.


****  

| AWS 리전 이름 | AWS 리전 자격 증명 | Git 동기화 제품에 대한 지원 | 
| --- | --- | --- | 
| 미국 동부(버지니아 북부) | us-east-1 | 예 | 
| 미국 동부(오하이오) | us-east-2 | 예 | 
| 미국 서부(캘리포니아 북부) | us-west-1 | 예 | 
| 미국 서부(오리건) | us-west-2 | 예 | 
| 아프리카(케이프타운) | af-south-1 | 아니요 | 
| Asia Pacific (Hong Kong) | ap-east-1 | 아니요 | 
| 아시아 태평양(자카르타) | ap-southeast-3 | 아니요 | 
| 아시아 태평양(뭄바이) | ap-south-1 | 예 | 
| 아시아 태평양(오사카) | ap-northeast-3 | 아니요 | 
| 아시아 태평양(서울) | ap-northeast-2 | 예 | 
| 아시아 태평양(싱가포르) | ap-southeast-1 | 예 | 
| 아시아 태평양(시드니) | ap-southeast-2 | 예 | 
| 아시아 태평양(도쿄) | ap-northeast-1 | 예 | 
| 캐나다(중부) | ca-central-1 | 예 | 
| 유럽(프랑크푸르트) | eu-central-1 | 예 | 
| 유럽(아일랜드) | eu-west-1 | 예 | 
| 유럽(런던) | eu-west-2 | 예 | 
| 유럽(밀라노) | eu-south-1 | 아니요 | 
| 유럽(파리) | eu-west-3 | 예 | 
| 유럽(스톡홀름) | eu-north-1 | 예 | 
| 중동(바레인) | me-south-1 | 아니요 | 
| 남아메리카(상파울루) | sa-east-1 | 예 | 
| AWS GovCloud(미국 동부) | us-gov-east-1 | 아니요 | 
| AWS GovCloud(미국 서부) | us-gov-west-1 | 아니요 | 

# 제품 삭제
<a name="productmgmt-delete"></a>

제품을 삭제하면는 제품이 포함된 모든 포트폴리오에서 모든 제품 버전을 AWS Service Catalog 제거합니다.

AWS Service Catalog 를 사용하면 AWS Service Catalog 콘솔 또는를 사용하여 제품을 삭제할 수 있습니다 AWS CLI. 제품을 성공적으로 삭제하려면 먼저 제품과 관련된 모든 리소스의 연결을 끊어야 합니다. 제품 리소스 연결의 예로는 포트폴리오 연결, 예산, TagOption, 서비스 작업 등이 있습니다.

**중요**  
 삭제한 제품은 복구할 수 없습니다.

**AWS Service Catalog 콘솔을 사용하여 제품을 삭제하려면**

1.  **포트폴리오** 페이지로 이동하여 삭제하려는 제품이 포함된 포트폴리오를 선택합니다.

1.  삭제하려는 제품을 선택한 다음 제품 창의 오른쪽 상단에서 **삭제**를 선택합니다.

1. *관련 리소스가 없는* 제품의 경우 텍스트 상자에 **삭제**를 입력하여 삭제하려는 제품을 확인한 다음 **삭제**를 선택합니다.

   *관련 리소스가 있는* 제품의 경우에는 4단계를 진행합니다.

1. **제품 삭제** 창에서 제품의 모든 관련 리소스가 표시된 **연결** 테이블을 검토합니다. 제품을 삭제할 때 이러한 리소스의 연결을 해제하려고 AWS Service Catalog 시도합니다.

1. 텍스트 상자에 **삭제**를 입력하여 제품 삭제를 관련 리소스를 모두 제거할 것인지 확인합니다.

1. **연결 해제 및 삭제**를 선택합니다.

 AWS Service Catalog 가 제품의 모든 리소스를 연결 해제할 수 없는 경우 제품이 삭제되지 않습니다. **제품 삭제** 창에는 실패한 연결 해제 시도 횟수와 각 실패에 대한 설명이 표시됩니다. 제품 삭제 시 리소스 연결 해제 실패 문제를 해결하는 방법에 대한 자세한 내용은 아래의 *제품 삭제 시 실패한 리소스 연결 해제 해결* 섹션을 참조하십시오.

**Topics**
+ [를 사용하여 제품 삭제 AWS CLI](product-delete-cli.md)
+ [제품 삭제 시 리소스 연결 해제 실패 문제 해결하기](product-delete-exception.md)

# 를 사용하여 제품 삭제 AWS CLI
<a name="product-delete-cli"></a>

AWS Service Catalog 를 사용하면 [AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) (AWS CLI)를 사용하여 포트폴리오에서 제품을 삭제할 수 있습니다. AWS CLI 는 명령줄 셸의 명령을 사용하여 AWS 서비스와 상호 작용할 수 있는 오픈 소스 도구입니다. AWS Service Catalog force-delete 함수에는 자주 사용하는 명령이나 스크립트를 단축 AWS CLI 하기 위해에서 생성할 수 있는 바로 가기인 [AWS CLI 별칭](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-alias.html)이 필요합니다.

## 사전 조건
<a name="product-delete-cli-requirements"></a>
+  AWS CLI를 설치하고 구성합니다. 자세한 내용은 [AWS CLI의 최신 버전 설치 또는 업데이트](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) 및 [구성 기본](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html)을 참조하십시오. 최소 AWS CLI 버전 1.11.24 또는 2.0.0을 사용합니다.
+ 제품 CLI 별칭 삭제에는 bash 호환 터미널과 JQ 명령줄 JSON 프로세서가 필요합니다. 명령줄 JSON 프로세서 설치에 대한 자세한 내용은 [jq 다운로드](https://stedolan.github.io/jq/download/) 섹션을 참조하십시오.
+ `Disassociation` API 호출을 일괄 처리할 AWS CLI 별칭을 생성하여 단일 명령으로 제품을 삭제할 수 있습니다.

제품을 성공적으로 삭제하려면 먼저 제품과 관련된 모든 리소스의 연결을 끊어야 합니다. 제품 리소스 연결의 예로는 포트폴리오 연결, 예산, TagOption, 서비스 작업 등이 있습니다. CLI를 사용하여 제품을 삭제할 때 CLI `force-delete-product` 별칭을 사용하면 `Disassociate` API를 호출하여 `DeleteProduct` API를 차단하는 모든 리소스의 연결을 끊을 수 있습니다. 이렇게 하면 개별 연결 해제를 위해 별도의 호출을 하지 않아도 됩니다.

**참고**  
아래 절차에 표시된 파일 경로는 이러한 작업을 수행하는 데 사용하는 운영 체제에 따라 다를 수 있습니다.

## AWS Service Catalog 제품을 삭제하기 위한 AWS CLI 별칭 생성
<a name="product-delete-cli-alias"></a>

 AWS CLI 를 사용하여 AWS Service Catalog 제품을 삭제할 때 CLI `force-delete-product`별칭을 사용하면 `Disassociate` API를 호출하여 `DeleteProduct` 호출을 방해하는 모든 리소스의 연결을 해제할 수 있습니다.

**AWS CLI 구성 폴더에 `alias` 파일 생성**

1.  AWS CLI 콘솔에서 구성 폴더로 이동합니다. 기본적으로 구성 폴더 경로는 Linux 및 macOS의 `~/.aws/` 또는 Windows `%USERPROFILE%\.aws\`에 있습니다.

1. 파일 탐색을 사용하거나 선호하는 터미널에 다음 명령을 입력하여 이름을 `cli`로 지정한 하위 폴더를 생성합니다.

   ```
                $ mkdir -p ~/.aws/cli
   ```

   결과로 생성되는 `cli` 폴더의 기본 경로는 Linux 및 macOS의 `~/.aws/cli/` 또는 Windows의 `%USERPROFILE%\.aws\cli`입니다.

1. 새로운 `cli` 폴더에서 파일 확장명 없이 이름이 `alias`인 텍스트 파일을 생성합니다. 파일 탐색을 사용하거나 선호하는 터미널에 다음 명령을 입력하여 `alias` 파일을 생성할 수 있습니다.

   ```
                 $ touch ~/.aws/cli/alias
   ```

1. 첫 번째 줄에 `[toplevel]`을 입력합니다.

1. 파일을 저장합니다.

그다음 별칭 스크립트를 파일에 수동으로 붙여넣거나 터미널 창에서 명령을 사용하여 force-delete-product 별칭을 `alias` 파일에 추가할 수 있습니다.

**force-delete-product 별칭을 `alias` 파일에 수동으로 추가하기**

1.  AWS CLI 콘솔에서 AWS CLI 구성 폴더로 이동하여 `alias` 파일을 엽니다.

1. 파일의 `[toplevel]` 줄 아래에 다음 코드 별칭을 입력합니다.

   ```
                [command servicecatalog]
             	 force-delete-product =
             	   !f() {
             	     if [ "$#" -ne 1 ]; then
             	         echo "Illegal number of parameters"
             	         exit 1
             	     fi
             	 
             	     if [[ "$1" != prod-* ]]; then
             	        echo "Please provide a valid product id."
             	        exit 1
             	     fi
             	 
             	     productId=$1
             	     describeProductAsAdminResponse=$(aws servicecatalog describe-product-as-admin --id $productId)
             	     listPortfoliosForProductResponse=$(aws servicecatalog list-portfolios-for-product --product-id $productId)
             	 
             	     tagOptions=$(echo "$describeProductAsAdminResponse" | jq -r '.TagOptions[].Id')
             	     budgetName=$(echo "$describeProductAsAdminResponse" | jq -r '.Budgets[].BudgetName')
             	     portfolios=$(echo "$listPortfoliosForProductResponse" | jq -r '.PortfolioDetails[].Id')
             	     provisioningArtifacts=$(echo "$describeProductAsAdminResponse" | jq -r '.ProvisioningArtifactSummaries[].Id')
             	     provisioningArtifactServiceActionAssociations=()
             	 
             	     for provisioningArtifactId in $provisioningArtifacts; do
             	       listServiceActionsForProvisioningArtifactResponse=$(aws servicecatalog list-service-actions-for-provisioning-artifact --product-id $productId --provisioning-artifact-id $provisioningArtifactId)
             	       serviceActions=$(echo "$listServiceActionsForProvisioningArtifactResponse" | jq -r '[.ServiceActionSummaries[].Id] | join(",")')
             	       if [[ -n "$serviceActions" ]]; then
             	         provisioningArtifactServiceActionAssociations+=("${provisioningArtifactId}:${serviceActions}")
             	       fi
             	     done
             	 
             	     echo "Before deleting a product, the following associated resources must be disassociated. These resources will not be deleted. This action may take some time, depending on the number of resources being disassociated."
             	 
             	     echo "Portfolios:"
             	     for portfolioId in $portfolios; do
             	       echo "\t${portfolioId}"
             	     done
             	 
             	     echo "Budgets:"
             	     if [[ -n "$budgetName" ]]; then
             	       echo "\t${budgetName}"
             	     fi
             	 
             	     echo "Tag Options:"
             	     for tagOptionId in $tagOptions; do
             	       echo "\t${tagOptionId}"
             	     done
             	 
             	     echo "Service Actions on Provisioning Artifact:"
             	     for association in "${provisioningArtifactServiceActionAssociations[@]}"; do
             	       echo "\t${association}"
             	     done
             	 
             	     read -p "Are you sure you want to delete ${productId}? y,n "
             	     if [[ ! $REPLY =~ ^[Yy]$ ]]; then
             	        exit
             	     fi
             	 
             	     for portfolioId in $portfolios; do
             	       echo "Disassociating ${portfolioId}"
             	       aws servicecatalog disassociate-product-from-portfolio --product-id $productId --portfolio-id $portfolioId
             	     done
             	 
             	     if [[ -n "$budgetName" ]]; then
             	       echo "Disassociating ${budgetName}"
             	       aws servicecatalog disassociate-budget-from-resource --budget-name "$budgetName" --resource-id $productId
             	     fi
             	 
             	     for tagOptionId in $tagOptions; do
             	       echo "Disassociating ${tagOptionId}"
             	       aws servicecatalog disassociate-tag-option-from-resource --tag-option-id $tagOptionId --resource-id $productId
             	     done
             	 
             	     for association in "${provisioningArtifactServiceActionAssociations[@]}"; do
             	       associationPair=(${association//:/ })
             	       provisioningArtifactId=${associationPair[0]}
             	       serviceActionsList=${associationPair[1]}
             	       serviceActionIds=${serviceActionsList//,/ }
             	       for serviceActionId in $serviceActionIds; do
             	         echo "Disassociating ${serviceActionId} from ${provisioningArtifactId}"
             	         aws servicecatalog disassociate-service-action-from-provisioning-artifact --product-id $productId --provisioning-artifact-id $provisioningArtifactId --service-action-id $serviceActionId
             	       done
             	     done
             	 
             	     echo "Deleting product ${productId}"
             	     aws servicecatalog delete-product --id $productId
             	 
             	   }; f
   ```

1. 파일을 저장합니다.

**터미널 창을 사용하여 force-delete-product 별칭을 `alias` 파일에 추가합니다.**

1. 터미널 창을 열고 다음 명령을 실행합니다.

   `$ cat >> ~/.aws/cli/alias`

1. 별칭 스크립트를 터미널 창에 붙여넣은 다음 *Ctrl\$1D*를 눌러 `cat` 명령을 종료합니다.

**force-delete-product 별칭 호출**

1. 터미널 창에서 다음 명령을 실행하여 제품 별칭 삭제를 호출합니다.

   `$ aws servicecatalog force-delete-product {product-id} `

   아래 예제는 `force-delete-product` 별칭 명령과 그에 따른 응답을 보여줍니다.

   ```
                 $ aws servicecatalog force-delete-product prod-123
   ```

   ```
                 Before deleting a product, the following associated resources must be disassociated. These resources will not be deleted. This action may take some time, depending on the number of resources being disassociated.
                 Portfolios:
                   port-123
                 Budgets:
                     budgetName
                 Tag Options:
                     tag-123
                 Service Actions on Provisioning Artifact:
                     pa-123:act-123
                 Are you sure you want to delete prod-123? y,n
   ```

1. `y`를 입력하여 제품 삭제를 확인합니다.

제품을 성공적으로 삭제하면 터미널 창에 다음 결과가 표시됩니다.

```
          Disassociating port-123
          Disassociating budgetName
          Disassociating tag-123
          Disassociating act-123 from pa-123
          Deleting product prod-123
```

## 추가 리소스
<a name="product-delete-cli-resources"></a>

별칭 AWS CLI사용 및 AWS Service Catalog 제품 삭제에 대한 자세한 내용은 다음 리소스를 참조하세요.
+ *AWS Command Line Interface (CLI)* 사용 설명서의 [AWS CLI 별칭 생성 및 사용](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-alias.html).
+ [AWS CLI 별칭 리포](https://github.com/awslabs/awscli-aliases)지토리 git 리포지토리.
+ [AWS Service Catalog 제품 삭제](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/productmgmt-delete.html).
+ [AWS re:Invent 2016: YouTube의 유효 AWS CLI 사용자](https://youtu.be/Xc1dHtWa9-Q?t=1593). *YouTube* 

# 제품 삭제 시 리소스 연결 해제 실패 문제 해결하기
<a name="product-delete-exception"></a>

리소스 연결 해제 예외로 인해 이전 [제품 삭제](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/productmgmt-delete.html) 시도가 실패한 경우 아래 예외 목록과 해결 방법을 검토하십시오.

**참고**  
리소스 연결 해제 실패 메시지를 받기 전에 **제품 삭제** 창을 닫은 경우, 진행 중인 *제품 삭제* 섹션의 1\$13단계에 따라 창을 다시 열 수 있습니다.

**리소스 연결 해제 실패 문제를 해결하려면**

**제품 삭제** 창에서 연결 테이블 **상태** 열을 검토하십시오. 리소스 연결 해제 실패 예외와 제안된 해결 방법을 알아봅니다.


****  

| 상태 예외 유형 | 원인 | 해결 방법 | 
| --- | --- | --- | 
| Product prod-\$1\$1\$1\$1 | AWS Service Catalog 는 제품에 여전히 연결된 TagOptions, 예산, 연결된 작업이 ProvisioningArtifact 있는 하나 이상의가 있거나, 제품이 여전히 포트폴리오에 할당되어 있거나, 제품에 사용자가 있거나, 제품에 제약이 있기 때문에 제품을 삭제할 수 없습니다. | 제품 삭제를 다시 시도하십시오. | 
| 사용자: username에게 다음을 수행할 권한이 부여되지 않았습니다. | 제품을 삭제하려는 사용자에게는 제품 리소스의 연결을 끊는 데 필요한 권한이 없습니다. | AWS Service Catalog 현재 연결 해제 권한이 없는 제품 리소스의 연결 해제에 대한 자세한 내용은 계정 관리자에게 문의하는 것이 좋습니다. | 

# 버전 관리
<a name="managing-versions"></a>

 제품을 생성할 때 제품 버전을 지정합니다. 제품 버전은 언제든지 업데이트할 수 있습니다.

 버전에는 CloudFormation 템플릿, 제목, 설명, 상태 및 지침이 있습니다.

## 버전 상태
<a name="version-status"></a>

 버전은 다음 세 가지 상태 중 하나일 수 있습니다.
+  **활성** - 활성 버전이 버전 목록에 표시되어 사용자가 이를 시작할 수 있습니다.
+  **비활성** - 비활성 버전은 버전 목록에서 숨김 처리되어 보이지 않습니다. 프로비저닝된 기존 제품 중 이 버전에서 시작된 것은 영향을 받지 않습니다.
+  **삭제됨** - 삭제된 버전은 버전 목록에서 제거됩니다. 버전 삭제는 실행 취소할 수 없습니다.

## 버전 지침
<a name="version-guidance"></a>

 버전 지침을 설정하여 최종 사용자에게 제품 버전에 대한 정보를 제공할 수 있습니다. 버전 지침은 활성 제품 버전에만 영향을 줍니다.

 버전 지침에는 두 가지 옵션이 있습니다.
+  **없음** - 기본적으로 제품 버전에는 지침이 없습니다. 최종 사용자는 해당 버전을 사용하여 프로비저닝된 제품을 업데이트하고 실행할 수 있습니다.
+  **사용되지 않음** - 사용자는 더 이상 사용되지 않는 제품 버전을 사용하여 프로비저닝된 새 제품을 시작할 수 없습니다. 이전에 시작된 프로비저닝된 제품이 현재 더 이상 사용되지 않는 버전을 사용하는 경우, 사용자는 기존 버전 또는 새 버전을 사용하여 프로비저닝된 해당 제품을 업데이트하는 것만 가능합니다.

## 버전 업데이트
<a name="updating-versions"></a>

 제품을 생성할 때 제품 버전을 지정합니다. 또한 버전은 언제든지 업데이트할 수 있습니다. 제품 생성에 대한 자세한 내용은 [제품 생성](productmgmt-cloudresource.md) 단원을 참조하십시오.

**제품 버전을 업데이트하려면**

1.  AWS Service Catalog 콘솔에서 **제품을** 선택합니다.

1.  제품 목록에서 버전을 업데이트할 제품을 선택합니다.

1.  **제품 세부 정보** 페이지에서 **버전** 탭을 선택한 다음 업데이트할 버전을 선택합니다.

1.  **버전 세부 정보** 페이지에서 제품 버전을 편집한 다음 **변경 사항 저장**을 선택합니다.

# AWS Service Catalog 제약 조건 사용
<a name="constraints"></a>

최종 사용자가 특정 포트폴리오에서 제품을 시작할 때 적용되는 규칙을 제어하려면 제약 조건을 적용합니다. 최종 사용자가 제품을 시작하면 제약 조건을 사용하여 적용한 규칙이 표시됩니다. 제품이 포트폴리오에 들어 있는 경우 제품에 제약 조건을 적용할 수 있습니다. 제약 조건을 만들고, 아직 시작되지 않은 제품의 모든 현재 버전에 적용하자마자 제약 조건이 활성화됩니다.

**Topics**
+ [시작 제약 조건](constraints-launch.md)
+ [알림 제약](constraints-notification.md)
+ [태그 업데이트 제약 조건](constraints-resourceupdate.md)
+ [스택 세트 제약](constraints-stackset.md)
+ [템플릿 제약 조건](catalogs_constraints_template-constraints.md)

# AWS Service Catalog 시작 제약 조건
<a name="constraints-launch"></a>

시작 제약 조건은 최종 사용자가 제품을 시작, 업데이트 또는 종료할 때가 AWS Service Catalog 수임하는 AWS Identity and Access Management (IAM) 역할을 지정합니다. IAM 역할은 사용자 또는 AWS 서비스가 AWS 서비스를 사용하기 위해 일시적으로 수임할 수 있는 권한 모음입니다. 소개 예제는 다음을 참조하십시오.
+ CloudFormation 제품 유형: [6단계: 시작 제약 조건을 추가하여 IAM 역할 할당](getstarted-launchconstraint.md)
+ Terraform Open Source 또는 Terraform Cloud 제품 유형: [5단계: 시작 역할 생성](getstarted-launchrole-Terraform.md)

시작 제약이 포트폴리오의 제품에 적용됩니다(제품-포트폴리오 연결). 시작 제약이 포트폴리오 수준이나 모든 포트폴리오의 제품에 적용되는 것은 아닙니다. 시작 제약 조건을 포트폴리오의 모든 제품과 연결하려면 각 제품에 시작 제약 조건을 개별적으로 적용해야 합니다.

시작 제약 조건이 없는 경우 최종 사용자는 자신의 IAM 자격 증명으로 제품을 시작하고 관리해야 합니다. 이렇게 하려면 제품에 사용되는 CloudFormation AWS 서비스 및에 대한 권한이 있어야 합니다 AWS Service Catalog. 대신에 시작 역할을 사용하여 최종 사용자의 권한을 해당 제품을 사용하기 위해 필요한 최소 권한으로 제한할 수 있습니다. 최종 사용자 권한에 대한 자세한 내용은 [의 자격 증명 및 액세스 관리 AWS Service Catalog](controlling_access.md) 단원을 참조하십시오.

IAM 역할을 만들고 할당하려면 다음 IAM 관리 권한이 있어야 합니다.
+ `iam:CreateRole`
+ `iam:PutRolePolicy`
+ `iam:PassRole`
+ `iam:Get*`
+ `iam:List*`

## 시작 역할 구성
<a name="constraints-launch-role"></a>

시작 제약 조건으로 제품에 할당하는 IAM 역할에는 다음을 사용할 권한이 있어야 합니다.

**CloudFormation 제품의 경우**
+ `arn:aws:iam::aws:policy/AWSCloudFormationFullAccess` CloudFormation 관리형 정책
+ 제품에 대한 AWS CloudFormation 템플릿의 서비스
+ 서비스 소유 Amazon S3 버킷의 AWS CloudFormation 템플릿에 대한 읽기 액세스입니다.

**Terraform 제품의 경우**
+ 제품의 Amazon S3 템플릿의 서비스
+ 서비스 소유의 Amazon S3 버킷에 있는 Amazon S3 템플릿에 대한 읽기 액세스 
+ Amazon EC2 인스턴스에서 태그 지정하는 경우, `resource-groups:Tag`(프로비저닝 작업을 수행할 때 Terraform 프로비저닝 엔진에서 가정함)
+ `resource-groups:CreateGroup` 리소스 그룹 태그 지정용(가 리소스 그룹을 생성하고 태그를 할당 AWS Service Catalog 하기 위해 가정) 

IAM 역할의 신뢰 정책은이 역할을 수임 AWS Service Catalog 하도록 허용해야 합니다. 아래 절차에서는 역할 유형 AWS Service Catalog 으로를 선택하면 신뢰 정책이 자동으로 설정됩니다. 콘솔을 사용하지 않는 경우 IAM *역할과 함께 신뢰 정책을 사용하는 방법의 역할을 수임하는 AWS 서비스에 대한 신뢰 정책 생성* 섹션을 참조하세요. [https://aws.amazon.com/blogs/security/how-to-use-trust-policies-with-iam-roles/](https://aws.amazon.com/blogs/security/how-to-use-trust-policies-with-iam-roles/) 

**참고**  
`servicecatalog:ProvisionProduct`, `servicecatalog:TerminateProvisionedProduct` 및 `servicecatalog:UpdateProvisionedProduct` 권한은 시작 역할에 할당할 수 없습니다. [AWS Service Catalog 최종 사용자에 대한 권한 부여](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-iamenduser.html) 단원의 인라인 정책 단계에 나와 있듯이 IAM 역할을 사용해야 합니다.

**참고**  
 AWS Service Catalog 콘솔에서 프로비저닝된 Cloudformation 제품 및 리소스를 보려면 최종 사용자에게 CloudFormation 읽기 액세스 권한이 필요합니다. 콘솔에서 프로비저닝된 제품 및 리소스를 볼 때는 시작 역할을 사용하지 **않습니다**.

**시작 역할을 만들려면**

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

   Terraform 제품에는 추가 실행 역할 구성이 필요합니다. 자세한 내용은 *Terraform Open Source 제품으로 시작하기*의 [5단계: 시작 역할 생성](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/getstarted-launchrole-Terraform) 섹션을 참조하십시오.

1. **역할**을 선택합니다.

1. **새 역할 생성**을 선택합니다.

1. 역할 이름을 입력하고 **다음 단계**를 선택합니다.

1. **AWS Service Catalog** 옆의 **AWS 서비스 역할**에서 **선택**을 선택합니다.

1. **정책 연결** 페이지에서 **다음 단계**를 선택합니다.

1. 역할을 만들려면 **역할 생성**을 선택합니다.

**새 역할에 정책을 연결하려면**

1. 만든 역할을 선택하여 해당 역할의 세부 정보 페이지를 봅니다.

1. **권한** 탭을 선택하고 **인라인 정책** 섹션을 확장합니다. 그런 다음 **여기 클릭**을 선택합니다.

1. **사용자 지정 정책**을 선택한 후 **선책**을 선택합니다.

1. 정책의 이름을 입력한 후 다음을 **정책 설명서** 편집기에 붙여넣습니다.

   ```
     
             "Statement":[
         {
            "Effect":"Allow",
            "Action":[
               "s3:GetObject"
            ],
            "Resource":"*",
            "Condition":{
               "StringEquals":{
                  "s3:ExistingObjectTag/servicecatalog:provisioning":"true"
               }
            }
      ]
   }
   ```
**참고**  
시작 제약에 대한 시작 역할을 구성할 때는 다음 문자열을 사용해야 합니다. `"s3:ExistingObjectTag/servicecatalog:provisioning":"true"` 

1. 제품이 사용하는 각 추가 서비스의 정책에 줄을 추가합니다. 예를 들어 Amazon Relational Database Service(RDS)에 대한 권한을 추가하려면  `Action` 목록의 마지막 줄 끝에 쉼표를 입력한 후 다음 줄을 추가합니다.

   ```
   "rds:*"
   ```

1. **정책 적용**을 선택합니다.

## 시작 제약 조건 적용
<a name="constraints-launch-constraint"></a>

시작 역할을 구성한 후 역할을 시작 제약으로 제품에 할당합니다. 이 작업은 최종 사용자가 제품을 시작할 때 역할을 수임 AWS Service Catalog 하도록에 지시합니다.

**제품에 역할을 할당하려면**

1. Service Quotas 콘솔([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/))을 엽니다.

1. 제품이 들어 있는 포트폴리오를 선택합니다.

1. **제약** 탭을 선택하고 **제약 생성**를 선택합니다.

1. **제품**에서 제품을 선택하고 ** 제약 유형**에서 **시작**을 선택합니다. **계속**을 선택합니다.

1. **시작 제약** 섹션에서 계정에서 IAM 역할을 선택하거나, IAM 역할 ARN을 입력하거나, 역할 이름을 입력할 수 있습니다.

   역할 이름을 지정하고 계정이 시작 제약 조건을 사용할 경우 계정에서 IAM 역할의 이름을 사용합니다. 이 접근 방식에서는 계정과 무관하게 시작 역할 제약 조건을 사용할 수 있으므로 공유 계정당 리소스를 더 적게 만들 수 있습니다.
**참고**  
지정된 역할 이름은 시작 제약 조건을 만든 계정과 이 시작 제약 조건을 사용하여 제품을 시작하는 사용자의 계정에 있어야 합니다.

1. IAM 역할을 지정한 후 **생성**을 선택합니다.

## 시작 제약 조건에 혼동된 대리자 추가
<a name="constraint-confused-deputy"></a>

AWS Service Catalog 는 역할 수임 요청과 함께 실행되는 APIs에 대해 [혼동된 대리](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html)자 보호를 지원합니다. 시작 제약 조건을 추가할 때 시작 역할 신뢰 정책의 `sourceAccount` 및 `sourceArn` 조건을 사용하여 시작 역할 액세스를 제한할 수 있습니다. 이를 통해 신뢰할 수 있는 소스에서 시작 역할을 호출하도록 보장할 수 있습니다.

다음 예제에서 AWS Service Catalog 최종 사용자는 계정 111111111111에 속합니다. AWS Service Catalog 관리자가 제품에 대한 `LaunchConstraint`를 만들 때 최종 사용자는 시작 역할 신뢰 정책에 다음 조건을 지정하여 역할 수임을 계정 111111111111로 제한할 수 있습니다.

```
"Condition":{
   "ArnLike":{
      "aws:SourceArn":"arn:aws:servicecatalog:us-east-1:111111111111:*"
   },
   "StringEquals":{
      "aws:SourceAccount":"111111111111"
   }
  
}
```

`LaunchConstraint`를 사용하여 제품을 프로비저닝하는 사용자는 동일한 `AccountId`(111111111111)를 사용해야 합니다. 그렇지 않으면 `AccessDenied` 오류가 발생하여 작업이 실패하여 시작 역할 오용을 방지할 수 있습니다.

다음 AWS Service Catalog APIs됩니다.
+ `LaunchConstraint`
+ `ProvisionProduct`
+ `UpdateProvisionedProduct`
+ `TerminateProvisionedProduct`
+ `ExecuteProvisionedProductServiceAction`
+ `CreateProvisionedProductPlan`
+ `ExecuteProvisionedProductPlan`

에 대한 `sourceArn `보호는 "`arn:<aws-partition>:servicecatalog:<region>:<accountId>:`"와 같은 템플릿 기반 ARNs AWS Service Catalog 만 지원합니다. 특정 리소스 ARNs은 지원하지 않습니다.

## 시작 제약 확인
<a name="constraints-launch-test"></a>

가 역할을 AWS Service Catalog 사용하여 제품을 시작하고 제품을 성공적으로 프로비저닝하는지 확인하려면 AWS Service Catalog 콘솔에서 제품을 시작합니다. 사용자에게 릴리스하기 전에 제약 조건을 테스트하려면 동일한 제품이 들어 있는 테스트 포트폴리오를 만들고 해당 포트폴리오에서 제약 조건을 테스트합니다.

**제품을 시작하려면**

1.  AWS Service Catalog 콘솔의 메뉴에서 **서비스 카탈로그**, **최종 사용자를** 선택합니다.

1. 제품을 선택하여 **제품 세부 정보** 페이지를 엽니다. **시작 옵션** 테이블에서 역할의 Amazon 리소스 이름(ARN)이 표시되는지 확인합니다.

1. **제품 시작**을 선택합니다.

1. 모든 필수 정보를 입력하여 시작 단계를 진행합니다.

1. 제품이 시작되는지 확인합니다.

# AWS Service Catalog 알림 제약 조건
<a name="constraints-notification"></a>

**참고**  
AWS Service Catalog 는 Terraform Open Source 또는 Terraform Cloud 제품에 대한 알림 제약 조건을 지원하지 않습니다.

알림 제약은 스택 이벤트에 대한 알림을 받을 Amazon SNS 주제를 지정합니다.

다음 절차에 따라 SNS 주제를 만들고 이를 구독합니다.

**SNS 주제와 구독을 만들려면**

1. [https://console.aws.amazon.com/sns/v3/home](https://console.aws.amazon.com/sns/v3/home)에서 Amazon SNS 콘솔을 엽니다.

1. **주제 생성**을 선택합니다.

1. 주제 이름을 입력한 후 **주제 생성**을 선택합니다.

1. **구독 생성**을 선택합니다.

1. **프로토콜**에서 **이메일**을 선택합니다. **엔드포인트**에서 알림을 받을 이메일 주소를 입력합니다. **Create subscription**을 선택합니다.

1. `AWS Notification - Subscription Confirmation`라는 제목을 가진 확인 이메일을 받게 됩니다. 이메일을 열고 지침에 따라 구독을 완료합니다.

다음 절차에 따라 이전 절차에 따라 만든 SNS 주제를 사용하는 알림 제약을 적용합니다.

**제품에 알림 제약을 적용하려면**

1. Service Quotas 콘솔([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/))을 엽니다.

1. 제품이 들어 있는 포트폴리오를 선택합니다.

1. **제약**을 확장하고 **제약 추가**를 선택합니다.

1. **제품**에서 제품을 선택하고 **제약 유형**을 **알림**으로 설정합니다. **계속**을 선택합니다.

1. **계정에서 주제 선택**을 선택하고 **주제 이름**에서 만든 SNS 주제를 선택합니다.

1. **제출**을 선택합니다.

# AWS Service Catalog 태그 업데이트 제약 조건
<a name="constraints-resourceupdate"></a>

**참고**  
AWS Service Catalog 는 Terraform Open Source 제품에 대한 태그 업데이트 제약 조건을 지원하지 않습니다.

태그 업데이트 제약 조건을 사용하면 AWS Service Catalog 관리자는 최종 사용자가 프로비저닝된 제품과 연결된 리소스의 태그를 업데이트하도록 허용하거나 허용하지 않을 수 있습니다. 태그 업데이트가 허용된 경우 제품 또는 포트폴리오와 연결된 새 태그가 프로비저닝된 제품 업데이트 중에 프로비저닝된 리소스에 적용됩니다.

**제품에 대한 태그 업데이트를 활성화하는 방법**

1. Service Quotas 콘솔([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/))을 엽니다.

1. 업데이트할 제품이 포함된 포트폴리오를 선택합니다.

1. **제약** 탭을 선택하고 **제약 조건 추가**를 선택합니다.

1. **제약 조건 유형**에서 **태그 업데이트**를 선택합니다.

1. **제품**에서 제품을 선택하고 **계속**을 선택합니다.

1. **태그 업데이트 페이지**에서 **태그 업데이트 활성화**를 선택합니다.

1. **제출**을 선택합니다.

# AWS Service Catalog 스택 세트 제약 조건
<a name="constraints-stackset"></a>

**참고**  
AWS Service Catalog 는 Terraform Open Source 제품에 대한 스택 세트 제약 조건을 지원하지 않습니다.
AutoTags는 현재 CloudFormation StackSets에서 지원되지 않습니다.

스택 세트 제약을 통해 CloudFormation 스택 세트를 사용한 제품 배포 옵션을 구성할 수 있습니다. 제품 시작에 대하여 여러 계정 및 리전을 지정할 수 있습니다. 최종 사용자는 해당 계정을 관리하고 제품 배포 위치 및 배포 순서를 결정할 수 있습니다.

**제품에 스택 세트 제약을 적용하려면**

1. Service Quotas 콘솔([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/))을 엽니다.

1. 원하는 제품이 포함된 포트폴리오를 선택합니다.

1. **제약** 탭을 선택하고 **제약 생성**를 선택합니다.

1. **제품**에서 제품을 선택합니다. **제약 유형**에서 **스택 세트**를 선택합니다.

1. 스택 세트 제약에 대한 계정, 리전 및 권한을 구성합니다.
   + **계정 설정**에서 제품을 생성하려는 계정을 식별합니다.
   + **리전 설정**에서 제품을 배포할 지리적 리전과 해당 리전에 제품을 배포할 순서를 선택합니다.
   + **권한**에서 대상 계정 관리에 사용할 IAM 스택 세트 관리자 역할을 선택합니다. 역할을 선택하지 않으면 스택 세트에서 기본 ARN을 사용합니다. [스택 세트 권한 설정에 대해 자세히 알아보십시오.](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html)

1. **생성(Create)**을 선택합니다.

# AWS Service Catalog 템플릿 제약 조건
<a name="catalogs_constraints_template-constraints"></a>

**참고**  
AWS Service Catalog 는 Terraform Open Source 또는 Terraform Cloud 제품에 대한 템플릿 제약 조건을 지원하지 않습니다.

최종 사용자가 제품을 시작할 때 사용할 수 있는 옵션을 제한하려면 템플릿 제약 조건을 적용합니다. 최종 사용자가 조직의 규정 준수 요건을 위반하지 않고 제품을 사용할 수 있도록 템플릿 제약 조건을 적용합니다. AWS Service Catalog 포트폴리오의 제품에 템플릿 제약 조건을 적용합니다. 템플릿 제약 조건을 정의하려면 포트폴리오에 제품이 하나 이상 들어 있어야 합니다.

템플릿 제약 조건은 제품의 기본 CloudFormation 템플릿에 정의된 파라미터의 허용 가능한 값을 좁히는 하나 이상의 규칙으로 구성됩니다. CloudFormation 템플릿의 파라미터는 사용자가 스택을 만들 때 지정할 수 있는 값 세트를 정의합니다. 예를 들어 파라미터는 EC2 인스턴스가 포함된 스택을 시작할 때 사용자가 선택할 수 있는 다양한 인스턴스 유형을 정의할 수 있습니다.

템플릿의 파라미터 값 세트가 포트폴리오의 대상 고객에게 너무 광범위할 경우, 사용자가 제품을 시작할 때 선택할 수 있는 값을 제한하도록 템플릿 제약 조건을 정의할 수 있습니다. 예를 들어 템플릿 파라미터에 스몰 인스턴스 유형(예: `t2.micro` 또는 `t2.small`)만 사용해야 하는 사용자에게 너무 큰 EC2 인스턴스 유형이 있을 경우, 최종 사용자가 선택할 수 있는 인스턴스 유형을 제한하도록 템플릿 제약 조건을 추가할 수 있습니다. CloudFormation 템플릿 파라미터에 대한 자세한 내용은 *CloudFormation 사용 설명서*의 [파라미터를](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html) 참조하세요.

템플릿 제약 조건은 한 포트폴리오 내에만 적용됩니다. 한 포트폴리오의 제품에 템플릿 제약 조건을 적용한 후 다른 포트폴리오의 제품을 포함시킬 경우, 두 번째 포트폴리오의 제품에는 제약 조건이 적용되지 않습니다.

사용자와 이미 공유한 제품에 템플릿 제약 조건을 적용하는 경우, 모든 후속 제품 시작 및 포트폴리오의 모든 제품 버전에 대해 제약 조건이 즉시 활성화됩니다.

규칙 편집기를 사용하거나 AWS Service Catalog 관리자 콘솔에서 규칙을 JSON 텍스트로 작성하여 템플릿 제약 규칙을 정의합니다. 구문 및 예제를 비롯한 규칙에 대한 자세한 내용은 [템플릿 제약 조건 규칙](reference-template_constraint_rules.md)을 참조하십시오.

사용자에게 릴리스하기 전에 제약 조건을 테스트하려면 동일한 제품이 들어 있는 테스트 포트폴리오를 만들고 해당 포트폴리오에서 제약 조건을 테스트합니다.

**제품에 템플릿 제약 조건을 적용하려면**

1. Service Quotas 콘솔([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/))을 엽니다.

1. **포트폴리오** 페이지에서 템플릿 제약 조건을 적용하려는 제품이 들어 있는 포트폴리오를 선택합니다.

1. **제약 조건** 섹션을 확장하고 **제약 추가**를 선택합니다.

1. **제품**에 대한 **제품 및 유형 선택** 창에서 템플릿 제약 조건을 정의하려는 제품을 선택합니다. 그런 다음 **제약 유형**으로 **템플릿**을 선택합니다. **계속**을 선택합니다.

1. **템플릿 제약 작성기** 페이지에서 JSON 편집기 또는 규칙 작성기 인터페이스를 사용하여 제약 조건 규칙을 편집합니다.
   + 규칙에서 JSON 코드를 편집하려면 **제약 텍스트 편집기** 탭을 선택합니다. 시작하는 데 도움이 되도록 이 탭에서 여러 샘플이 제공됩니다.

     규칙 작성기 인터페이스를 사용하여 규칙을 작성하려면 **규칙 빌더** 탭을 선택합니다. 이 탭에서 제품의 템플릿에 지정된 파라미터를 선택하고, 해당 파라미터에 대한 허용 값을 지정할 수 있습니다. 파라미터 유형에 따라 체크리스트에서 항목을 선택하거나, 수를 지정하거나, 쉼표로 구분된 목록에서 값 세트를 지정하여 허용 값을 지정합니다.

     규칙 작성을 마쳤으면 **규칙 추가** 탭을 선택합니다. 규칙이 **규칙 빌더** 탭의 테이블에 표시됩니다. JSON 출력을 검토하고 편집하려면 **제약 텍스트 편집기** 탭을 선택합니다.

1. 제약 조건의 규칙을 다 편집했으면 **제출** 탭을 선택합니다. 제약 조건을 보려면 포트폴리오 세부 정보 페이지로 이동하여 **제약 조건**을 확장합니다.

# 템플릿 제약 조건 규칙
<a name="reference-template_constraint_rules"></a>

 AWS Service Catalog 포트폴리오에서 템플릿 제약 조건을 정의하는 규칙은 최종 사용자가 템플릿을 사용할 수 있는 시기와 사용하려는 제품을 생성하는 데 사용되는 CloudFormation 템플릿에 선언된 파라미터에 대해 지정할 수 있는 값을 설명합니다. 규칙은 최종 사용자가 실수로 잘못된 값을 지정하지 못하게 한다는 점에서 유용합니다. 예를 들어 규칙을 추가하여 최종 사용자가 지정된 VPC에서 유효한 서브넷을 지정했는지 또는 테스트 환경에 인스턴스 `m1.small` 유형을 사용했는지 확인할 수 있습니다.는 제품의 리소스를 생성하기 전에 규칙을 CloudFormation 사용하여 파라미터 값을 검증합니다.

각 규칙은 규칙 조건(선택 사항)과 어설션(필수)이라는 두 가지 속성으로 구성됩니다. 규칙 조건은 규칙이 적용되는 시기를 결정합니다. 어설션은 사용자가 특정 파라미터에 대해 지정할 수 있는 값을 설명합니다. 규칙 조건을 정의하지 않은 경우, 규칙의 어설션이 항상 적용됩니다. 규칙 조건과 어설션을 정의하려면 템플릿의 `Rules` 섹션에서만 사용할 수 있는 함수인 *규칙 관련 내장 함수*를 사용합니다. 함수를 중첩할 수 있지만, 규칙 조건 또는 어설션의 최종 결과가 true이거나 false여야 합니다.

한 예로 `Parameters` 섹션에서 VPC와 서브넷 파라미터를 선언했다고 가정하겠습니다. 지정된 서브넷이 특정 VPC에 있음을 확인하는 규칙을 만들 수 있습니다. 따라서 사용자가 VPC를 지정하면는 스택을 생성하거나 업데이트하기 전에 어설션을 CloudFormation 평가하여 서브넷 파라미터 값이 해당 VPC에 있는지 확인합니다. 파라미터 값이 유효하지 않으면 CloudFormation 즉시 스택을 생성하거나 업데이트하지 못합니다. 사용자가 VPC를 지정하지 않으면 서브넷 파라미터 값을 확인 CloudFormation 하지 않습니다.

## 구문
<a name="template-constraint-rules-syntax"></a>

템플릿의 `Rules` 섹션은 키 이름 `Rules`와 그 뒤에 이어지는 콜론 하나로 구성됩니다. 중괄호가 모든 규칙 선언을 묶습니다. 규칙을 여러 개 선언할 경우 쉼표로 구분됩니다. 각 규칙에 대해 인용 부호 안의 논리적 이름과 그 뒤에 오는 콜론, 그리고 규칙 조건과 어설션을 묶는 중괄호를 선언합니다.

규칙에는 `RuleCondition` 속성이 포함될 수 있으며, `Assertions` 속성이 포함되어야 합니다. 각 규칙에 대해 규칙 조건을 하나만 정의할 수 있으며, `Assertions` 속성 내에서 하나 이상의 어설션을 정의할 수 있습니다. 다음 가상 템플릿에 나와 있듯이 규칙 관련 내장 함수를 사용하여 규칙 조건과 어설션을 정의합니다.

```
"Rules":{
   "Rule01":{
      "RuleCondition":{
         "Rule-specific intrinsic function"
      },
      "Assertions":[
         {
            "Assert":{
               "Rule-specific intrinsic function"
            },
            "AssertDescription":"Information about this assert"
         },
         {
            "Assert":{
               "Rule-specific intrinsic function"
            },
            "AssertDescription":"Information about this assert"
         }
      ]
   },
   "Rule02":{
      "Assertions":[
         {
            "Assert":{
               "Rule-specific intrinsic function"
            },
            "AssertDescription":"Information about this assert"
         }
      ]
   }
}
```

가상 템플릿은 `Rule01` 및 `Rule02`라는 두 개의 규칙이 포함된 `Rules` 섹션을 보여줍니다. `Rule01`에는 규칙 조건 하나와 어설션 두 개가 포함되어 있습니다. 규칙 조건의 함수가 true로 평가되면, 각 어설션의 두 함수가 평가되고 적용됩니다. 규칙 조건이 false이면 규칙이 적용되지 않습니다. `Rule02`에는 규칙 조건이 없기 때문에 항상 적용됩니다. 이는 어설션 하나가 항상 평가되고 적용됨을 뜻합니다.

규칙 조건과 어설션을 정의하는 규칙 관련 내장 함수에 대한 자세한 내용은 *AWS CloudFormation 사용 설명서*의 [AWS 규칙 함수](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-rules.html) 섹션을 참조하십시오.

## 예: 조건부로 파라미터 값 확인
<a name="template-constraint-rules-example"></a>

다음 두 규칙은 `InstanceType` 파라미터의 값을 확인합니다. 환경 파라미터(`test` 또는 `prod`)의 값에 따라 사용자는 `InstanceType` 파라미터에 대해 `m1.small` 또는 `m1.large`를 지정해야 합니다. `InstanceType` 및 `Environment` 파라미터는 동일한 템플릿의 `Parameters` 섹션에서 선언해야 합니다.

```
"Rules" : {
  "testInstanceType" : {
    "RuleCondition" : {"Fn::Equals":[{"Ref":"Environment"}, "test"]},
    "Assertions" : [
      {
        "Assert" :  { "Fn::Contains" : [ ["m1.small"], {"Ref" : "InstanceType"} ] },
        "AssertDescription" : "For the test environment, the instance type must be m1.small"
      }
    ]
  },
  "prodInstanceType" : {
    "RuleCondition" : {"Fn::Equals":[{"Ref":"Environment"}, "prod"]},
    "Assertions" : [
      {
        "Assert" :  { "Fn::Contains" : [ ["m1.large"], {"Ref" : "InstanceType"} ] },
        "AssertDescription" : "For the prod environment, the instance type must be m1.large"
      }
    ]
  }
}
```

# AWS Service Catalog 서비스 작업
<a name="using-service-actions"></a>

**참고**  
AWS Service Catalog 는 Terraform Open Source 또는 Terraform Cloud 제품에 대한 서비스 작업을 지원하지 않습니다.

AWS Service Catalog 를 사용하면 규정 준수 및 보안 조치를 준수하면서 관리 유지 관리 및 최종 사용자 교육을 줄일 수 있습니다. 관리자는 서비스 작업을 사용하여, 최종 사용자가 AWS Service Catalog에서 운영 작업을 수행하거나, 문제를 해결하거나, 승인된 명령을 실행하거나, 권한을 요청하도록 허용할 수 있습니다. 서비스 작업을 정의하려면 [AWS Systems Manager 문서](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-ssm-docs.html)를 참조하십시오. [AWS Systems Manager 문서는](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-ssm-docs.html) Amazon EC2 중지 및 재부팅과 같은 AWS 모범 사례를 구현하는 사전 정의된 작업에 대한 액세스를 제공하며 사용자 지정 작업도 정의할 수 있습니다.

이 자습서에서는 최종 사용자에게 Amazon EC2 인스턴스를 다시 시작하는 기능을 제공합니다. 필요한 권한을 추가하고, 서비스 작업을 정의하고, 서비스 작업을 제품과 연결하고, 프로비저닝된 제품에 대한 작업을 사용하여 최종 사용자 환경을 테스트합니다.

## 사전 조건
<a name="service-actions-prerequisites"></a>

이 자습서에서는 전체 AWS 관리자 권한이 있고, 이미 익숙하며 AWS Service Catalog, 기본 제품, 포트폴리오 및 사용자 집합이 이미 있다고 가정합니다. 잘 모르는 경우이 자습서를 사용하기 전에 [설정](setup.md) 및 [시작하기](getstarted.md) 작업을 AWS Service Catalog완료하세요.

**Topics**
+ [사전 조건](#service-actions-prerequisites)
+ [1단계: 최종 사용자 권한 구성](#service-actions-configure-end-user-permissions)
+ [2단계: 서비스 작업 생성](#service-actions-create-new-service-action)
+ [3단계: 서비스 작업을 제품 버전과 연결](#service-actions-associate-with-product-version)
+ [4단계: 최종 사용자 환경 테스트](#service-actions-test-end-user-experience)
+ [5단계:를 사용하여 서비스 작업 관리 AWS CloudFormation](#service-actions-cloudformation)
+ [6단계: 문제 해결](#service-actions-troubleshooting)

## 1단계: 최종 사용자 권한 구성
<a name="service-actions-configure-end-user-permissions"></a>

최종 사용자 계정은 특정 서비스 작업을 보고 수행하는 데 필요한 권한이 있어야 합니다. 이 예제에서 최종 사용자는 AWS Service Catalog 서비스 작업 기능에 액세스하고 Amazon EC2 재시작을 수행할 수 있는 권한이 필요합니다.

**권한을 업데이트하는 방법**

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

1. 메뉴에서 사용자 그룹을 찾습니다.

1. 최종 사용자가 AWS Service Catalog 리소스에 액세스하는 데 사용할 그룹을 선택합니다. 이 예에서는 최종 사용자 그룹을 선택합니다. 실제 작업에서는, 해당 최종 사용자가 사용하는 그룹을 선택하십시오.

1. 그룹 세부 정보 페이지의 **권한** 탭에서 새 정책을 만들거나, 기존 정책을 편집합니다. 이 예제에서는 그룹의 AWS Service Catalog 프로비저닝 및 종료 권한에 대해 생성된 사용자 지정 정책을 선택하여 기존 정책에 권한을 추가합니다.

1. **정책** 페이지에서, **정책 편집**을 선택하여 필요한 권한을 추가합니다. 시각적 편집기 또는 JSON 편집기를 사용하여 정책을 편집할 수 있습니다. 이 예제에서는 JSON 편집기를 사용하여 권한을 추가합니다. 이 자습서에서는 정책에 다음 권한을 추가합니다.

------
#### [ JSON ]

****  

   ```
   {
   	"Version":"2012-10-17",		 	 	 
   	"Statement": [
   		{
   			"Sid": "Stmt1536341175150",
   			"Action": [
   				"servicecatalog:ListServiceActionsForProvisioningArtifact",
   				"servicecatalog:ExecuteprovisionedProductServiceAction",
   				"ssm:DescribeDocument",
   				"ssm:GetAutomationExecution",
   				"ssm:StartAutomationExecution",
   				"ssm:StopAutomationExecution",
   				"cloudformation:ListStackResources",
   				"ec2:DescribeInstanceStatus",
   				"ec2:StartInstances",
   				"ec2:StopInstances"
   			],
   			"Effect": "Allow",
   			"Resource": "*"
   		}
   	]
   }
   ```

------

1. 정책을 편집한 후 정책에 대한 변경 사항을 검토하고 승인합니다. 최종 사용자 그룹의 사용자는 이제 AWS Service Catalog에서 Amazon EC2를 다시 시작하는 데 필요한 권한을 갖게 됩니다.

## 2단계: 서비스 작업 생성
<a name="service-actions-create-new-service-action"></a>

이어서 Amazon EC2 인스턴스를 다시 시작하는 서비스 작업을 생성합니다.

1. [https://console.aws.amazon.com/sc/](https://console.aws.amazon.com/servicecatalog/) AWS Service Catalog 콘솔을 엽니다.

1. 메뉴에서 **서비스 작업**을 선택합니다.

1. **서비스 작업** 페이지에서 **새 작업 생성**을 선택합니다.

1. **작업 생성** 페이지에서 서비스 작업을 정의할 AWS Systems Manager 문서를 선택합니다. 인스턴스 다시 시작 작업이 AWS Systems Manager 문서에 정의되고, 드롭다운 메뉴에서 기본 옵션인 **Amazon EC2 문서**를 그대로 사용합니다.

1. **AWS-RestartEC2Instance** 작업을 검색하고 선택합니다.

1. 사용자의 환경과 팀에 맞게 작업 이름과 설명을 제공합니다. 최종 사용자에게 이 설명이 표시되므로 사용자가 어떤 작업을 수행하는지 이해할 수 있는 설명을 선택하십시오.

1. **파라미터 및 대상 구성**에서 작업의 대상이 될 문서 파라미터(예: **인스턴스 ID**)를 선택하고 파라미터의 대상을 선택합니다. 추가 파라미터를 추가하려면 **Add parameter(파라미터 추가)**를 선택합니다.

1. **Permissions(권한)**에서 역할을 선택합니다. 이 예제에서는 기본 권한을 사용하고 있습니다. 다른 권한 구성도 가능하며 이 페이지에서 정의합니다.

1. 구성을 검토했으면 **작업 생성**을 선택합니다.

1. 작업이 생성되고 사용할 수 있는 상태가 되면 다음 페이지에 확인 메시지가 표시됩니다.

## 3단계: 서비스 작업을 제품 버전과 연결
<a name="service-actions-associate-with-product-version"></a>

작업을 정의했으면 이 작업을 제품과 연결해야 합니다.

1. **서비스 작업** 페이지에서 **AWS AWS-RestartEC2instance**를 선택한 후 **작업 연결**을 선택합니다.

1. **Associate action(작업 연결)** 페이지에서 최종 사용자가 서비스 작업을 수행하게 할 제품을 선택합니다. 이 예에서는 **Linux Desktop**을 선택합니다.

1. 제품 버전을 선택합니다. 맨 위의 확인란을 사용하여 모든 버전을 선택할 수 있습니다.

1. **작업 연결**을 선택합니다.

1. 다음 페이지에 확인 메시지가 나타납니다.

이제 AWS Service Catalog에 서비스 작업이 생성되었습니다. 이 자습서의 다음 단계는 최종 사용자로서 서비스 작업을 사용하는 것입니다.

## 4단계: 최종 사용자 환경 테스트
<a name="service-actions-test-end-user-experience"></a>

최종 사용자는 프로비저닝된 제품에 대해 서비스 작업을 수행할 수 있습니다. 이 자습서에서는 최종 사용자에게 최소 한 개 이상의 제품이 프로비저닝되어야 합니다. 프로비저닝된 제품은 이전 단계에서 서비스 작업과 연결한 제품 버전에서 실행해야 합니다.

**최종 사용자로 서비스 작업에 액세스하려면**

1.  AWS Service Catalog 콘솔에 최종 사용자로 로그인합니다.

1.  AWS Service Catalog 대시보드의 탐색 창에서 **프로비저닝된 제품 목록을** 선택합니다. 목록에 최종 사용자의 계정에 프로비저닝된 제품이 표시됩니다.

1. **프로비저닝된 제품 목록** 페이지에서 프로비저닝된 인스턴스를 선택합니다.

1. **프로비저닝된 제품 세부 정보** 페이지의 상단 오른쪽에서 **작업**을 선택한 후 **AWS AWS-RestartEC2instance** 작업을 선택합니다.

1. 사용자 지정 작업을 실행할 것인지 확인합니다. 작업이 전송되었다는 확인 메시지가 나타납니다.

## 5단계:를 사용하여 서비스 작업 관리 AWS CloudFormation
<a name="service-actions-cloudformation"></a>

 서비스 작업 및 리소스와의 연결을 생성할 수 AWS CloudFormation 있습니다. 자세한 내용은 *AWS CloudFormation User Guide*의 다음 섹션을 참조하십시오.
+  [AWS::ServiceCatalog::CloudFormationProduct ProvisioningArtifactProperties](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-servicecatalog-cloudformationproduct-provisioningartifactproperties.html) 
+  [AWS::ServiceCatalog::ServiceActionAssociation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-servicecatalog-serviceactionassociation.html) 

**참고**  
 CloudFormation 리소스와의 서비스 작업 연결을 관리하는 경우 AWS Command Line Interface 또는를 통해 서비스 작업을 추가하거나 제거하지 마십시오 AWS Management Console. 스택 업데이트를 수행하면 CloudFormation 외부에서 이루어진 서비스 작업에 대한 모든 변경 사항이 교체됩니다.

## 6단계: 문제 해결
<a name="service-actions-troubleshooting"></a>

서비스 작업 실행이 실패할 경우 **프로비저닝된 제품** 페이지의 서비스 작업 실행 이벤트의 **출력** 섹션에서 오류 메시지를 찾을 수 있습니다. 아래에서 표시될 수 있는 일반적인 오류 메시지에 대한 설명을 볼 수 있습니다.

**참고**  
오류 메시지의 정확한 텍스트는 변경될 수 있으므로 모든 종류의 자동화된 프로세스에서는 이를 사용하지 않아야 합니다.

 **내부 오류**

AWS Service Catalog 에 내부 오류가 발생했습니다. 나중에 다시 시도해 주십시오. 오류가 계속될 경우 고객 지원 센터에 문의하십시오.

 **StartAutomationExecution 작업을 호출하는 중 오류(ThrottlingException)가 발생했습니다**

과 같은 백엔드 서비스에 의해 서비스 작업 실행이 제한되었습니다.

 **역할 수임 중 액세스가 거부되었습니다**

 AWS Service Catalog 가 서비스 작업 정의에 지정된 역할을 수임할 수 없습니다. *servicecatalog.amazonaws.com* 보안 주체 또는 *servicecatalog.us-east-1.amazonaws.com*와 같은 리전 보안 주체가 역할의 신뢰 정책에서 화이트리스트로 지정되었는지 확인합니다.

 **StartAutomationExecution 작업을 호출하는 중 오류(AccessDeniedException)가 발생했습니다. 사용자가 리소스에서 ssm:StartAutomationExecution을 수행할 권한이 없습니다.**

서비스 작업 정의에서 지정된 역할에 ssm:StartAutomationExecution을 호출할 권한이 없습니다. 역할에 적절한 SSM 권한이 있는지 확인합니다.

 **프로비저닝된 제품에서 *TargetType* 유형의 리소스를 찾을 수 없습니다**

프로비저닝된 제품에는 AWS::EC2::Instance와 같이 SSM 문서에 지정된 대상 유형과 일치하는 리소스가 포함되어 있지 않습니다. 프로비저닝된 제품에 이러한 리소스가 있는지 확인하거나 문서가 올바른지 확인합니다.

 **해당 이름의 문서가 존재하지 않습니다**

서비스 작업 정의에 지정된 문서가 존재하지 않습니다.

 **SSM 자동화 문서를 설명하지 못했습니다**

AWS Service Catalog 에서 지정된 문서를 설명하려고 할 때 SSM에서 알 수 없는 예외가 발생했습니다.

 **역할의 자격 증명을 검색하지 못했습니다**

AWS Service Catalog 에서 지정된 역할을 수임할 때 알 수 없는 오류가 발생했습니다.

 **파라미터에 *\$1ValidValue1\$1, \$1ValidValue2\$1*에서 찾을 수 없는 값 "*InvalidValue*"이 있습니다.**

 에 전달된 파라미터 값이 문서에 허용된 값 목록에 없습니다. 제공된 파라미터가 유효한지 확인하고 다시 시도합니다.

 **파라미터 유형 오류입니다. *ParameterName*으로 제공된 값이 유효한 문자열이 아닙니다.**

SSM에 전달된 파라미터 값이 문서에 있는 유형에 유효하지 않습니다.

 **파라미터가 서비스 작업 정의에 정의되어 있지 않습니다**

서비스 작업 정의에 정의되지 AWS Service Catalog 않은 파라미터가에 전달되었습니다. 서비스 작업 정의에 정의된 파라미터만 사용할 수 있습니다.

 **작업 실행/취소 시 단계가 실패합니다. *오류 메시지.* 자세한 진단 정보는 자동화 서비스 문제 해결 안내서를 참조하십시오.**

 SSM 자동화 문서에 있는 단계가 실패했습니다. 자세한 문제를 해결하려면 메시지의 오류를 참조하십시오.

 **다음 파라미터 값은 프로비저닝된 제품에 없으므로 허용되지 않습니다. *InvalidResourceId***

사용자가 프로비저닝된 제품에 없는 리소스에 대해 작업을 요청했습니다.

 **SSM 자동화 문서에 대해 TargetType이 정의되지 않았습니다**

서비스 작업이 TargetType을 정의하려면 SSM 자동화 문서가 필요합니다. SSM 자동화 문서를 확인합니다.

# 포트폴리오에 AWS Marketplace 제품 추가
<a name="catalogs_marketplace-products"></a>

포트폴리오에 AWS Marketplace 제품을 추가하여 최종 사용자가 해당 제품을 사용할 수 있도록 할 수 있습니다 AWS Service Catalog .

AWS Marketplace 는 다양한 소프트웨어 및 서비스를 찾고, 구독하고, 즉시 사용할 수 있는 온라인 저장소입니다. 의 제품 유형에는 데이터베이스, 애플리케이션 서버, 테스트 도구, 모니터링 도구, 콘텐츠 관리 도구 및 비즈니스 인텔리전스 소프트웨어가 AWS Marketplace 포함됩니다. AWS Marketplace 는에서 사용할 수 있습니다[https://aws.amazon.com/marketplace](https://aws.amazon.com/marketplace). 에서 로 서비스형 소프트웨어(SaaS) 제품을 추가할 수 없습니다 AWS Marketplace AWS Service Catalog.

템플릿을 사용하여 AWS Marketplace 제품을에 복사한 AWS Service Catalog다음 포트폴리오에 제품을 추가하여 AWS Service Catalog 최종 사용자에게 제품을 CloudFormation 배포합니다.

**참고**  
AWS Service Catalog 는 Terraform Open Source 또는 Terraform Cloud AWS Marketplace 제품 템플릿을 사용하여 AWS Service Catalog 최종 사용자에게 제품을 배포하는 것을 지원하지 않습니다.

AWS Marketplace 는 수동 옵션을 사용하여 제품을 AWS Service Catalog 직접 또는 구독하고 추가할 수 있도록 지원합니다. 특별히 설계된 기능을 사용하여 제품을 추가하는 것이 좋습니다 AWS Service Catalog.

## 를 사용하여 AWS Marketplace 제품 관리 AWS Service Catalog
<a name="catalogs_marketplace-sc"></a>

사용자 지정 인터페이스를 AWS Service Catalog 사용하여 구독한 AWS Marketplace 제품을에 직접 추가할 수 있습니다. [AWS Marketplace](https://aws.amazon.com/marketplace)에서 **서비스 카탈로그**를 선택합니다. 자세한 내용은 *AWS Marketplace 도움말 및 FAQ*에서 [AWS Service Catalog로 제품 복사](https://aws.amazon.com/marketplace/help/buyer-copy-product-to-SC?ref=help_ln_sibling) 섹션을 참조하십시오.

## 수동으로 AWS Marketplace 제품 관리 및 추가
<a name="catalogs_marketplace-manual"></a>

다음 단계를 완료하여 AWS Marketplace 제품을 구독 CloudFormation 하고 템플릿에서 해당 제품을 정의한 다음 AWS Service Catalog 포트폴리오에 템플릿을 추가합니다.

**AWS Marketplace 제품을 구독하려면**

1.  AWS Marketplace 의 로 이동합니다[https://aws.amazon.com/marketplace](https://aws.amazon.com/marketplace).

1. 제품을 찾아보거나 검색하여 AWS Service Catalog  포트폴리오에 추가하려는 제품을 찾습니다. 해당 제품을 선택하여 제품 세부 정보 페이지를 봅니다.

1. **계속**을 선택하여 실행 페이지를 확인한 후 **수동 시작** 탭을 선택합니다.

   이행 페이지의 정보에는 지원되는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스 유형, 지원되는 AWS 리전및 제품이 각 AWS 리전에 사용하는 Amazon Machine Image(AMI) ID가 포함됩니다. 일부 선택 사항에는 비용이 부과됩니다. 이 정보를 사용하여 이후 단계에서 CloudFormation 템플릿을 사용자 지정합니다.

1. **조건 수락**을 선택하여 제품을 구독합니다.

   제품을 구독한 후 소프트웨어를 선택한 다음 제품을 선택하여 AWS Marketplace 언제든지의 제품 이행 페이지에 있는 정보에 액세스할 수 **있습니다**.

**CloudFormation 템플릿에서 AWS Marketplace 제품을 정의하려면**

다음 단계를 완료하려면 CloudFormation 샘플 템플릿 중 하나를 시작점으로 사용하고 템플릿을 사용자 지정하여 제품을 나타냅니다 AWS Marketplace . 샘플 템플릿에 액세스하려면 *AWS CloudFormation 사용 설명서*의 [샘플 템플릿](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-sample-templates.html) 섹션을 참조하십시오.

1. * CloudFormation 사용 설명서*의 샘플 템플릿 페이지에서 제품의 AWS 리전을 선택합니다. AWS 리전은 AWS Marketplace 제품에서 지원되어야 합니다. AWS Marketplace의 제품 실행 페이지에서 지원되는 리전을 확인할 수 있습니다.

1. 해당 리전에 적합한 서비스 샘플 템플릿의 목록을 보려면 **서비스** 링크를 선택합니다.

1. 요구에 적합한 샘플을 시작점으로 사용할 수 있습니다. 이 절차 단계에서는 **보안 그룹 내 Amazon EC2 인스턴스** 템플릿을 사용합니다. 샘플 템플릿을 보려면 **보기**를 선택한 후 편집할 수 있도록 템플릿 사본을 로컬에 저장합니다. 로컬 파일의 확장명은 `.template`이어야 합니다.

1. 텍스트 편집기에서 템플릿 파일을 엽니다.

1. 템플릿 상단에 설명을 사용자 지정합니다. 설명은 다음 예와 같을 수 있습니다.

   `"Description": "Launches a LAMP stack from AWS Marketplace",`

1. 제품에서 지원하는 EC2 인스턴스 유형만 포함하도록 `InstanceType` 파라미터를 사용자 지정합니다. 템플릿에 지원되지 않는 EC2 인스턴스 유형이 포함된 경우, 최종 사용자는 제품을 시작할 수 없습니다.

   1. 의 제품 이행 페이지에서 **요금 세부 정보** 섹션에서 지원되는 EC2 인스턴스 유형을 AWS Marketplace확인합니다.  
![\[의 제품 이행 페이지의 요금 세부 정보 섹션에는 지원되는 EC2 인스턴스 유형이 AWS Marketplace 표시됩니다.\]](http://docs.aws.amazon.com/ko_kr/servicecatalog/latest/adminguide/images/ec2-ondemand.png)

   1. 템플릿에서 기본 인스턴스 유형을 원하는 지원되는 EC2 인스턴스 유형으로 변경합니다.

   1. 제품에서 지원하는 EC2 인스턴스 유형만 포함하도록 `AllowedValues` 목록을 편집합니다.

   1. 최종 사용자가 제품을 시작할 때 사용하지 못하게 할 EC2 인스턴스 유형을 `AllowedValues` 목록에서 제거합니다.

   `InstanceType` 파라미터 편집을 완료하면 다음 예제와 비슷할 것입니다.

   ```
       "InstanceType" : {
         "Description" : "EC2 instance type",
         "Type" : "String",
         "Default" : "m1.small",
         "AllowedValues" : [ "t1.micro", "m1.small", "m1.medium", "m1.large", "m1.xlarge", "m2.xlarge", "m2.2xlarge", "m2.4xlarge", "c1.medium", "c1.xlarge", "c3.large", "c3.large", "c3.xlarge", "c3.xlarge", "c3.4xlarge", "c3.8xlarge" ],
         "ConstraintDescription" : "Must be a valid EC2 instance type."
       },
   ```

1. 템플릿의 `Mappings` 섹션에서 지원되는 EC2 인스턴스 유형 및 아키텍처만 포함하도록 `AWSInstanceType2Arch` 매핑을 편집합니다.

   1. `InstanceType` 파라미터에 대해 `AllowedValues` 목록에 포함되지 않은 EC2 인스턴스 유형을 모두 제거하여 매핑 목록을 편집합니다.

   1. 제품에서 지원하는 아키텍처 유형이 되도록 각 EC2 인스턴스 유형에 대한 `Arch` 값을 편집합니다. 유효한 값은 `PV64`, `HVM64`, `HVMG2`입니다. 제품에서 지원하는 아키텍처를 알아보려면 AWS Marketplace의 제품 세부 정보 페이지를 참조하십시오. EC2 인스턴스 패밀리에서 지원하는 아키텍처를 알아보려면 [Amazon Linux AMI 인스턴스 유형 매트릭스](https://aws.amazon.com/amazon-linux-ami/instance-type-matrix/)를 참조하십시오.

   `AWSInstanceType2Arch` 매핑 편집을 완료하면 다음 예제와 비슷할 것입니다.

   ```
       "AWSInstanceType2Arch" : {
         "t1.micro"    : { "Arch" : "PV64"  },
         "m1.small"    : { "Arch" : "PV64"  },
         "m1.medium"   : { "Arch" : "PV64"  },
         "m1.large"    : { "Arch" : "PV64"  },
         "m1.xlarge"   : { "Arch" : "PV64"  },
         "m2.xlarge"   : { "Arch" : "PV64"  },
         "m2.2xlarge"  : { "Arch" : "PV64"  },
         "m2.4xlarge"  : { "Arch" : "PV64"  },
         "c1.medium"   : { "Arch" : "PV64"  },
         "c1.xlarge"   : { "Arch" : "PV64"  },
         "c3.large"    : { "Arch" : "PV64"  },
         "c3.xlarge"   : { "Arch" : "PV64"  },
         "c3.2xlarge"  : { "Arch" : "PV64"  },
         "c3.4xlarge"  : { "Arch" : "PV64"  },
         "c3.8xlarge"  : { "Arch" : "PV64"  }
       }
   ,
   ```

1. 템플릿의 `Mappings` 섹션에서 `AWSRegionArch2AMI` 매핑을 편집하여 각 AWS 리전을 제품의 해당 아키텍처 및 AMI ID와 연결합니다.

   1. 의 제품 이행 페이지에서 다음 예제와 같이 제품이 각 AWS 리전에 사용하는 AMI ID를 AWS Marketplace확인합니다.

         
![\[AWS Marketplace의 제품 실행 페이지의 리전 및 AMI ID 표입니다.\]](http://docs.aws.amazon.com/ko_kr/servicecatalog/latest/adminguide/images/sc-marketplace_ami_ids-console.png)

   1. 템플릿에서 지원하지 않는 AWS 리전에 대한 매핑을 제거합니다.

   1. 지원되지 않는 아키텍처(`PV64`, `HVM64` 또는 `HVMG2`) 및 연결된 AMI ID를 제거하도록 각 리전의 매핑을 편집합니다.

   1. 나머지 각 AWS 리전 및 아키텍처 매핑에 대해의 제품 세부 정보 페이지에서 해당 AMI ID를 지정합니다 AWS Marketplace.

   `AWSRegionArch2AMI` 매핑 편집을 완료하면 코드가 다음 예제와 비슷할 것입니다.

   ```
       "AWSRegionArch2AMI" : {
         "us-east-1"        : {"PV64" : "ami-nnnnnnnn"},
         "us-west-2"        : {"PV64" : "ami-nnnnnnnn"},
         "us-west-1"        : {"PV64" : "ami-nnnnnnnn"},
         "eu-west-1"        : {"PV64" : "ami-nnnnnnnn"},
         "eu-central-1"     : {"PV64" : "ami-nnnnnnnn"},
         "ap-northeast-1"   : {"PV64" : "ami-nnnnnnnn"},
         "ap-southeast-1"   : {"PV64" : "ami-nnnnnnnn"},
         "ap-southeast-2"   : {"PV64" : "ami-nnnnnnnn"},
         "sa-east-1"        : {"PV64" : "ami-nnnnnnnn"}
       }
   ```

   이제 템플릿을 사용하여 AWS Service Catalog 포트폴리오에 제품을 추가할 수 있습니다. 변경하고 싶은 사항이 더 있는 경우 [CloudFormation 템플릿 사용](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-guide.html)에서 템플릿에 대해 자세히 알아보십시오.

**AWS Service Catalog 포트폴리오에 AWS Marketplace 제품을 추가하려면**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/) AWS Service Catalog 관리자 콘솔로 이동합니다.

1. **포트폴리오** 페이지에서 AWS Marketplace  제품을 추가하려는 포트폴리오를 선택합니다.

1. 포트폴리오 세부 정보 페이지에서 **신규 제품 업로드** 탭을 선택합니다.

1. 요청한 제품 및 지원 세부 정보를 입력합니다.

1. **버전 세부 정보** 페이지에서 **템플릿 파일 업로드**, **탐색**, 템플릿 파일을 차례로 선택합니다.

1. 버전 제목과 설명을 입력합니다.

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

1. **검토** 페이지에서 설정이 올바른지 확인한 다음 **확인 및 업로드** 탭을 선택합니다. 포트폴리오에 제품이 추가됩니다. 이제 포트폴리오에 액세스할 수 있는 최종 사용자가 사용할 수 있습니다.

# CloudFormation StackSets 사용
<a name="using-stacksets"></a>

**참고**  
AutoTags는 현재 CloudFormation StackSets에서 지원되지 않습니다.

 CloudFormation StackSets를 사용하여 여러 AWS 리전 및 계정에서 AWS Service Catalog 제품을 시작할 수 있습니다. AWS 리전내에서 제품을 순차적으로 배포하는 순서를 지정할 수 있습니다. 계정 간에 제품은 병렬로 배포됩니다. 시작 시 사용자는 내결함성 및 병렬로 배포할 최대 계정 수를 지정할 수 있습니다. 자세한 내용은[CloudFormation StackSets 작업을 참조하세요](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html).

## 스택 세트와 스택 인스턴스 비교
<a name="stacksets-vs-stack-instances"></a>

*스택 세트를* 사용하면 단일 CloudFormation 템플릿을 사용하여 리전 간 AWS AWS 계정에서 스택을 생성할 수 있습니다.

*스택 인스턴스*는 AWS 리전 내에 있는 대상 계정의 스택을 의미하고, 단 하나의 스택 세트에만 연결됩니다.

자세한 내용은 [스택 세트 개념](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html)을 참조하십시오.

## 스택 세트 제약
<a name="stackset-constraints"></a>

에서 스택 세트 제약 조건을 사용하여 제품 배포 옵션을 구성할 AWS Service Catalog수 있습니다.

 AWS Service Catalog 는 2 AWS GovCloud (US) Regions: AWS GovCloud(미국 서부) 및 AWS GovCloud(미국 동부)의 제품에 대한 스택 세트 제약 조건을 지원합니다.

자세한 내용은 [AWS Service Catalog 스택 세트 개념](https://docs.aws.amazon.com/servicecatalog/latest/adminguide/constraints-stackset.html)을 참조하십시오.

# 예산 관리
<a name="catalogs_budgets"></a>

 AWS Budgets를 사용하여 서비스 비용 및 사용량을 추적할 수 있습니다 AWS Service Catalog. 예산을 AWS Service Catalog 제품 및 포트폴리오와 연결할 수 있습니다.

**참고**  
AWS Service Catalog 는 Terraform 오픈 소스 제품에 대한 예산을 지원하지 않습니다.

AWS Budgets를 사용하면 비용 또는 사용량이 예산 금액을 초과(또는 초과할 것으로 예상)할 때 알려주는 사용자 지정 예산을 설정할 수 있습니다. AWS Budgets에 대한 정보는에서 확인할 수 있습니다[https://aws.amazon.com/aws-cost-management/aws-budgets](https://aws.amazon.com/aws-cost-management/aws-budgets).

**Topics**
+ [사전 조건](#budgets-setup)
+ [예산 생성](#budgets-create)
+ [예산 연결](#budgets-associate)
+ [예산 보기](#budgets-view)
+ [예산 연결 해제](#budgets-disassociate)

## 사전 조건
<a name="budgets-setup"></a>

 AWS Budgets를 사용하기 전에 AWS 결제 및 비용 관리 콘솔에서 비용 할당 태그를 활성화해야 합니다. 태그 활성화에 대한 자세한 내용은AWS 결제 및 비용 관리 사용 설명서**에서 [사용자 정의 비용 할당 태그 활성화](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/activating-tags.html)를 참조하십시오.

**참고**  
태그가 활성화되는 데 최대 24시간이 소요됩니다.

또한 Budgets 기능을 사용할 사용자 또는 그룹에 대해 AWS 결제 및 비용 관리 콘솔에 대한 사용자 액세스를 활성화해야 합니다. 사용자를 위한 새 정책을 생성하면 이를 수행할 수 있습니다.

 사용자가 예산을 생성하도록 허용하려면 사용자가 결제 정보를 볼 수 있도록 허용해야 합니다. Amazon SNS 알림을 사용할 필요가 있다면 아래 정책 예제에서 보는 바와 같이 Amazon SNS 알림을 생성할 수 있는 기능을 사용자에게 제공할 수 있습니다.

**예산 정책을 생성하려면**

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

1. 탐색 창에서 **정책**을 선택합니다.

1. 콘텐츠 창에서 **정책 생성**을 선택합니다.

1. **JSON** 탭을 선택하고 다음 JSON 정책 문서에서 텍스트를 복사합니다. 이 텍스트를 **JSON** 텍스트 상자에 붙여 넣습니다.

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "Stmt1435216493000",
               "Effect": "Allow",
               "Action": [
                   "aws-portal:ViewBilling",
                   "aws-portal:ModifyBilling",
                   "budgets:ViewBudget",
                   "budgets:ModifyBudget"
               ],
               "Resource": [
                   "*"
               ]
           },
           {
               "Sid": "Stmt1435216552000",
               "Effect": "Allow",
               "Action": [
                   "sns:*"
               ],
               "Resource": [
                   "arn:aws:sns:us-east-1:123456789012:*"
               ]
           }
       ]
   }
   ```

------

1. 작업이 완료되면 **정책 검토**를 선택합니다. 정책 검증자가 모든 구문 오류를 보고합니다.

1. **검토** 페이지에서 사용 중인 정책에 이름을 지정합니다. 정책 **요약**을 검토하여 정책이 부여한 권한을 확인한 다음 **정책 생성**을 선택하여 작업을 저장합니다.

   새 정책이 관리형 정책 목록에 표시되며 사용자 및 그룹과 연결할 준비가 완료됩니다. 자세한 내용을 알아보려면 *AWS Identity and Access Management 사용 설명서*의 [고객 관리형 정책 생성 및 연결](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html#step2-attach-policy)을 참조하십시오.

## 예산 생성
<a name="budgets-create"></a>

 AWS Service Catalog 관리자 콘솔의 **제품 목록** 및 **포트폴리오** 페이지에는 기존 제품 및 포트폴리오에 대한 정보가 나열되며 이에 대한 조치를 취할 수 있습니다. 예산을 생성하려면 먼저 예산을 연결할 해당 제품 또는 포트폴리오를 결정하십시오.

**예산을 생성하려면**

1. Service Quotas 콘솔([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/))을 엽니다.

1.  **제품 목록** 또는 **포트폴리오**를 선택합니다.

1.  예산을 추가할 대상 제품 또는 포트폴리오를 선택합니다.

1.  **작업** 메뉴에서 **예산 생성**을 선택합니다.

1.  **예산 생성** 페이지에서 하나의 태그 유형을 예산에 연결합니다.

    태그는 2가지 유형 즉, AutoTag 및 TagOption으로 구분됩니다. AutoTag는 포트폴리오, 제품 및 제품을 시작한 사용자를 식별합니다. AWS Service Catalog 에서 이러한 태그를 프로비저닝된 리소스에 자동으로 적용합니다. TagOption은 AWS Service Catalog가 관리하는 관리자 정의 키-값 페어입니다.

    포트폴리오 또는 제품에서 발생하는 지출이 연결된 해당 예산에 반영되려면 동일한 태그가 있어야 합니다. 처음으로 사용되는 태그 키를 활성화하는 데 24시간이 걸릴 수 있습니다. 자세한 내용은 [사전 조건](#budgets-setup) 단원을 참조하십시오.

1.  **생성을 AWS Budgets** 선택합니다. **예산 설정** 페이지로 이동합니다. [예산 생성](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/budgets-create.html)을 단계적으로 실행하여 예산 설정을 계속 진행합니다.

**참고**  
 예산을 생성한 후에는 예산을 해당 제품 또는 포트폴리오에 연결해야 합니다.

## 예산 연결
<a name="budgets-associate"></a>

 각 포트폴리오 또는 제품에는 하나의 예산이 연결될 수 있습니다. 각 예산을 여러 포트폴리오 및 제품에 연결할 수 있습니다.

 예산을 포트폴리오 또는 제품에 연결하면 해당 포트폴리오 또는 제품의 세부 정보 페이지에서 예산에 관한 정보를 볼 수 있습니다. 포트폴리오나 제품에서 발생하는 지출이 예산에 반영되려면 해당 예산과 포트폴리오 또는 제품에 대해 동일한 태그를 연결해야 합니다.

**참고**  
 예산을 삭제해도 AWS Service Catalog 제품 및 포트폴리오와의 AWS Budgets기존 연결은 여전히 존재합니다. AWS Service Catalog 는 삭제된 예산에 대한 정보를 표시할 수 없습니다.

**예산을 연결하려면**

1. Service Quotas 콘솔([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/))을 엽니다.

1.  **제품 목록** 또는 **포트폴리오**를 선택합니다.

1.  예산을 연결할 대상 제품 또는 포트폴리오를 선택합니다.

1.  **작업** 메뉴에서 **예산 연결**을 선택합니다.

1.  **예산 연결** 페이지에서 기존 예산을 선택한 다음 **계속**을 선택합니다.

1.  **제품** 또는 **포트폴리오** 테이블은 방금 추가한 예산에 관한 데이터를 포함하게 됩니다.

## 예산 보기
<a name="budgets-view"></a>

 예산이 어떤 제품과 연결된 경우, **제품 세부 정보** 및 **제품 목록** 페이지에서 예산에 관한 정보를 볼 수 있습니다. 예산이 어떤 포트폴리오와 연결된 경우, **포트폴리오** 및 **포트폴리오 세부 정보** 페이지에서 예산에 관한 정보를 볼 수 있습니다.

 **포트폴리오** 및 **제품 목록** 페이지에서는 기존 리소스에 대한 예산 정보를 모두 표시합니다. **예산 대비 예상 비용** 및 **예산 비용 및 예상 비용**을 표시하는 열들을 볼 수 있습니다.

 제품 또는 포트폴리오를 선택하면 세부 정보 페이지로 이동합니다. **포트폴리오 세부 정보** 및 **제품 세부 정보** 페이지에는 연결된 예산에 관한 세부 정보가 수록된 섹션이 있습니다. 예산 금액, 현재 지출 및 예상 지출 내역을 볼 수 있습니다. 또한 예산 세부 정보를 보면서 예산을 편집할 수도 있습니다.

## 예산 연결 해제
<a name="budgets-disassociate"></a>

 포트폴리오 또는 제품에서 예산을 연결 해제할 수 있습니다.

**참고**  
 AWS Budgets에서 예산을 삭제해도 AWS Service Catalog 제품 및 포트폴리오와의 기존 연결은 여전히 존재합니다. AWS Service Catalog 는 삭제된 예산에 대한 정보를 표시할 수 없습니다.

**예산을 연결 해제하려면**

1. Service Quotas 콘솔([https://console.aws.amazon.com/servicecatalog/](https://console.aws.amazon.com/servicecatalog/))을 엽니다.

1.  **제품 목록** 또는 **포트폴리오**를 선택합니다.

1.  예산을 연결 해제할 대상 제품 또는 포트폴리오를 선택합니다.

1.  **작업**을 선택합니다. 드롭다운에서 **예산 연결 해제**를 선택합니다. 확인 알림이 나타납니다.

1.  제품 또는 포트폴리오에서 예산 삭제를 확인하면 **확인**을 선택합니다.