

지원 종료 알림: 2026년 10월 7일에 AWS 에 대한 지원이 종료됩니다 AWS Proton. 2026년 10월 7일 이후에는 AWS Proton 콘솔 또는 AWS Proton 리소스에 더 이상 액세스할 수 없습니다. 배포된 인프라는 그대로 유지됩니다. 자세한 내용은 [AWS Proton 서비스 사용 중단 및 마이그레이션 안내서](https://docs.aws.amazon.com/proton/latest/userguide/proton-end-of-support.html)를 참조하세요.

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

# AWS Proton 템플릿
<a name="ag-templates"></a>

템플릿 라이브러리에 AWS Proton 템플릿 번들을 추가하려면 템플릿 마이너 버전을 생성하여에 등록합니다 AWS Proton. 템플릿 생성 시 S3 버킷의 이름과 템플릿 번들 경로를 제공합니다. 템플릿이 게시되면 플랫폼 팀 구성원과 개발자가 템플릿을 선택할 수 있습니다. 선택한 후 템플릿을 AWS Proton 사용하여 인프라 및 애플리케이션을 생성하고 프로비저닝합니다.

관리자는 환경 템플릿을 생성하고 등록할 수 있습니다 AWS Proton. 그런 다음 이 환경 템플릿을 사용하여 여러 환경을 배포할 수 있습니다. 예를 들어, "dev", "스테이징" 및 "prod" 환경을 배포하는 데 사용할 수 있습니다. "개발" 환경에는 프라이빗 서브넷이 있는 VPC와 모든 리소스에 대한 제한적인 액세스 정책이 포함될 수 있습니다. 환경 출력은 서비스의 입력으로 사용할 수 있습니다.

환경 템플릿을 만들고 등록하여 서로 다른 두 가지 유형의 환경을 만들 수 있습니다. 사용자와 개발자 모두 AWS Proton 를 사용하여 두 유형 모두에 서비스를 배포할 수 있습니다.
+ 가 환경 인프라를 프로비저닝하고 관리하는 *표준* 환경을 생성하는 데 AWS Proton 사용하는 *표준* 환경 템플릿을 등록하고 게시합니다.
+ 가 기존 프로비저닝된 인프라에 연결하는 *고객 관리*형 환경을 생성하는 데 AWS Proton 사용하는 고객 관리형 환경 템플릿을 등록하고 게시합니다. AWS Proton *는 기존 프로비저닝된 인프라를 관리하지 않습니다*.

에 서비스 템플릿을 생성하고 등록 AWS Proton 하여 환경에 서비스를 배포할 수 있습니다. 서비스를 배포하려면 먼저 AWS Proton 환경을 생성해야 합니다.

다음 목록은를 사용하여 템플릿을 생성하고 관리하는 방법을 설명합니다 AWS Proton.
+ (선택 사항) AWS Proton API 호출 및 IAM 서비스 역할에 대한 개발자 액세스를 제어하는 AWS Proton IAM 역할을 준비합니다. 자세한 내용은 [IAM 역할](ag-environment-roles.md) 단원을 참조하십시오.
+ 템플릿 번들을 작성합니다. 자세한 내용은 [템플릿 번들](ag-template-authoring.md#ag-template-bundles) 단원을 참조하십시오.
+ 템플릿 번들을 Amazon S3 버킷에 구성, 압축 및 저장한 AWS Proton 후에 템플릿을 생성하고 등록합니다. 이 작업은 콘솔에서 또는 AWS CLI를 사용하여 수행할 수 있습니다.
+ 템플릿을 테스트하고 사용하여에 등록한 후 AWS Proton 프로비저닝된 리소스를 생성하고 관리합니다 AWS Proton.
+ 템플릿 수명 주기 내내 템플릿의 메이저 버전과 마이너 버전을 만들고 관리할 수 있습니다.

템플릿 버전을 수동으로 관리하거나 템플릿 동기화 구성을 사용하여 관리할 수 있습니다.
+  AWS Proton 콘솔 및를 사용하여 새 마이너 또는 메이저 버전을 AWS CLI 생성합니다.
+ 정의한 리포지토리에서 [템플릿 번들에 대한 변경을 감지하면에서 새 마이너 또는 메이저 버전을 자동으로 생성할 수 있는 템플릿 동기화 구성을 생성합니다](create-template-sync.md). AWS Proton 

자세한 내용은 [https://docs.aws.amazon.com/proton/latest/APIReference/Welcome.html](https://docs.aws.amazon.com/proton/latest/APIReference/Welcome.html) 참조를 참조하세요.

**Topics**
+ [버전이 지정된 템플릿](ag-template-versions.md)
+ [템플릿 등록 및 게시](template-create.md)
+ [템플릿 데이터 보기](template-view.md)
+ [템플릿 업데이트](template-update.md)
+ [템플릿 삭제](template-delete.md)
+ [템플릿 동기화 구성](ag-template-sync-configs.md)
+ [서비스 동기화 구성](ag-service-sync-configs.md)

# 버전이 지정된 템플릿
<a name="ag-template-versions"></a>

관리자 또는 플랫폼 팀의 구성원은 인프라 리소스를 프로비저닝하는 데 사용되는 버전이 지정된 템플릿 라이브러리를 정의, 생성 및 관리합니다. 템플릿 버전에는 마이너 버전과 메이저 버전의 두 가지 유형이 있습니다.
+ *마이너 버전* — 이전 버전과 호환되는 스키마가 있는 템플릿에 대한 변경. 이러한 변경을 위해 개발자는 새 템플릿 버전으로 업데이트할 때 새 정보를 제공할 필요가 없습니다.

  마이너 버전을 변경하려고 하면 AWS Proton 는 새 버전의 스키마가 템플릿의 이전 마이너 버전과 이전 버전과 호환되는지 여부를 확인하기 위해 최선을 다합니다. 새 스키마가 이전 버전과 호환되지 않는 경우는 새 마이너 버전 등록에 AWS Proton 실패합니다.
**참고**  
호환성은 전적으로 schema를 기반으로 결정됩니다. AWS Proton 는 템플릿 번들 코드형 인프라(IaC) 파일이 이전 마이너 버전과 호환되는지 확인하지 않습니다. 예를 들어 AWS Proton 는 새 IaC 파일이 이전 마이너 버전의 템플릿으로 프로비저닝된 인프라에서 실행 중인 애플리케이션에 대한 주요 변경 사항을 유발하는지 확인하지 않습니다.
+ *메이저 버전* - 이전 버전과 호환되지 않을 수 있는 템플릿 변경 내용. 이러한 변경에는 일반적으로 개발자의 새로운 입력이 필요하며 템플릿 스키마 변경이 수반되는 경우가 많습니다.

  팀의 운영 모델에 따라 이전 버전과 호환되는 변경 내용을 메이저 버전으로 지정할 수도 있습니다.

는 템플릿 버전 요청이 마이너 버전인지 메이저 버전인지 AWS Proton 를 결정하는 방법은 템플릿 변경 사항을 추적하는 방법에 따라 달라집니다.
+ 새 템플릿 버전 생성을 명시적으로 요청하는 경우 메이저 버전 번호를 지정하여 메이저 버전을 요청하고 메이저 버전 번호를 지정하지 않음으로써 마이너 버전을 요청합니다.
+ [템플릿 동기화](ag-template-sync-configs.md)를 사용하는 경우(따라서 명시적 템플릿 버전 요청을 하지 않는 경우)는 기존 YAML 파일에서 발생하는 템플릿 변경에 대해 새 마이너 버전을 생성하려고 AWS Proton 시도합니다.는 새 템플릿 변경에 대해 새 디렉터리를 생성할 때 메이저 버전을 AWS Proton 생성합니다(예: v1에서 v2로 이동).
**참고**  
에서 변경 사항이 이전 버전과 호환되지 않는다고 AWS Proton 판단하더라도 템플릿 동기화를 기반으로 한 새 마이너 버전 등록은 여전히 실패합니다.

템플릿의 새 버전을 게시할 때 가장 높은 메이저 버전과 마이너 버전인 경우 해당 버전은 **권장** 버전이 됩니다. 새 AWS Proton 리소스는 새 권장 버전을 사용하여 생성되며, 관리자에게 새 버전을 사용하고 오래된 버전을 사용하는 기존 AWS Proton 리소스를 업데이트하라는 AWS Proton 메시지를 표시합니다.

# 템플릿 등록 및 게시
<a name="template-create"></a>

다음 섹션에 설명된 AWS Proton대로 환경 및 서비스 템플릿을에 등록하고 게시할 수 있습니다.

콘솔 또는를 사용하여 템플릿의 새 버전을 생성할 수 있습니다 AWS CLI.

또는 콘솔 또는를 사용하여 템플릿을 AWS CLI 생성하고 이에 대한 [템플릿 동기화 구성을](ag-template-sync-configs.md) 구성할 수 있습니다. 이 구성을 사용하면 정의한 등록된 git 리포지토리에 있는 템플릿 번들에서 AWS Proton 동기화할 수 있습니다. 템플릿 중 하나를 변경하는 템플릿 리포지토리로 커밋이 푸시될 때마다(해당 버전이 아직 없는 경우) 새 템플릿 마이너 또는 메이저 버전이 생성됩니다. 템플릿 동기화 구성 사전 요구 사항 및 요구 사항에 대한 자세한 내용은 [템플릿 동기화 구성](ag-template-sync-configs.md)을 참조하세요.

## 환경 템플릿 등록 및 게시
<a name="env-template-v1"></a>

다음 유형의 환경 템플릿을 등록하고 게시할 수 있습니다.
+ 가 환경 인프라를 배포하고 관리하는 데 AWS Proton 사용하는 *표준* 환경 템플릿을 등록하고 게시합니다.
+ 가 관리하는 기존 프로비저닝된 인프라에 연결하는 데 AWS Proton 사용하는 *고객 관리*형 환경 템플릿을 등록하고 게시합니다. AWS Proton *기존 프로비저닝된 인프라를 관리하지 않습니다*.

**중요**  
관리자는 프로비저닝 및 관리형 인프라와 모든 출력 파라미터가 연결된 *고객 관리*형 환경 템플릿과 호환되는지 확인합니다. 이러한 변경 사항은 표시되지 않으므로는 사용자를 대신하여 변경 사항을 AWS Proton 설명할 수 없습니다 AWS Proton. 불일치로 인해 장애가 발생합니다.

콘솔 또는를 사용하여 환경 템플릿을 등록하고 게시 AWS CLI 할 수 있습니다.

------
#### [ AWS Management Console ]

**콘솔을 사용하여 새 환경 템플릿을 등록할 수 있습니다.**

1. [AWS Proton 콘솔](https://console.aws.amazon.com//proton/)에서 **환경 템플릿**을 선택합니다.

1. **환경 템플릿 생성**을 선택합니다.

1. **환경 템플릿 생성** 페이지의 **템플릿 옵션** 단원에서 사용 가능한 두 가지 템플릿 옵션 중 하나를 선택합니다.
   + **새 환경을 프로비저닝하기 위한 템플릿을 생성합니다**.
   + **관리하는 프로비저닝된 인프라를 사용할 템플릿을 생성합니다**.

1. **새 환경을 프로비저닝을 위한 템플릿 생성**을 선택한 경우 **템플릿 번들 소스** 단원에서 사용 가능한 세 가지 템플릿 번들 소스 옵션 중 하나를 선택합니다. 템플릿 동기화 요구 사항 및 사전 요구 사항에 대한 자세한 내용은 [템플릿 동기화 구성](ag-template-sync-configs.md)을 참조하세요.
   + **샘플 템플릿 번들 중 하나 사용**.
   + **자체 템플릿 번들 사용**.
   + **[Git에서 템플릿 동기화](ag-template-sync-configs.md)**.

1. 

**템플릿 번들 경로를 제공하세요.**

   1. **샘플 템플릿 번들 중 하나 사용**을 선택했다면

      **샘플 템플릿 번들** 단원에서 샘플 템플릿 번들을 선택합니다.

   1. **소스 코드** 단원에서 **Git에서 템플릿 동기화** 선택한 경우,

      1. 템플릿 동기화 구성을 위한 리포지토리를 선택합니다.

      1. 동기화할 리포지토리 브랜치의 이름을 입력합니다.

      1. (선택 사항) 템플릿 번들 검색을 제한하려면 디렉터리 이름을 입력합니다.

   1. 그렇지 않으면 **S3 번들 위치** 단원에서 템플릿 번들 경로를 제공하세요.

1. **템플릿 세부 정보** 단원에서.

   1. **템플릿 이름**을 입력합니다.

   1. (선택 사항) **템플릿 표시 이름**을 입력합니다.

   1. (선택 사항) 환경 템플릿에 대한 **템플릿 설명**을 입력합니다.

1. (선택 사항) **암호화 설정** 단원에서 **암호화 설정 사용자 지정(고급)** 확인란을 선택하여 고유한 암호화 키를 제공하세요.

1. (선택 사항) **태그** 단원에서 **새 태그 추가** 를 선택하고 키와 값을 입력하여 고객 관리형 태그를 생성합니다.

1. **환경 템플릿 생성**을 선택합니다.

   이제 새 환경 템플릿의 상태 및 세부 정보를 표시하는 새 페이지가 열립니다. 이러한 세부 정보에는 AWS 및 고객 관리형 태그 목록이 포함됩니다.는 AWS Proton 리소스를 생성할 때 AWS 관리형 태그를 AWS Proton 자동으로 생성합니다. 자세한 내용은 [AWS Proton 리소스 및 태그 지정](resources.md) 단원을 참조하십시오.

1. 새 환경 템플릿 상태의 상태는 **초안** 상태에서 시작됩니다. 사용자 및 `proton:CreateEnvironment` 권한이 있는 다른 사용자가 보고 액세스할 수 있습니다. 다음 단계에 따라 다른 사람이 템플릿을 사용할 수 있도록 합니다.

1. **템플릿 버전** 단원에서 방금 만든 템플릿의 마이너 버전 왼쪽에 있는 라디오 버튼 (1.0) 을 선택합니다. 또는 정보 알림에서 **게시**를 선택하고 다음 단계를 건너뛸 수도 있습니다.

1. **템플릿 버전** 단원에서 **게시**를 선택합니다.

1. 템플릿 상태가 **게시됨**으로 변경됩니다. 템플릿의 최신 버전이므로 **권장** 버전입니다.

1. 탐색 창에서 **환경 템플릿**을 선택하여 환경 템플릿 및 세부 정보 목록을 확인합니다.

**콘솔을 사용하여 환경 템플릿의 새 메이저 버전 및 마이너 버전을 등록할 수 있습니다.**

자세한 내용은 [버전이 지정된 템플릿](ag-template-versions.md) 단원을 참조하세요.

1. [AWS Proton 콘솔](https://console.aws.amazon.com//proton/)에서 **환경 템플릿**을 선택합니다.

1. 환경 템플릿 목록에서 메이저 또는 마이너 버전을 만들 환경 템플릿의 이름을 선택합니다.

1. 환경 템플릿 세부 정보 보기의 **템플릿 버전** 단원에서 **새 버전 생성**을 선택합니다.

1. **새 환경 템플릿 버전 생성** 페이지의 **템플릿 번들 옵션** 단원에서 사용 가능한 두 가지 템플릿 번들 소스 옵션 중 하나를 선택합니다.
   + **샘플 템플릿 번들 중 하나 사용**.
   + **자체 템플릿 번들 사용**.

1. 선택된 템플릿 번들 경로를 제공하세요.
   + **샘플 템플릿 번들 중 하나 사용**을 선택한 경우 **샘플 템플릿 번들** 단원에서 샘플 템플릿 번들을 선택합니다.
   + **자체 템플릿 번들 사용**을 선택한 경우 **S3 번들 위치** 단원에서 템플릿 번들 경로를 선택합니다.

1. **템플릿 세부 정보** 단원에서.

   1. (선택 사항) **템플릿 표시 이름**을 입력합니다.

   1. (선택 사항) 서비스 템플릿에 대한 **템플리 설명**을 입력합니다.

1. **템플릿 세부 정보** 단원에서 다음 옵션 중 하나를 선택합니다.
   + 마이너 버전을 만들려면 **새 메이저 버전 생성 체크** 확인란을 비워 두십시오.
   + 메이저 버전을 만들려면 **새 메이저 버전 생성 체크** 확인란을 선택하세요.

1. 콘솔 단계를 계속 진행하여 새 마이너 또는 메이저 버전을 만들고 **새 버전 생성**을 선택합니다.

------
#### [ AWS CLI ]

**CLI를 사용하여 다음 단계에 표시된 대로 새 환경 템플릿을 등록하고 게시합니다.**

1. 지역, 이름, 표시 이름(선택 사항) 및 설명(선택 사항)을 지정하여 *표준* 또는 *고객 관리형* 환경 템플릿을 생성합니다.

   1. *표준* 환경 템플릿을 생성합니다.

      다음 명령을 실행합니다.

      ```
      $ aws proton create-environment-template \
          --name "simple-env" \
          --display-name "Fargate" \
          --description "VPC with public access"
      ```

      응답:

      ```
      {
          "environmentTemplate": {
              "arn": "arn:aws:proton:region-id:123456789012:environment-template/simple-env",
              "createdAt": "2020-11-11T23:02:45.336000+00:00",
              "description": "VPC with public access",
              "displayName": "VPC",
              "lastModifiedAt": "2020-11-11T23:02:45.336000+00:00",
              "name": "simple-env"
          }
      }
      ```

   1. `provisioning` 파라미터에 `CUSTOMER_MANAGED`값을 추가하여 *고객 관리형* 환경 템플릿을 생성합니다.

      다음 명령을 실행합니다.

      ```
      $ aws proton create-environment-template \
          --name "simple-env" \
          --display-name "Fargate" \
          --description "VPC with public access" \
          --provisioning "CUSTOMER_MANAGED"
      ```

      응답:

      ```
      {
          "environmentTemplate": {
              "arn": "arn:aws:proton:region-id:123456789012:environment-template/simple-env",
              "createdAt": "2020-11-11T23:02:45.336000+00:00",
              "description": "VPC with public access",
              "displayName": "VPC",
              "lastModifiedAt": "2020-11-11T23:02:45.336000+00:00",
              "name": "simple-env",
              "provisioning": "CUSTOMER_MANAGED"
          }
      }
      ```

1. 

**환경 템플릿의 메이저 버전 1의 마이너 버전 0을 생성합니다.**

   이 단계와 나머지 단계는 *표준* 및 *고객 관리형* 환경 템플릿 모두에서 동일합니다.

   템플릿 이름, 메이저 버전, 환경 템플릿 번들이 포함된 버킷의 S3 버킷 이름 및 키를 포함하세요.

   다음 명령을 실행합니다.

   ```
   $ aws proton create-environment-template-version \
       --template-name "simple-env" \
       --description "Version 1" \
       --source s3="{bucket=your_s3_bucket, key=your_s3_key}"
   ```

   응답:

   ```
   {
       "environmentTemplateVersion": {
           "arn": "arn:aws:proton:region-id:123456789012:environment-template/simple-env:1.0",
           "createdAt": "2020-11-11T23:02:47.763000+00:00",
           "description": "Version 1",
           "lastModifiedAt": "2020-11-11T23:02:47.763000+00:00",
           "majorVersion": "1",
           "minorVersion": "0",
           "status": "REGISTRATION_IN_PROGRESS",
           "templateName": "simple-env"
       }
   }
   ```

1. get 명령을 사용하여 등록 상태를 확인합니다.

   다음 명령을 실행합니다.

   ```
   $ aws proton get-environment-template-version \
       --template-name "simple-env" \
       --major-version "1" \
       --minor-version "0"
   ```

   응답:

   ```
   {
       "environment": {
           "arn": "arn:aws:proton:region-id:123456789012:environment-template/simple-env:1.0",
           "createdAt": "2020-11-11T23:02:47.763000+00:00",
           "description": "Version 1",
           "lastModifiedAt": "2020-11-11T23:02:47.763000+00:00",
           "majorVersion": "1",
           "minorVersion": "0",
           "recommendedMinorVersion": "0",
           "schema": "schema:\n  format:\n    openapi: \"3.0.0\"\n  environment_input_type: \"MyEnvironmentInputType\"\n  types:\n    MyEnvironmentInputType:\n      type: object\n      description: \"Input properties for my environment\"\n      properties:\n        my_sample_input:\n          type: string\n          description: \"This is a sample input\"\n          default: \"hello world\"\n        my_other_sample_input:\n          type: string\n          description: \"Another sample input\"\n      required:\n        - my_other_sample_input\n",
           "status": "DRAFT",
           "statusMessage": "",
           "templateName": "simple-env"
       }
   }
   ```

1. 템플릿 이름과 메이저 및 마이너 버전을 제공하여 환경 템플릿의 메이저 버전 1의 마이너 버전 0을 게시합니다. 이 버전이 `Recommended` 버전입니다.

   다음 명령을 실행합니다.

   ```
   $ aws proton update-environment-template-version \
       --template-name "simple-env" \
       --major-version "1" \
       --minor-version "0" \
       --status "PUBLISHED"
   ```

   응답:

   ```
   {
       "environmentTemplateVersion": {
           "arn": "arn:aws:proton:region-id:123456789012:environment-template/simple-env:1.0",
           "createdAt": "2020-11-11T23:02:47.763000+00:00",
           "description": "Version 1",
           "lastModifiedAt": "2020-11-11T23:02:54.610000+00:00",
           "majorVersion": "1",
           "minorVersion": "0",
           "recommendedMinorVersion": "0",
           "schema": "schema:\n  format:\n    openapi: \"3.0.0\"\n  environment_input_type: \"MyEnvironmentInputType\"\n  types:\n    MyEnvironmentInputType:\n      type: object\n      description: \"Input properties for my environment\"\n      properties:\n        my_sample_input:\n          type: string\n          description: \"This is a sample input\"\n          default: \"hello world\"\n        my_other_sample_input:\n          type: string\n          description: \"Another sample input\"\n      required:\n        - my_other_sample_input\n",
           "status": "PUBLISHED",
           "statusMessage": "",
           "templateName": "simple-env"
       }
   }
   ```

를 사용하여 새 템플릿을 생성한 후 AWS 및 고객 관리형 태그 목록을 볼 AWS CLI수 있습니다.는 AWS 관리형 태그를 AWS Proton 자동으로 생성합니다. AWS CLI를 사용하여 고객 관리 태그를 수정하고 생성할 수도 있습니다. 자세한 내용은 [AWS Proton 리소스 및 태그 지정](resources.md) 단원을 참조하십시오.

다음 명령을 실행합니다.

```
$ aws proton list-tags-for-resource \
    --resource-arn "arn:aws:proton:region-id:123456789012:environment-template/simple-env"
```

------

## 서비스 템플릿 등록 및 게시
<a name="svc-template-v1"></a>

서비스 템플릿 버전을 만들 때 호환되는 환경 템플릿의 목록을 지정합니다. 이렇게 하면 개발자가 서비스 템플릿을 선택할 때 서비스를 배포할 환경을 선택할 수 있습니다.

서비스 템플릿에서 서비스를 만들거나 서비스 템플릿을 게시하기 전에 나열된 호환 가능한 환경 템플릿에서 환경이 배포되었는지 확인하세요.

제거된 호환 환경 템플릿으로 구축된 환경에 서비스를 배포한 경우 서비스를 새 메이저 버전으로 업데이트할 수 *없습니다*.

서비스 템플릿 버전에 호환되는 환경 템플릿을 추가하거나 제거하려면 새 메이저 버전을 만들어야 합니다.

콘솔 또는를 사용하여 서비스 템플릿을 등록하고 게시 AWS CLI 할 수 있습니다.

------
#### [ AWS Management Console ]

**콘솔을 사용하여 새 서비스 템플릿을 등록하고 게시할 수 있습니다.**

1. [AWS Proton 콘솔](https://console.aws.amazon.com//proton/)에서 **서비스 템플릿**을 선택합니다.

1. **서비스 템플릿 생성**을 선택합니다.

1. **서비스 템플릿 생성** 페이지의 **템플릿 번들 소스 옵션** 단원에서 사용 가능한 두 가지 템플릿 옵션 중 하나를 선택합니다.
   + **자체 템플릿 번들 사용**.
   + **Git에서 템플릿 동기화**.

1. 

**템플릿 번들 경로를 제공하세요.**

   1. **소스 코드 리포지토리** 단원에서 **Git에서 템플릿 동기화**를 선택한 경우,

      1. 템플릿 동기화 구성을 위한 리포지토리를 선택합니다.

      1. 동기화할 리포지토리 브랜치의 이름을 입력합니다.

      1. (선택 사항) 템플릿 번들 검색을 제한하려면 디렉터리 이름을 입력합니다.

   1. 그렇지 않으면 **S3 번들 위치** 단원에서 템플릿 번들 경로를 제공하세요.

1. **템플릿 세부 정보** 단원에서.

   1. **템플릿 이름**을 입력합니다.

   1. (선택 사항) **템플릿 표시 이름**을 입력합니다.

   1. (선택 사항) 서비스 템플릿에 대한 **템플리 설명**을 입력합니다.

1. **호환 가능한 환경 템플릿** 단원에서 호환 가능한 환경 템플릿 목록에서 선택합니다.

   

1. (선택 사항) **암호화 설정** 단원에서 **암호화 설정 사용자 지정(고급)**을 선택하여 고유한 암호화 키를 제공하세요.

1. (선택 사항) **파이프라인** 단원에서,

   서비스 템플릿에 서비스 파이프라인 정의를 포함하지 않는 경우 페이지 하단에 있는 **파이프라인 - 선택 사항** 확인란의 선택을 취소합니다. 대상 그룹을 생성한 후에는 이 설정을 변경할 수 *없습니다*. 자세한 내용은 [템플릿 번들](ag-template-authoring.md#ag-template-bundles) 단원을 참조하세요.

1. (선택 사항) **지원되는 구성 요소 소스** 섹션의 **구성 요소 소스**에서 **직접 정의**를 선택하여 직접 정의된 구성 요소를 서비스 인스턴스에 연결할 수 있도록 합니다.

1. (선택 사항) **태그** 단원에서 **새 태그 추가** 를 선택하고 키와 값을 입력하여 고객 관리형 태그를 생성합니다.

1. **서비스 템플릿 생성**을 선택합니다.

   이제 새 서비스 템플릿의 상태와 세부 정보가 표시되는 새 페이지가 열립니다. 이러한 세부 정보에는 AWS 및 고객 관리형 태그 목록이 포함됩니다.는 AWS Proton 리소스를 생성할 때 AWS 관리형 태그를 AWS Proton 자동으로 생성합니다. 자세한 내용은 [AWS Proton 리소스 및 태그 지정](resources.md) 단원을 참조하십시오.

1. 새 서비스 템플릿 상태의 상태는 **초안** 상태에서 시작됩니다. 사용자 및 `proton:CreateService` 권한이 있는 다른 사용자가 보고 액세스할 수 있습니다. 다음 단계에 따라 다른 사람이 템플릿을 사용할 수 있도록 합니다.

1. **템플릿 버전** 단원에서 방금 만든 템플릿의 마이너 버전 왼쪽에 있는 라디오 버튼 (1.0) 을 선택합니다. 또는 정보 알림에서 **게시**를 선택하고 다음 단계를 건너뛸 수도 있습니다.

1. **템플릿 버전** 단원에서 **게시**를 선택합니다.

1. 템플릿 상태가 **게시됨**으로 변경됩니다. 템플릿의 최신 버전이므로 **권장** 버전입니다.

1. 탐색 창에서 **서비스 템플릿**을 선택하여 서비스 템플릿 및 세부 정보 목록을 확인합니다.

**콘솔을 사용하여 서비스 템플릿의 새 메이저 버전 및 마이너 버전을 등록할 수 있습니다.**

자세한 내용은 [버전이 지정된 템플릿](ag-template-versions.md) 단원을 참조하세요.

1. [AWS Proton 콘솔](https://console.aws.amazon.com//proton/)에서 **서비스 템플릿**을 선택합니다.

1. 서비스 템플릿 목록에서 메이저 또는 마이너 버전을 만들 서비스 템플릿의 이름을 선택합니다.

1. 서비스 템플릿 세부 정보 보기의 **템플릿 버전** 단원에서 **새 버전 생성**을 선택합니다.

1. **새 서비스 템플릿 버전 생성** 페이지의 **번들 소스** 단원에서 **자체 템플릿 번들 사용**을 선택합니다.

1. **S3 번들 위치** 단원에서 템플릿 번들 경로를 선택합니다.

1. **템플릿 세부 정보** 단원에서.

   1. (선택 사항) **템플릿 표시 이름**을 입력합니다.

   1. (선택 사항) 서비스 템플릿에 대한 **템플리 설명**을 입력합니다.

1. **템플릿 세부 정보** 단원에서 다음 옵션 중 하나를 선택합니다.
   + 마이너 버전을 만들려면 **새 메이저 버전 생성 체크** 확인란을 비워 두십시오.
   + 메이저 버전을 만들려면 **새 메이저 버전 생성 체크** 확인란을 선택하세요.

1. 콘솔 단계를 계속 진행하여 새 마이너 또는 메이저 버전을 만들고 **새 버전 생성**을 선택합니다.

------
#### [ AWS CLI ]

서비스 파이프라인 없이 서비스를 배포하는 서비스 템플릿을 만들려면 `create-service-template` 명령에 파라미터와 값 `--pipeline-provisioning "CUSTOMER_MANAGED"`을 추가합니다. [템플릿 번들](ag-template-authoring.md#ag-template-bundles) 생성 및 [서비스 템플릿 번들에 대한 스키마 요구 사항](ag-schema.md#schema-req-svc)의 설명에 따라 템플릿 번들을 구성하세요.

**참고**  
서비스 그룹을 생성한 후에는 `pipelineProvisioning`을 변경할 수 없습니다.

1. 

**다음 단계에 표시된 대로 CLI를 사용하여 서비스 파이프라인 유무에 관계없이 새 서비스 템플릿을 등록하고 게시할 수 있습니다.**

   1. 

**CLI를 사용하여 서비스 파이프라인으로 서비스 템플릿을 생성합니다.**

      이름, 표시 이름 (선택 사항) 및 설명 (선택 사항) 을 지정합니다.

      다음 명령을 실행합니다.

      ```
      $ aws proton create-service-template \
          --name "fargate-service" \
          --display-name "Fargate" \
          --description "Fargate-based Service"
      ```

      응답:

      ```
      {
          "serviceTemplate": {
              "arn": "arn:aws:proton:region-id:123456789012:service-template/fargate-service",
              "createdAt": "2020-11-11T23:02:55.551000+00:00",
              "description": "Fargate-based Service",
              "displayName": "Fargate",
              "lastModifiedAt": "2020-11-11T23:02:55.551000+00:00",
              "name": "fargate-service"
          }
      }
      ```

   1. 

**서비스 파이프라인 없이 서비스 템플릿을 생성합니다.**

      `--pipeline-provisioning`를 추가합니다.

      다음 명령을 실행합니다.

      ```
      $ aws proton create-service-template \
          --name "fargate-service" \
          --display-name "Fargate" \
          --description "Fargate-based Service" \
          --pipeline-provisioning "CUSTOMER_MANAGED"
      ```

      응답:

      ```
      {
          "serviceTemplate": {
              "arn": "arn:aws:proton:region-id:123456789012:service-template/fargate-service",
              "createdAt": "2020-11-11T23:02:55.551000+00:00",
              "description": "Fargate-based Service",
              "displayName": "Fargate",
              "lastModifiedAt": "2020-11-11T23:02:55.551000+00:00",
              "name": "fargate-service",
              "pipelineProvisioning": "CUSTOMER_MANAGED"
          }
      }
      ```

1. 

**서비스 템플릿의 메이저 버전 1의 마이너 버전 0을 생성합니다.**

   템플릿 이름, 호환되는 환경 템플릿, 주요 버전, 서비스 템플릿 번들이 포함된 버킷의 S3 버킷 이름 및 키를 포함합니다.

   다음 명령을 실행합니다.

   ```
   $ aws proton create-service-template-version \
       --template-name "fargate-service" \
       --description "Version 1" \
       --source s3="{bucket=your_s3_bucket, key=your_s3_key}" \
       --compatible-environment-templates '[{"templateName":"simple-env","majorVersion":"1"}]'
   ```

   응답:

   ```
   {
       "serviceTemplateMinorVersion": {
           "arn": "arn:aws:proton:region-id:123456789012:service-template/fargate-service:1.0",
           "compatibleEnvironmentTemplates": [
               {
                   "majorVersion": "1",
                   "templateName": "simple-env"
               }
           ],
           "createdAt": "2020-11-11T23:02:57.912000+00:00",
           "description": "Version 1",
           "lastModifiedAt": "2020-11-11T23:02:57.912000+00:00",
           "majorVersion": "1",
           "minorVersion": "0",
           "status": "REGISTRATION_IN_PROGRESS",
           "templateName": "fargate-service"
       }
   }
   ```

   

1. *get* 명령을 사용하여 등록 상태를 확인합니다.

   다음 명령을 실행합니다.

   ```
   $ aws proton get-service-template-version \
       --template-name "fargate-service" \
       --major-version "1" \
       --minor-version "0"
   ```

   응답:

   ```
   {
       "serviceTemplateMinorVersion": {
           "arn": "arn:aws:proton:us-east-1:123456789012:service-template/fargate-service:1.0",
           "compatibleEnvironmentTemplates": [
               {
                   "majorVersion": "1",
                   "templateName": "simple-env"
               }
           ],
           "createdAt": "2020-11-11T23:02:57.912000+00:00",
           "description": "Version 1",
           "lastModifiedAt": "2020-11-11T23:02:57.912000+00:00",
           "majorVersion": "1",
           "minorVersion": "0",
           "schema": "schema:\n  format:\n    openapi: \"3.0.0\"\n  pipeline_input_type: \"MyPipelineInputType\"\n  service_input_type: \"MyServiceInstanceInputType\"\n\n  types:\n    MyPipelineInputType:\n      type: object\n      description: \"Pipeline input properties\"\n      required:\n        - my_sample_pipeline_required_input\n      properties:\n        my_sample_pipeline_optional_input:\n          type: string\n          description: \"This is a sample input\"\n          default: \"hello world\"\n        my_sample_pipeline_required_input:\n          type: string\n          description: \"Another sample input\"\n\n    MyServiceInstanceInputType:\n      type: object\n      description: \"Service instance input properties\"\n      required:\n        - my_sample_service_instance_required_input\n      properties:\n        my_sample_service_instance_optional_input:\n          type: string\n          description: \"This is a sample input\"\n          default: \"hello world\"\n        my_sample_service_instance_required_input:\n          type: string\n          description: \"Another sample input\"",
           "status": "DRAFT",
           "statusMessage": "",
           "templateName": "fargate-service"
       }
   }
   ```

1. update 명령을 사용하여 상태를 `"PUBLISHED"`로 변경하여 서비스 템플릿을 게시합니다.

   다음 명령을 실행합니다.

   ```
   $ aws proton update-service-template-version \
       --template-name "fargate-service" \
       --description "Version 1" \
       --major-version "1" \
       --minor-version "0" \
       --status "PUBLISHED"
   ```

   응답:

   ```
   {
       "serviceTemplateVersion": {
           "arn": "arn:aws:proton:region-id:123456789012:service-template/fargate-service:1.0",
           "compatibleEnvironmentTemplates": [
               {
                   "majorVersion": "1",
                   "templateName": "simple-env"
               }
           ],
           "createdAt": "2020-11-11T23:02:57.912000+00:00",
           "description": "Version 1",
           "lastModifiedAt": "2020-11-11T23:02:57.912000+00:00",
           "majorVersion": "1",
           "minorVersion": "0",
           "recommendedMinorVersion": "0",
           "schema": "schema:\n  format:\n    openapi: \"3.0.0\"\n  pipeline_input_type: \"MyPipelineInputType\"\n  service_input_type: \"MyServiceInstanceInputType\"\n\n  types:\n    MyPipelineInputType:\n      type: object\n      description: \"Pipeline input properties\"\n      required:\n        - my_sample_pipeline_required_input\n      properties:\n        my_sample_pipeline_optional_input:\n          type: string\n          description: \"This is a sample input\"\n          default: \"hello pipeline\"\n        my_sample_pipeline_required_input:\n          type: string\n          description: \"Another sample input\"\n\n    MyServiceInstanceInputType:\n      type: object\n      description: \"Service instance input properties\"\n      required:\n        - my_sample_service_instance_required_input\n      properties:\n        my_sample_service_instance_optional_input:\n          type: string\n          description: \"This is a sample input\"\n          default: \"hello world\"\n        my_sample_service_instance_required_input:\n          type: string\n          description: \"Another sample input\"\n",
           "status": "PUBLISHED",
           "statusMessage": "",
           "templateName": "fargate-service"
       }
   }
   ```

1. get 명령을 사용하여 서비스 템플릿 세부 데이터를 검색하여가 버전 1.0을 게시 AWS Proton 했는지 확인합니다.

   다음 명령을 실행합니다.

   ```
   $ aws proton get-service-template-version \
       --template-name "fargate-service" \
       --major-version "1" \
       --minor-version "0"
   ```

   응답:

   ```
   {
       "serviceTemplateMinorVersion": {
           "arn": "arn:aws:proton:us-east-1:123456789012:service-template/fargate-service:1.0",
           "compatibleEnvironmentTemplates": [
               {
                   "majorVersion": "1",
                   "templateName": "simple-env"
               }
           ],
           "createdAt": "2020-11-11T23:02:57.912000+00:00",
           "description": "Version 1",
           "lastModifiedAt": "2020-11-11T23:03:04.767000+00:00",
           "majorVersion": "1",
           "minorVersion": "0",
           "schema": "schema:\n  format:\n    openapi: \"3.0.0\"\n  pipeline_input_type: \"MyPipelineInputType\"\n  service_input_type: \"MyServiceInstanceInputType\"\n\n  types:\n    MyPipelineInputType:\n      type: object\n      description: \"Pipeline input properties\"\n      required:\n        - my_sample_pipeline_required_input\n      properties:\n        my_sample_pipeline_optional_input:\n          type: string\n          description: \"This is a sample input\"\n          default: \"hello world\"\n        my_sample_pipeline_required_input:\n          type: string\n          description: \"Another sample input\"\n\n    MyServiceInstanceInputType:\n      type: object\n      description: \"Service instance input properties\"\n      required:\n        - my_sample_service_instance_required_input\n      properties:\n        my_sample_service_instance_optional_input:\n          type: string\n          description: \"This is a sample input\"\n          default: \"hello world\"\n        my_sample_service_instance_required_input:\n          type: string\n          description: \"Another sample input\"",
           "status": "PUBLISHED",
           "statusMessage": "",
           "templateName": "fargate-service"
       }
   }
   ```

------

# 템플릿 데이터 보기
<a name="template-view"></a>

[AWS Proton 콘솔](https://console.aws.amazon.com//proton/) 및 AWS CLI을 사용하여 세부 정보가 포함된 템플릿 목록을 보고 세부 데이터가 포함된 개별 템플릿을 볼 수 있습니다.

*고객 관리형* 환경 템플릿 데이터에는 `CUSTOMER_MANAGED` 값이 있는 `provisioned` 파라미터가 포함됩니다.

서비스 템플릿에 서비스 파이프라인이 포함되지 *않은* 경우 서비스 템플릿 데이터에는 `pipelineProvisioning` 파라미터가 `CUSTOMER_MANAGED` 값과 함께 포함됩니다.

자세한 내용은 [템플릿 등록 및 게시](template-create.md) 단원을 참조하십시오.

콘솔 또는를 사용하여 템플릿 데이터를 AWS CLI 나열하고 볼 수 있습니다.

------
#### [ AWS Management Console ]

**콘솔을 사용하여 템플릿을 나열하고 볼 수 있습니다.**

1. 템플릿 목록을 보려면 **(환경 또는 서비스) 템플릿**을 선택합니다.

1. 세부 데이터를 보려면 템플릿 이름을 선택합니다.

   템플릿의 세부 정보 데이터, 템플릿의 메이저 및 마이너 버전 목록, 템플릿 버전 및 템플릿 태그를 사용하여 배포된 AWS Proton 리소스 목록을 봅니다.

   권장 메이저 버전과 마이너 버전은 **권장**으로 표시되어 있습니다.

------
#### [ AWS CLI ]

** AWS CLI 를 사용하여 템플릿을 나열하고 봅니다.**

다음 명령을 실행합니다.

```
$ aws proton get-environment-template-version \
    --template-name "simple-env" \
    --major-version "1" \
    --minor-version "0"
```

응답:

```
{
    "environmentTemplateVersion": {
        "arn": "arn:aws:proton:region-id:123456789012:environment-template/simple-env:1.0",
        "createdAt": "2020-11-10T18:35:08.293000+00:00",
        "description": "Version 1",
        "lastModifiedAt": "2020-11-10T18:35:11.162000+00:00",
        "majorVersion": "1",
        "minorVersion": "0",
        "recommendedMinorVersion": "0",
        "schema": "schema:\n  format:\n    openapi: \"3.0.0\"\n  environment_input_type: \"MyEnvironmentInputType\"\n  types:\n    MyEnvironmentInputType:\n      type: object\n      description: \"Input properties for my environment\"\n      properties:\n        my_sample_input:\n          type: string\n          description: \"This is a sample input\"\n          default: \"hello world\"\n        my_other_sample_input:\n          type: string\n          description: \"Another sample input\"\n      required:\n        - my_other_sample_input\n",
        "status": "DRAFT",
        "statusMessage": "",
        "templateName": "simple-env"
    }
}
```

다음 명령을 실행합니다.

```
$ aws proton list-environment-templates
```

응답:

```
{
    "templates": [
        {
            "arn": "arn:aws:proton:region-id:123456789012:environment-template/simple-env-3",
            "createdAt": "2020-11-10T18:35:05.763000+00:00",
            "description": "VPC with Public Access",
            "displayName": "VPC",
            "lastModifiedAt": "2020-11-10T18:35:05.763000+00:00",
            "name": "simple-env-3",
            "recommendedVersion": "1.0"            
        },
        {
            "arn": "arn:aws:proton:region-id:123456789012:environment-template/simple-env-1",
            "createdAt": "2020-11-10T00:14:06.881000+00:00",
            "description": "Some SSM Parameters",
            "displayName": "simple-env-1",
            "lastModifiedAt": "2020-11-10T00:14:06.881000+00:00",
            "name": "simple-env-1",
            "recommendedVersion": "1.0"           
        }
    ]
}
```

서비스 템플릿의 마이너 버전을 봅니다.

다음 명령을 실행합니다.

```
$ aws proton get-service-template-version \
    --template-name "fargate-service" \
    --major-version "1" \
    --minor-version "0"
```

응답:

```
{
    "serviceTemplateMinorVersion": {
        "arn": "arn:aws:proton:us-east-1:123456789012:service-template/fargate-service:1.0",
        "compatibleEnvironmentTemplates": [
            {
                "majorVersion": "1",
                "templateName": "simple-env"
            }
        ],
        "createdAt": "2020-11-11T23:02:57.912000+00:00",
        "description": "Version 1",
        "lastModifiedAt": "2020-11-11T23:02:57.912000+00:00",
        "majorVersion": "1",
        "minorVersion": "0",
        "schema": "schema:\n  format:\n    openapi: \"3.0.0\"\n  pipeline_input_type: \"MyPipelineInputType\"\n  service_input_type: \"MyServiceInstanceInputType\"\n\n  types:\n    MyPipelineInputType:\n      type: object\n      description: \"Pipeline input properties\"\n      required:\n        - my_sample_pipeline_required_input\n      properties:\n        my_sample_pipeline_optional_input:\n          type: string\n          description: \"This is a sample input\"\n          default: \"hello world\"\n        my_sample_pipeline_required_input:\n          type: string\n          description: \"Another sample input\"\n\n    MyServiceInstanceInputType:\n      type: object\n      description: \"Service instance input properties\"\n      required:\n        - my_sample_service_instance_required_input\n      properties:\n        my_sample_service_instance_optional_input:\n          type: string\n          description: \"This is a sample input\"\n          default: \"hello world\"\n        my_sample_service_instance_required_input:\n          type: string\n          description: \"Another sample input\"",
        "status": "DRAFT",
        "statusMessage": "",
        "templateName": "fargate-service"
    }
}
```

다음 예제 명령 및 응답에 표시된 것처럼 서비스 파이프라인이 없는 서비스 템플릿을 봅니다.

다음 명령을 실행합니다.

```
$ aws proton get-service-template \
    --name "simple-svc-template-cli"
```

응답:

```
{
    "serviceTemplate": {
        "arn": "arn:aws:proton:region-id:123456789012:service-template/simple-svc-template-cli",
        "createdAt": "2021-02-18T15:38:57.949000+00:00",
        "displayName": "simple-svc-template-cli",
        "lastModifiedAt": "2021-02-18T15:38:57.949000+00:00",
        "status": "DRAFT",
        "name": "simple-svc-template-cli",
        "pipelineProvisioning": "CUSTOMER_MANAGED"
    }
}
```

------

# 템플릿 업데이트
<a name="template-update"></a>

다음 목록에 설명된 대로 템플릿을 업데이트할 수 있습니다.
+ 콘솔 또는 AWS CLI을 사용할 때 템플릿의 `description` 또는 `display name`를 편집합니다. 템플릿의 `name`을 편집할 수는 *없습니다.*
+ 콘솔 또는 AWS CLI을 사용할 때 템플릿 마이너 버전의 상태를 업데이트하세요. 상태를 `DRAFT`에서 `PUBLISHED`로 변경할 수만 있습니다.
+  AWS CLI를 사용할 때 템플릿의 마이너 버전 또는 메이저 버전에 대한 표시 이름과 설명을 편집합니다.

------
#### [ AWS Management Console ]

다음 단계에 설명된 대로 콘솔을 사용하여 템플릿 설명과 표시 이름을 편집합니다.

**템플릿 목록에서.**

1. [AWS Proton 콘솔](https://console.aws.amazon.com//proton/)에서 **(환경 또는 서비스) 템플릿**을 선택합니다.

1. 템플릿 목록에서 설명이나 표시 이름을 업데이트하려는 템플릿의 왼쪽에 있는 라디오 버튼을 선택합니다.

1. **작업**을 선택하고 **편집**을 선택합니다.

1. **(환경 또는 서비스) 템플릿 편집 페이지의 템플릿** **세부 정보** 단원에서 양식에 편집 내용을 입력하고 **변경 내용 저장**을 선택합니다.

다음 설명에 따라 콘솔을 사용하여 템플릿의 마이너 버전 상태를 변경하여 템플릿을 게시하세요. 상태를 `DRAFT`에서 `PUBLISHED`로 변경할 수만 있습니다.

**(환경 또는 서비스) 템플릿 세부 정보 페이지에서.**

1. [AWS Proton 콘솔](https://console.aws.amazon.com//proton/)에서 **(환경 또는 서비스) 템플릿**을 선택합니다.

1. 템플릿 목록에서 마이너 버전의 상태를 업데이트하려는 템플릿의 이름을 **초안**에서 **게시됨**으로 선택합니다.

1. (환경 또는 서비스) 템플릿 세부 정보 페이지의 **템플릿 버전** 단원에서 게시하려는 마이너 버전의 왼쪽에 있는 라디오 버튼을 선택합니다.

1. **템플릿 버전** 단원에서 **게시**를 선택합니다. 상태가 **초안**에서 **게시됨**으로 바뀝니다.

------
#### [ AWS CLI ]

다음 예제 명령 및 응답은 환경 템플릿의 설명을 편집하는 방법을 보여줍니다.

다음 명령을 실행합니다.

```
$ aws proton update-environment-template \
    --name "simple-env" \
    --description "A single VPC with public access"
```

응답:

```
{
    "environmentTemplate": {
        "arn": "arn:aws:proton:region-id:123456789012:environment-template/simple-env",
        "createdAt": "2020-11-28T22:02:10.651000+00:00",
        "description": "A single VPC with public access",
        "displayName": "simple-env",
        "lastModifiedAt": "2020-11-29T16:11:18.956000+00:00",
        "majorVersion": "1",
        "minorVersion": "0",
        "recommendedMinorVersion": "0",
        "schema": "schema:\n  format:\n    openapi: \"3.0.0\"\n  environment_input_type: \"MyEnvironmentInputType\"\n  types:\n    MyEnvironmentInputType:\n      type: object\n      description: \"Input properties for my environment\"\n      properties:\n        my_sample_input:\n          type: string\n          description: \"This is a sample input\"\n          default: \"hello world\"\n        my_other_sample_input:\n          type: string\n          description: \"Another sample input\"\n      required:\n        - my_other_sample_input\n",
        "status": "PUBLISHED",
        "statusMessage": "",
        "templateName": "simple-env"
    }
}
```

 AWS CLI 를 사용하여 서비스 템플릿을 업데이트할 수도 있습니다. 서비스 템플릿의 마이너 버전 상태 업데이트 예는 [서비스 템플릿 등록 및 게시](template-create.md#svc-template-v1), 5단계를 참조하세요.

------

# 템플릿 삭제
<a name="template-delete"></a>

템플릿은 콘솔 및 AWS CLI를 사용하여 삭제할 수 있습니다.

해당 버전에 배포된 환경이 없는 경우 환경 템플릿의 마이너 버전을 삭제할 수 있습니다.

해당 버전에 배포된 서비스 인스턴스 또는 파이프라인이 없는 경우 서비스 템플릿의 마이너 버전을 삭제할 수 있습니다. 파이프라인을 서비스 인스턴스와 다른 템플릿 버전에 배포할 수 있습니다. 예를 들어 서비스 인스턴스가 1.0에서 버전 1.1로 업데이트되고 파이프라인이 여전히 버전 1.0으로 배포된 경우 서비스 템플릿 1.0을 삭제할 수 없습니다.

------
#### [ AWS Management Console ]

콘솔을 사용하여 전체 템플릿 또는 템플릿의 개별 마이너 및 메이저 버전을 삭제할 수 있습니다.

콘솔을 사용하여 다음과 같이 템플릿을 삭제합니다.

**참고**  
템플릿 전체를 삭제하면 템플릿의 메이저 버전과 마이너 버전도 삭제됩니다.

**(환경 또는 서비스) 템플릿 목록에서.**

1. [AWS Proton 콘솔](https://console.aws.amazon.com//proton/)에서 **(환경 또는 서비스) 템플릿**을 선택합니다.

1. 템플릿 목록에서 삭제할 템플릿의 왼쪽에 있는 라디오 버튼을 선택합니다.

   버전에 배포된 AWS Proton 리소스가 없는 경우에만 전체 템플릿을 삭제할 수 있습니다.

1. **작업**을 선택한 다음 **삭제**를 선택하여 전체 템플릿을 삭제합니다.

1. 삭제 작업을 확인하라는 모달이 표시됩니다.

1. 지침을 따르고 **예, 삭제**를 선택합니다.

**(환경 또는 서비스) 템플릿 세부 정보 페이지에서.**

1. [AWS Proton 콘솔](https://console.aws.amazon.com//proton/)에서 **(환경 또는 서비스) 템플릿**을 선택합니다.

1. 템플릿 목록에서 템플릿의 전체 메이저 또는 마이너 버전을 완전히 삭제 또는 삭제할 템플릿의 이름을 선택합니다.

1. 

**전체 템플릿 삭제하기.**

   버전에 배포된 AWS Proton 리소스가 없는 경우에만 전체 템플릿을 삭제할 수 있습니다.

   1. 페이지 오른쪽 상단의 **삭제**를 선택합니다.

   1. 삭제 작업을 확인하라는 모달이 표시됩니다.

   1. 지침을 따르고 **예, 삭제**를 선택합니다.

1. 

**템플릿의 메이저 버전 또는 마이너 버전을 삭제하기.**

   해당 버전에 배포된 AWS Proton 리소스가 없는 경우에만 템플릿의 마이너 버전을 삭제할 수 있습니다.

   1. **템플릿 버전 단원에서** 삭제할 버전의 왼쪽에 있는 라디오 버튼을 선택합니다.

   1. **템플릿 버전** 단원에서 **삭제**를 선택합니다.

   1. 삭제 작업을 확인하라는 모달이 표시됩니다.

   1. 지침을 따르고 **예, 삭제**를 선택합니다.

------
#### [ AWS CLI ]

AWS CLI 템플릿 삭제 작업에는 템플릿의 다른 버전 삭제가 포함되지 *않습니다*. 를 사용하는 경우 다음 조건에서 템플릿을 AWS CLI삭제합니다.
+ 템플릿의 마이너 버전이나 메이저 버전이 없는 경우 전체 템플릿을 삭제하세요.
+ 마지막 남은 마이너 버전을 삭제하면 메이저 버전도 삭제됩니다.
+ 해당 버전에 배포된 AWS Proton 리소스가 없는 경우 템플릿의 마이너 버전을 삭제합니다.
+ 템플릿의 다른 마이너 버전이 없고 해당 버전에 배포된 AWS Proton 리소스가 없는 경우 템플릿의 권장 마이너 버전을 삭제합니다.

**다음 예제 명령 및 응답은를 사용하여 템플릿을 삭제 AWS CLI 하는 방법을 보여줍니다.**

다음 명령을 실행합니다.

```
$ aws proton delete-environment-template-version \
    --template-name "simple-env" \
    --major-version "1" \
    --minor-version "0"
```

응답:

```
{
    "environmentTemplateVersion": {
        "arn": "arn:aws:proton:region-id:123456789012:environment-template/simple-env:1.0",
        "createdAt": "2020-11-11T23:02:47.763000+00:00",
        "description": "Version 1",
        "lastModifiedAt": "2020-11-11T23:02:54.610000+00:00",
        "majorVersion": "1",
        "minorVersion": "0",
        "status": "PUBLISHED",
        "statusMessage": "",
        "templateName": "simple-env"
    }
}
```

다음 명령을 실행합니다.

```
$ aws proton delete-environment-template \
    --name "simple-env"
```

응답:

```
{
    "environmentTemplate": {
        "arn": "arn:aws:proton:region-id:123456789012:environment-template/simple-env",
        "createdAt": "2020-11-11T23:02:45.336000+00:00",
        "description": "VPC with Public Access",
        "displayName": "VPC",
        "lastModifiedAt": "2020-11-12T00:23:22.339000+00:00",
        "name": "simple-env",
        "recommendedVersion": "1.0"
    }
}
```

다음 명령을 실행합니다.

```
$ aws proton delete-service-template-version \
    --template-name "fargate-service" \
    --major-version "1" \
    --minor-version "0"
```

응답:

```
{
    "serviceTemplateVersion": {
        "arn": "arn:aws:proton:region-id:123456789012:service-template/fargate-service:1.0",
        "compatibleEnvironmentTemplates": [{"majorVersion": "1", "templateName": "simple-env"}],
        "createdAt": "2020-11-28T22:07:05.798000+00:00",
        "lastModifiedAt": "2020-11-28T22:19:05.368000+00:00",
        "majorVersion": "1",
        "minorVersion": "0",
        "status": "PUBLISHED",
        "statusMessage": "",
        "templateName": "fargate-service"
    }
}
```

------

# 템플릿 동기화 구성
<a name="ag-template-sync-configs"></a>

정의한 등록된 git 리포지토리에 있는 템플릿 번들에서 AWS Proton 동기화하도록 템플릿을 구성하는 방법을 알아봅니다. 커밋이 리포지토리로 푸시되면 AWS Proton 은 리포지토리 템플릿 번들의 변경 사항을 확인합니다. 템플릿 번들 변경을 감지하면 해당 버전이 아직 존재하지 않는 경우 템플릿의 새 마이너 또는 메이저 버전이 생성됩니다.는 AWS Proton 현재 GitHub, GitHub Enterprise 및 BitBucket을 지원합니다.

## 커밋을 동기화된 템플릿 번들로 푸시하기
<a name="ag-commits"></a>

템플릿 중 하나로 추적되는 브랜치에 커밋을 푸시하면 AWS Proton 은 리포지토리를 복제하고 동기화하는 데 필요한 템플릿을 결정합니다. 디렉토리의 파일을 스캔하여 `{template-name}/{major-version}/`의 규칙과 일치하는 디렉터리를 찾습니다.

가 리포지토리 및 브랜치와 연결된 템플릿과 메이저 버전을 AWS Proton 결정하면 모든 템플릿을 병렬로 동기화하려고 시도하기 시작합니다.

특정 템플릿에 동기화할 때마다 AWS Proton 먼저는 마지막으로 동기화가 성공한 이후 템플릿 디렉터리의 내용이 변경되었는지 확인합니다. 콘텐츠가 변경되지 않으면 중복 번들 등록을 AWS Proton 건너뜁니다. 이렇게 하면 템플릿 번들의 콘텐츠가 변경될 경우 새 템플릿 마이너 버전이 생성됩니다. 템플릿 번들의 내용이 변경되면 번들이에 등록됩니다 AWS Proton.

템플릿 번들이 등록된 후는 등록이 완료될 때까지 등록 상태를 AWS Proton 모니터링합니다.

특정 템플릿 마이너 버전과 메이저 버전은 한 번에 한 번만 동기화할 수 있습니다. 동기화가 진행되는 동안 푸시되었을 수 있는 모든 커밋은 일괄 처리됩니다. 일괄 처리된 커밋은 이전 동기화 시도가 완료된 후에 동기화됩니다.

## 서비스 템플릿 동기화
<a name="syncing-service-templates"></a>

AWS Proton 는 git 리포지토리에서 환경 및 서비스 템플릿을 모두 동기화할 수 있습니다. 서비스 템플릿을 동기화하려면 템플릿 번들의 각 메이저 버전 디렉터리에 이름이 지정된 `.template-registration.yaml` 추가 파일을 추가합니다. 이 파일에는 커밋 후 서비스 템플릿 버전을 생성할 AWS Proton 때 *필요한 호환 환경* 및 *지원되는 구성 요소 소스* 등의 추가 세부 정보가 포함되어 있습니다.

파일의 전체 경로는 `service-template-name/major-version/.template-registration.yaml`입니다. 자세한 내용은 [서비스 템플릿 동기화](create-template-sync.md#create-template-sync-service-templates) 단원을 참조하세요.

## 템플릿 동기화 구성 고려 사항
<a name="sync-considerations"></a>

템플릿 동기화 구성 사용에 대한 다음 고려 사항을 검토하세요.
+ 리포지토리는 250MB를 넘지 않아야 합니다.
+ 템플릿 동기화를 구성하려면 먼저 리포지토리를 AWS Proton에 연결합니다. 자세한 내용은 [리포지토리로 연결되는 링크를 생성합니다.](ag-create-repo.md) 단원을 참조하십시오.
+ 동기화된 템플릿에서 새 템플릿 버전을 만들면 `DRAFT` 상태가 됩니다.
+ 다음 중 하나에 해당하는 경우 템플릿의 새 마이너 버전이 생성됩니다.
  + 템플릿 번들 컨텐츠는 마지막으로 동기화된 템플릿 마이너 버전의 컨텐츠와 다릅니다.
  + 이전에 마지막으로 동기화된 템플릿 마이너 버전이 삭제되었습니다.
+ 동기화를 일시 중지할 수는 없습니다.
+ 새 마이너 버전과 메이저 버전 모두 자동으로 동기화됩니다.
+ 템플릿 동기화 구성으로는 새 최상위 템플릿을 만들 수 없습니다.
+ 템플릿 동기화 구성을 사용하면 여러 리포지토리의 템플릿 하나에 동기화할 수 없습니다.
+ 브랜치 대신 태그를 사용할 수는 없습니다.
+ [서비스 템플릿을 만들](template-create.md#svc-template-v1) 때는 호환되는 환경 템플릿을 지정합니다.
+ 환경 템플릿을 만든 다음 동일한 커밋에서 서비스 템플릿과 호환되는 환경으로 추가할 수 있습니다.
+ 단일 템플릿 메이저 버전과의 동기화는 한 번에 하나씩 실행됩니다. 동기화 중에 새 커밋이 감지되면 일괄 처리되어 활성 동기화가 끝날 때 적용됩니다. 다른 템플릿 메이저 버전과의 동기화는 병렬로 이루어집니다.
+ 템플릿이 동기화되는 브랜치를 변경하면 이전 브랜치에서 진행 중인 모든 동기화가 먼저 완료됩니다. 그러면 새 브랜치부터 동기화가 시작됩니다.
+ 템플릿을 동기화하는 데 사용할 리포지토리를 변경하면 이전 리포지토리에서 진행 중인 모든 동기화가 실패하거나 완료될 수 있습니다. 동기화 단계에 따라 다릅니다.

자세한 내용은 [https://docs.aws.amazon.com/proton/latest/APIReference/Welcome.html](https://docs.aws.amazon.com/proton/latest/APIReference/Welcome.html) 참조를 참조하세요.

**Topics**
+ [커밋을 동기화된 템플릿 번들로 푸시하기](#ag-commits)
+ [서비스 템플릿 동기화](#syncing-service-templates)
+ [템플릿 동기화 구성 고려 사항](#sync-considerations)
+ [템플릿 동기화 구성을 생성합니다.](create-template-sync.md)
+ [템플릿 동기화 구성 세부 정보 보기](view-template-sync.md)
+ [템플릿 동기화 구성 편집](update-template-sync.md)
+ [템플릿 동기화 구성 삭제](delete-template-sync.md)

# 템플릿 동기화 구성을 생성합니다.
<a name="create-template-sync"></a>

를 사용하여 템플릿 동기화 구성을 생성하는 방법을 알아봅니다 AWS Proton.

**템플릿 동기화 구성 전제 조건을 생성하기:**
+  AWS Proton와 [리포지토리 연결](ag-create-repo.md)했습니다..
+ [템플릿 번들](ag-template-authoring.md#ag-template-bundles)은 리포지토리에 있습니다.

**리포지토리 링크는 다음 구성 요소로 이루어져 있습니다.**
+ 리포지토리에 액세스하고 알림을 구독할 수 있는 AWS Proton 권한을 부여하는 CodeConnections 연결입니다.
+ [서비스 연결 역할](using-service-linked-roles.md) 리포지토리를 연결하면 서비스 연결 역할이 자동으로 만들어집니다.

첫 번째 템플릿 동기화 구성을 생성하기 전에 다음 디렉토리 레이아웃과 같이 템플릿 번들을 저장소에 푸시하세요.

```
 /templates/                                                 # subdirectory (optional)
 /templates/my-env-template/                                 # template name
 /templates/my-env-template/v1/                              # template version
 /templates/my-env-template/v1/infrastructure/               # template bundle
 /templates/my-env-template/v1/schema/
```

첫 번째 템플릿 동기화 구성을 만든 후 업데이트된 템플릿 번들을 새 버전 에 추가하는 커밋을 푸시하면 새 템플릿 버전이 자동으로 생성됩니다(예: `/my-env-template/v2/` 아래).

```
 /templates/                                                 # subdirectory (optional)
 /templates/my-env-template/                                 # template name
 /templates/my-env-template/v1/                              # template version
 /templates/my-env-template/v1/infrastructure/               # template bundle
 /templates/my-env-template/v1/schema/
 /templates/my-env-template/v2/
 /templates/my-env-template/v2/infrastructure/
 /templates/my-env-template/v2/schema/
```

단일 커밋에 하나 이상의 동기화 구성 템플릿에 대한 새 템플릿 번들 버전을 포함할 수 있습니다.는 커밋에 포함된 각 새 템플릿 번들 버전에 대해 새 템플릿 버전을 AWS Proton 생성합니다.

템플릿 동기화 구성을 생성한 후에도 콘솔에서 또는 S3 버킷에서 템플릿 번들을 업로드 AWS CLI 하여를 사용하여 새 버전의 템플릿을 수동으로 생성할 수 있습니다. 템플릿 동기화는 리포지토리에서 로 한 방향으로만 작동합니다 AWS Proton. 수동으로 생성한 템플릿 버전은 동기화되지 *않습니다*.

템플릿 동기화 구성을 설정한 후는 리포지토리의 AWS Proton 변경 사항을 수신합니다. 변경 사항이 푸시될 때마다 템플릿과 이름이 같은 디렉토리를 찾습니다. 그런 다음 해당 디렉터리 내부에서 메이저 버전과 같은 디렉터리를 찾습니다.는 템플릿 번들을 해당 템플릿 메이저 버전에 AWS Proton 등록합니다. 새 버전은 항상 `DRAFT` 상태를 유지합니다. 콘솔 또는 [를 사용하여 새 버전을 게시](template-create.md)할 수 있습니다 AWS CLI.

예를 들어 `my-env-template`이라는 템플릿이 다음과 같은 레이아웃으로 브랜치 `main`의 `my-repo/templates`에서 동기화되도록 구성되어 있다고 가정해 보겠습니다.

```
 /code
 /code/service.go
 README.md
 /templates/
 /templates/my-env-template/
 /templates/my-env-template/v1/
 /templates/my-env-template/v1/infrastructure/
 /templates/my-env-template/v1/schema/
 /templates/my-env-template/v2/
 /templates/my-env-template/v2/infrastructure/
 /templates/my-env-template/v2/schema/
```

AWS Proton 는의 내용을 `/templates/my-env-template/v1/`에 동기화`my-env-template:1`하고의 내용을 `/templates/my-env-template/v2/`에 동기화합니다`my-env-template:2`. 아직 존재하지 않는 경우 다음과 같은 메이저 버전이 생성됩니다.

AWS Proton 에서 템플릿 이름과 일치하는 첫 번째 디렉터리를 찾았습니다. 템플릿 동기화 구성을 생성하거나 편집할 `subdirectoryPath` 때를 지정하여 디렉터리 AWS Proton 검색을 제한할 수 있습니다. 예를 들어, `subdirectoryPath`에 대해 `/production-templates/`로 지정할 수 있습니다.

콘솔 또는 CLI를 사용하여 서비스 동기화 구성을 만들 수 있습니다.

------
#### [ AWS Management Console ]

**콘솔을 사용하여 템플릿 및 템플릿 동기화 구성을 생성합니다.**

1. [AWS Proton 콘솔](https://console.aws.amazon.com//proton/)에서 **환경 템플릿**을 선택합니다.

1. **환경 템플릿 생성**을 선택합니다.

1. **환경 템플릿 생성** 페이지의 **템플릿 옵션** 단원에서 **새 환경을 프로비저닝하기 위한 템플릿 생성**을 선택합니다.

1. **템플릿 번들 소스** 단원에서 **Git에서 템플릿 동기화**를 선택합니다.

1. **소스 코드 리포지토리**에서,

   1. **리포지토리**의 경우 템플릿 번들이 포함된 연결된 리포지토리를 선택합니다.

   1. **브랜치**의 경우 동기화할 리포지토리 브랜치를 선택합니다.

   1. (선택 사항) **템플릿 번들 디렉터리**의 경우 디텍터리의 이름을 입력하여 템플릿 번들 검색 범위를 좁힙니다.

1. **템플릿 세부 정보** 단원에서.

   1. **템플릿 이름**을 입력합니다.

   1. (선택 사항) **템플릿 표시 이름**을 입력합니다.

   1. (선택 사항) 환경 템플릿에 대한 ** 템플릿 설명**을 입력합니다.

1. (선택 사항) **암호화 설정** 단원에서 **암호화 설정 사용자 지정(고급)** 확인란을 선택하여 고유한 암호화 키를 제공하세요.

1. (선택 사항) **태그** 단원에서 **새 태그 추가**를 선택하고 키와 값을 입력하여 고객 관리형 태그를 생성합니다.

1. **환경 템플릿 생성**을 선택합니다.

   이제 새 환경 템플릿의 상태 및 세부 정보를 표시하는 새 페이지가 열립니다. 이러한 세부 정보에는 AWS 관리형 및 고객 관리형 태그 목록이 포함됩니다.는 AWS Proton 리소스를 생성할 때 AWS 관리형 태그를 AWS Proton 자동으로 생성합니다. 자세한 내용은 [AWS Proton 리소스 및 태그 지정](resources.md) 단원을 참조하십시오.

1. 템플릿 세부 정보 페이지에서 **동기화** 탭을 선택하여 템플릿 동기화 구성 세부 정보 데이터를 확인합니다.

1. **템플릿 버전** 탭을 선택하면 상태 세부 정보가 포함된 템플릿 버전을 볼 수 있습니다.

1. 새 환경 템플릿 상태의 상태는 **초안** 상태에서 시작됩니다. 사용자 및 `proton:CreateEnvironment` 권한이 있는 다른 사용자가 보고 액세스할 수 있습니다. 다음 단계에 따라 다른 사람이 템플릿을 사용할 수 있도록 합니다.

1. **템플릿 버전** 단원에서 방금 만든 템플릿의 마이너 버전 왼쪽에 있는 라디오 버튼 (1.0) 을 선택합니다. 또는 정보 알림에서 **게시**를 선택하고 다음 단계를 건너뛸 수도 있습니다.

1. **템플릿 버전** 단원에서 **게시**를 선택합니다.

1. 템플릿 상태가 **게시됨**으로 변경됩니다. 템플릿의 최신 및 **권장** 버전입니다.

1. 탐색 창에서 **환경 템플릿**을 선택하여 환경 템플릿 및 세부 정보 목록을 확인합니다.

서비스 템플릿과 템플릿 동기화 구성을 만드는 절차는 비슷합니다.

------
#### [ AWS CLI ]

**AWS CLI를 사용하여 템플릿 및 템플릿 동기화 구성을 생성합니다.**

1. 

**템플릿 생성 이 예시에서는 환경 템플릿이 생성됩니다.**

   다음 명령을 실행합니다.

   ```
   $ aws proton create-environment-template \
       --name "env-template"
   ```

   응답은 다음과 같습니다.

   ```
   {
       "environmentTemplate": {
           "arn": "arn:aws:proton:us-east-1:123456789012:environment-template/env-template",
           "createdAt": "2021-11-07T23:32:43.045000+00:00",
           "displayName": "env-template",
           "lastModifiedAt": "2021-11-07T23:32:43.045000+00:00",
           "name": "env-template",
           "status": "DRAFT",
           "templateName": "env-template"
       }
   }
   ```

1. 

**다음을 AWS CLI 제공하여와 템플릿 동기화 구성을 생성합니다.**
   + 동기화할 템플릿입니다. 템플릿 동기화 구성을 만든 후에도 콘솔에서 또는 AWS CLI를 사용하여 수동으로 새 버전을 만들 수 있습니다.
   + 템플릿 이름입니다.
   + 템플릿 유형.
   + 동기화하려는 링크된 리포지토리
   + 연결된 저장소 제공자.
   + 템플릿 번들이 있는 브랜치입니다.
   + (선택 사항) 템플릿 번들이 포함된 디렉터리의 경로입니다. 기본적으로는 템플릿 이름과 일치하는 첫 번째 디렉터리를 AWS Proton 찾습니다.

   다음 명령을 실행합니다.

   ```
   $ aws proton create-template-sync-config \
       --template-name "env-template" \
       --template-type "ENVIRONMENT" \
       --repository-name "myrepos/templates" \
       --repository-provider "GITHUB" \
       --branch "main" \
       --subdirectory "env-template/"
   ```

   응답은 다음과 같습니다.

   ```
   {
       "templateSyncConfigDetails": {
           "branch": "main",
           "repositoryName": "myrepos/templates",
           "repositoryProvider": "GITHUB",
           "subdirectory": "templates",
           "templateName": "env-template",
           "templateType": "ENVIRONMENT"
       }
   }
   ```

1. **템플릿 버전을 게시하려면 [템플릿 등록 및 게시](template-create.md)을 참조하세요.**

------

## 서비스 템플릿 동기화
<a name="create-template-sync-service-templates"></a>

위 예제는 환경 템플릿을 동기화하는 방법을 보여줍니다. 서비스 템플릿도 비슷합니다. 서비스 템플릿을 동기화하려면 템플릿 번들의 각 메이저 버전 디렉터리에 이름이 지정된 `.template-registration.yaml` 추가 파일을 추가합니다. 이 파일에는 커밋 후 서비스 템플릿 버전을 생성할 때 AWS Proton 필요한 추가 세부 정보가 포함되어 있습니다. AWS Proton 콘솔 또는 API를 사용하여 서비스 템플릿 버전을 명시적으로 생성하는 경우 이러한 세부 정보를 입력으로 제공하면이 파일이 템플릿 동기화를 위해 이러한 입력을 대체합니다.

```
./templates/                                                 # subdirectory (optional)
 /templates/my-svc-template/                                 # service template name
 /templates/my-svc-template/v1/                              # service template version
 /templates/my-svc-template/v1/.template-registration.yaml   # service template version properties
 /templates/my-svc-template/v1/instance_infrastructure/      # template bundle
 /templates/my-svc-template/v1/schema/
```

`.template-registration.yaml` 파일에는 다음 코드가 포함되어 있습니다.
+ **호환되는 환경**[필수] - 이러한 환경 템플릿 및 메이저 버전을 기반으로 하는 환경은 이 서비스 템플릿 버전을 기반으로 하는 서비스와 호환됩니다.
+ **지원되는 구성 요소 소스**[선택 사항] - 이러한 소스를 사용하는 구성 요소는 이 서비스 템플릿 버전을 기반으로 하는 서비스와 호환됩니다. 지정하지 않으면 구성 요소를 이러한 서비스에 연결할 수 없습니다. 구성 요소에 대한 자세한 내용은 [AWS Proton 구성 요소](ag-components.md)를 참조하세요.

파일의 YAML 구문은 다음과 같습니다.

```
compatible_environments:
  - env-templ-name:major-version
  - ...
supported_component_sources:
  - DIRECTLY_DEFINED
```

하나 이상의 환경 템플릿/메이저 버전 조합을 지정합니다. `supported_component_sources` 지정은 선택 사항이며 지원되는 값은 `DIRECTLY_DEFINED`뿐입니다.

**Example .template-registration.yaml**  
이 예제에서 서비스 템플릿 버전은 `my-env-template` 환경 템플릿의 메이저 버전 1 및 2와 호환됩니다. 또한 `another-env-template` 환경 템플릿의 주요 버전 1 및 3과도 호환됩니다. 파일은 `supported_component_sources`을 지정하지 않으므로 이 서비스 템플릿 버전을 기반으로 하는 서비스에 구성 요소를 연결할 수 없습니다.  

```
compatible_environments:
  - my-env-template:1
  - my-env-template:2
  - another-env-template:1
  - another-env-template:3
```

**참고**  
이전에는에서 호환되는 환경을 지정하기 `.compatible-envs`위해 다른 파일를 AWS Proton 정의했습니다. AWS Proton 는 이전 버전과의 호환성을 위해 해당 파일과 형식을 지원합니다. 확장이 불가능하고 구성 요소와 같은 최신 기능을 지원할 수 없으므로 더 이상 사용하지 않는 것이 좋습니다.

# 템플릿 동기화 구성 세부 정보 보기
<a name="view-template-sync"></a>

콘솔 또는 CLI를 사용하여 템플릿 동기화 구성 세부 데이터를 확인합니다.

------
#### [ AWS Management Console ]

**콘솔을 사용하여 템플릿 동기화 구성 세부 정보를 확인합니다.**

1. 탐색 창에서 **(환경 또는 서비스) 템플릿**을 선택합니다.

1. 세부 데이터를 보려면 템플릿 동기화 구성을 만든 템플릿의 이름을 선택합니다.

1. 템플릿의 세부 정보 페이지에서 **동기화** 탭을 선택하여 템플릿 동기화 구성 세부 정보 데이터를 확인합니다.

------
#### [ AWS CLI ]

** AWS CLI 를 사용하여 동기화된 템플릿을 봅니다.**

다음 명령을 실행합니다.

```
$ aws proton get-template-sync-config \
    --template-name "svc-template" \
    --template-type "SERVICE"
```

응답은 다음과 같습니다.

```
{
    "templateSyncConfigDetails": {
        "branch": "main",
        "repositoryProvider": "GITHUB",
        "repositoryName": "myrepos/myrepo",
        "subdirectory": "svc-template",
        "templateName": "svc-template",
        "templateType": "SERVICE"
    }
}
```

** AWS CLI 를 사용하여 템플릿 동기화 상태를 가져옵니다.**

`template-version`에 템플릿 메이저 버전을 입력합니다.

다음 명령을 실행합니다.

```
$ aws proton get-template-sync-status \
    --template-name "env-template" \
    --template-type "ENVIRONMENT" \
    --template-version "1"
```

------

# 템플릿 동기화 구성 편집
<a name="update-template-sync"></a>

`template-name`및 `template-type`를 제외한 모든 템플릿 동기화 구성 파라미터를 편집할 수 있습니다.

콘솔 또는 CLI를 사용하여 템플릿 동기화 구성을 편집하는 방법을 알아보세요.

------
#### [ AWS Management Console ]

콘솔을 사용하여 템플릿 동기화 구성 브랜치를 편집합니다.

**템플릿 목록에서.**

1. [AWS Proton 콘솔](https://console.aws.amazon.com//proton/)에서 **(환경 또는 서비스) 템플릿**을 선택합니다.

1. 템플릿 목록에서 편집하려는 템플릿 동기화 구성이 포함된 템플릿의 이름을 선택합니다.

1. 템플릿 세부 정보 페이지에서 **템플릿 동기화** 탭을 선택합니다.

1. **템플릿 동기화 세부 정보** 단원에서 **편집**을 선택합니다.

1. **편집** 페이지의 **소스 코드 리포지토리** 단원에서 **브랜치ㅌ**을 대해 브랜치를 선택한 다음 **구성 저장**을 선택합니다.

------
#### [ AWS CLI ]

**다음 예제 명령 및 응답은 CLI를 사용하여 템플릿 동기화 구성 `branch`를 편집하는 방법을 보여줍니다.**

다음 명령을 실행합니다.

```
$ aws proton update-template-sync-config \
    --template-name "env-template" \
    --template-type "ENVIRONMENT" \
    --repository-provider "GITHUB" \
    --repository-name "myrepos/templates" \
    --branch "fargate" \
    --subdirectory "env-template"
```

응답은 다음과 같습니다.

```
{
    "templateSyncConfigDetails": {
        "branch": "fargate",
        "repositoryProvider": "GITHUB",
        "repositoryName": "myrepos/myrepo",
        "subdirectory": "templates",
        "templateName": "env-template",
        "templateType": "ENVIRONMENT"
    }
}
```

마찬가지로 AWS CLI 를 사용하여 동기화된 서비스 템플릿을 업데이트할 수 있습니다.

------

# 템플릿 동기화 구성 삭제
<a name="delete-template-sync"></a>

콘솔 또는 CLI를 사용하여 템플릿 동기화 구성을 삭제합니다.

------
#### [ AWS Management Console ]

**콘솔을 사용하여 템플릿 동기화 구성을 삭제합니다.**

1. 템플릿 세부 정보 페이지에서 **동기화** 탭을 선택합니다.

1. **동기화 세부 정보** 단원에서 **연결 해제**를 선택합니다.

------
#### [ AWS CLI ]

**다음 예제 명령 및 응답은를 사용하여 동기화된 템플릿 구성을 삭제 AWS CLI 하는 방법을 보여줍니다.**

다음 명령을 실행합니다.

```
$ aws proton delete-template-sync-config \
    --template-name "env-template" \
    --template-type "ENVIRONMENT"
```

응답은 다음과 같습니다.

```
{
    "templateSyncConfig": {
        "templateName": "env-template",
        "templateType": "ENVIRONMENT"
    }
}
```

------

# 서비스 동기화 구성
<a name="ag-service-sync-configs"></a>

서비스 동기화를 사용하면 Git을 사용하여 AWS Proton 서비스를 구성하고 배포할 수 있습니다. 서비스 동기화를 사용하여 Git 리포지토리에 정의된 구성으로 AWS Proton 서비스에 대한 초기 배포 및 업데이트를 관리할 수 있습니다. Git을 통해 버전 추적 및 풀 요청과 같은 기능을 사용하여 서비스를 구성, 관리 및 배포할 수 있습니다. 서비스 동기화는 AWS Proton 및 Git을 결합하여 AWS Proton 템플릿을 통해 정의되고 관리되는 표준화된 인프라를 프로비저닝하는 데 도움이 됩니다. Git 리포지토리의 서비스 정의를 관리하고 도구 전환을 줄입니다. Git을 단독으로 사용하는 것에 비해에서 템플릿 및 배포 AWS Proton 를 표준화하면 인프라 관리에 소요되는 시간을 줄일 수 있습니다. AWS Proton 또한 개발자와 플랫폼 팀 모두에게 더 높은 투명성과 감사 가능성을 제공합니다.

## AWS Proton OPS 파일
<a name="service-sync-ops"></a>

`proton-ops` 파일은가 서비스 인스턴스를 업데이트하는 데 사용되는 사양 파일을 AWS Proton 찾는 위치를 정의합니다. 또한 서비스 인스턴스를 업데이트할 순서와 한 인스턴스에서 다른 인스턴스로 변경 사항을 프로모션할 시기를 정의합니다.

이 `proton-ops` 파일은 연결된 저장소에 있는 사양 파일 또는 여러 사양 파일을 사용하여 서비스 인스턴스를 동기화하는 것을 지원합니다. 다음 예와 같이 `proton-ops` 파일에 동기화 블록을 정의하여 이 작업을 수행할 수 있습니다.

**예시 ./configuration/proton-ops.yaml:**

```
sync:
  services:
      frontend-svc:
          alpha:
              branch: dev
              spec: ./frontend-svc/test/frontend-spec.yaml
          beta:
              branch: dev
              spec: ./frontend-svc/test/frontend-spec.yaml
          gamma:
              branch: pre-prod
              spec: ./frontend-svc/pre-prod/frontend-spec.yaml
          prod-one:
              branch: prod
              spec: ./frontend-svc/prod/frontend-spec-second.yaml
          prod-two:
              branch: prod
              spec: ./frontend-svc/prod/frontend-spec-second.yaml
          prod-three:
              branch: prod
              spec: ./frontend-svc/prod/frontend-spec-second.yaml
```

위 예시에서 `frontend-svc`는 서비스 이름이고, `alpha`, `beta` , `gamma`, `prod-one`, `prod-two` 및 `prod-three`은 는 인스턴스입니다.

`spec` 파일은 `proton-ops`파일 내에 정의된 모든 인스턴스 또는 인스턴스의 하위 집합일 수 있습니다. 하지만 최소한 브랜치 내에 정의된 인스턴스와 동기화 대상 사양이 있어야 합니다. 인스턴스가 특정 브랜치 및 `spec` 파일 위치와 함께 `proton-ops` 파일에 정의되어 있지 않으면 서비스 동기화에서 해당 인스턴스를 만들거나 업데이트하지 않습니다.

다음 예는 `spec` 파일의 모양을 보여줍니다. `proton-ops` 파일은 이러한 `spec` 파일에서 동기화된다는 점을 기억합니다.

**예제 `./frontend-svc/test/frontend-spec.yaml`:**

```
proton: "ServiceSpec"
instances:
- name: "alpha"
  environment: "frontend-env"
  spec:
    port: 80
    desired_count: 1
    task_size: "x-small"
    image: "public.ecr.aws/z9d2n7e1/nginx:1.21.0"
- name: "beta"
  environment: "frontend-env"
  spec:
    port: 80
    desired_count: 1
    task_size: "x-small"
    image: "public.ecr.aws/z9d2n7e1/nginx:1.21.0"
```

**예제 `./frontend-svc/pre-prod/frontend-spec.yaml`:**

```
proton: "ServiceSpec"
instances:
- name: "gamma"
  environment: "frontend-env"
  spec:
    port: 80
    desired_count: 1
    task_size: "x-small"
    image: "public.ecr.aws/z9d2n7e1/nginx:1.21.0"
```

**예제 `./frontend-svc/prod/frontend-spec-second.yaml`:**

```
proton: "ServiceSpec"
instances:
- name: "prod-one"
  environment: "frontend-env"
  spec:
    port: 80
    desired_count: 1
    task_size: "x-small"
    image: "public.ecr.aws/z9d2n7e1/nginx:1.21.0"
- name: "prod-two"
  environment: "frontend-env"
  spec:
    port: 80
    desired_count: 1
    task_size: "x-small"
    image: "public.ecr.aws/z9d2n7e1/nginx:1.21.0"
- name: "prod-three"
  environment: "frontend-env"
  spec:
    port: 80
    desired_count: 1
    task_size: "x-small"
    image: "public.ecr.aws/z9d2n7e1/nginx:1.21.0"
```

인스턴스가 동기화되지 않고 동기화를 시도할 때 계속 문제가 발생하는 경우 [https://docs.aws.amazon.com//proton/latest/APIReference/API_GetServiceInstanceSyncStatus.html](https://docs.aws.amazon.com//proton/latest/APIReference/API_GetServiceInstanceSyncStatus.html)API를 직접 호출하면 문제를 해결하는 데 도움이 될 수 있습니다.

**참고**  
서비스 동기화를 사용하는 고객은 여전히 AWS Proton 제한으로 제한됩니다.

**Blockers**

서비스 동기화를 사용하여 AWS Proton 서비스를 동기화하면 서비스 사양을 업데이트하고 Git 리포지토리에서 서비스 인스턴스를 생성하고 업데이트할 수 있습니다. 그러나 AWS Management Console 또는를 통해 서비스 또는 인스턴스를 수동으로 업데이트해야 하는 경우가 있을 수 있습니다 AWS CLI.

AWS Proton 는 서비스 인스턴스 업데이트 또는 서비스 인스턴스 삭제 AWS CLI와 같이 AWS Management Console 또는를 통해 수행한 수동 변경 사항을 덮어쓰지 않도록 합니다. 이를 위해 AWS Proton 은 수동 변경이 감지되면 서비스 동기화를 비활성화하여 서비스 동기화 차단기를 자동으로 생성합니다.

서비스와 관련된 모든 차단기를 가져오려면 서비스와 관련된 각 `serviceInstance`에 대해 다음을 순서대로 수행해야 합니다.
+ `serviceName`만 사용하여 `getServiceSyncBlockerSummary` API를 직접 호출합니다.
+ `serviceName`와 `serviceInstanceName`를 사용하여 `getServiceSyncBlockerSummary` API를 직접 호출합니다.

그러면 가장 최근의 차단기 목록과 이와 관련된 상태가 반환됩니다. **ACTIVE**로 표시된 차단기가 있는 경우 각각의 경우에 대해 `blockerId` 및 `resolvedReason`가 있는 `UpdateServiceSyncBlocker` API를 직접 호출하여 해결해야 합니다.

서비스 인스턴스를 수동으로 업데이트하거나 생성하는 경우는 서비스 인스턴스에서 서비스 동기화 블로커를 AWS Proton 생성합니다.는 AWS Proton 다른 모든 서비스 인스턴스를 동기화하기 위해 계속 진행하지만 블로커가 해결될 때까지이 서비스 인스턴스의 동기화를 비활성화합니다. 서비스에서 서비스 인스턴스를 삭제하면가 서비스에서 서비스 동기화 차단기를 AWS Proton 생성합니다. 이렇게 하면 AWS Proton 가 블로커가 해결될 때까지 서비스 인스턴스를 동기화할 수 없습니다.

모든 활성 차단기를 설정한 후에는 활성 차단기 각각에 `blockerId` 및 `resolvedReason`이 있는 `UpdateServiceSyncBlocker` API를 직접 호출하여 차단기를 해결해야 합니다.

를 사용하여 로 이동하여 AWS Proton 서비스 동기화 탭을 선택하여 **서비스 동기화**가 비활성화되었는지 확인할 AWS Management Console수 있습니다. 서비스 또는 서비스 인스턴스가 차단된 경우 **활성화** 버튼이 나타납니다. 서비스 동기화를 활성화하려면 **활성화**를 선택합니다.

**Topics**
+ [AWS Proton OPS 파일](#service-sync-ops)
+ [서비스 동기화 구성 생성](create-service-sync.md)
+ [서비스 동기화의 구성 세부 정보 보기](get-service-sync.md)
+ [서비스 동기화 구성 편집](update-service-sync.md)
+ [서비스 동기화 구성 삭제](delete-service-sync.md)

# 서비스 동기화 구성 생성
<a name="create-service-sync"></a>



콘솔 또는를 사용하여 서비스 동기화 구성을 생성할 수 있습니다 AWS CLI.

------
#### [ AWS Management Console ]

1. **서비스 템플릿 선택** 페이지에서 템플릿을 선택하고 **구성**을 선택합니다.

1. **서비스 구성** 페이지의 **서비스 세부 정보** 단원에서 새 **서비스 이름**을 입력합니다.

1. (선택 사항) 서비스 설명을 입력합니다.

1. **애플리케이션 소스 코드 리포지토리** 섹션에서 **연결된 Git 리포**지토리 선택을 선택하여 이미 연결한 리포지토리를 선택합니다 AWS Proton. 연결된 리포지토리가 아직 없는 경우 **다른 Git 리포지토리 연결**을 선택하고 [리포지토리 링크 만들기](https://docs.aws.amazon.com//proton/latest/userguide/ag-create-repo.html)의 지침을 따릅니다.

1. **리포지토리**의 경우 목록에서 소스 코드 리포지토리의 이름을 선택합니다.

1. **브랜치** 경우 목록에서 소스 코드의 리포지토리 브랜치 이름을 선택합니다.

1. (선택 사항) **태그** 단원에서 **새 태그 추가** 를 선택하고 키와 값을 입력하여 고객 관리형 태그를 생성합니다.

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

1. **서비스 인스턴스 구성** 페이지의 **서비스 정의 소스** 단원에서 **Git에서 서비스 동기화**를 선택합니다.

1. **서비스 정의 파일** 단원에서 AWS Proton 가 `proton-ops` 파일을 생성하려면 **AWS Proton이 파일을 생성하도록 하기**를 선택합니다. 이 옵션을 사용하면가 지정한 위치에 `spec` 및 `proton-ops` 파일을 AWS Proton 생성합니다. 자체 OPS 파일을 생성하려면 **자체 파일을 제공합니다**를 선택합니다.

1. **서비스 정의 리포지토리** 섹션에서 **연결된 Git 리포지**토리 선택을 선택하여 이미 연결한 리포지토리를 선택합니다 AWS Proton.

1. **리포지토리 이름**의 경우 목록에서 소스 코드 리포지토리의 이름을 선택합니다.

1. **`proton-ops` 파일 브랜치**의 경우가 OPS 및 사양 파일을 AWS Proton 넣을 목록에서 브랜치의 이름을 선택합니다.

1. **서비스 인스턴스** 섹션의 각 필드는 `proton-ops` 파일의 값을 기반으로 자동으로 채워집니다.

1. **다음**을 선택하고 입력 내용을 검토합니다.

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

------
#### [ AWS CLI ]

**를 사용하여 서비스 동기화 구성 생성 AWS CLI**
+ 다음 명령을 실행합니다.

  ```
  $ aws proton create-service-sync-config \
      --resource "service-arn" \
      --repository-provider "GITHUB" \
      --repository "example/proton-sync-service" \
      --ops-file-branch "main" \
      --proton-ops-file "./configuration/custom-proton-ops.yaml" (optional)
  ```

  응답은 다음과 같습니다.

  ```
  {
      "serviceSyncConfig": {
          "branch": "main",
          "filePath": "./configuration/custom-proton-ops.yaml",
          "repositoryName": "example/proton-sync-service",
          "repositoryProvider": "GITHUB",
          "serviceName": "service name"
      }
  }
  ```

------

# 서비스 동기화의 구성 세부 정보 보기
<a name="get-service-sync"></a>

콘솔 또는 AWS CLI를 사용하여 서비스 동기화에 대한 구성 세부 정보 데이터를 볼 수 있습니다.

------
#### [ AWS Management Console ]

**콘솔을 사용하여 서비스 동기화의 구성 세부 정보를 봅니다.**

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

1. 세부 데이터를 보려면 서비스 동기화 구성을 만든 서비스의 이름을 선택합니다.

1. 서비스의 세부 정보 페이지에서 서비스 **동기화 탭을 선택하여 서비스 동기화에** 대한 구성 세부 데이터를 확인합니다.

------
#### [ AWS CLI ]

** AWS CLI 를 사용하여 동기화된 서비스를 가져옵니다.**

다음 명령을 실행합니다.

```
$ aws proton get-service-sync-config \
    --service-name "service name"
```

응답은 다음과 같습니다.

```
{
    "serviceSyncConfig": {
        "branch": "main",
        "filePath": "./configuration/custom-proton-ops.yaml",
        "repositoryName": "example/proton-sync-service",
        "repositoryProvider": "GITHUB",
        "serviceName": "service name"
    }
}
```

** AWS CLI 를 사용하여 서비스 동기화 상태를 가져옵니다.**

다음 명령을 실행합니다.

```
$ aws proton get-service-sync-status \
    --service-name "service name"
```

------

# 서비스 동기화 구성 편집
<a name="update-service-sync"></a>

콘솔 또는를 사용하여 서비스 동기화 구성을 편집할 수 있습니다 AWS CLI.



------
#### [ AWS Management Console ]

콘솔을 사용하여 서비스 동기화 구성을 편집합니다.

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

1. 세부 데이터를 보려면 서비스 동기화 구성을 만든 서비스의 이름을 선택합니다.

1. 서비스 세부 정보 페이지에서 **서비스 동기화** 탭을 선택합니다.

1. **서비스 동기화** 단원에서 **편집**을 선택합니다.

1. **편집** 페이지에서 편집하려는 정보를 업데이트한 다음 **저장**을 선택합니다.

------
#### [ AWS CLI ]

**다음 예제 명령 및 응답은 AWS CLI를 사용하여 서비스 동기화 구성을 편집하는 방법을 보여줍니다.**

다음 명령을 실행합니다.

```
$ aws proton update-service-sync-config \
    --service-name "service name" \
    --repository-provider "GITHUB" \
    --repository "example/proton-sync-service" \
    --ops-file-branch "main" \
    --ops-file "./configuration/custom-proton-ops.yaml"
```

응답은 다음과 같습니다.

```
{
    "serviceSyncConfig": {
        "branch": "main",
        "filePath": "./configuration/custom-proton-ops.yaml",
        "repositoryName": "example/proton-sync-service",
        "repositoryProvider": "GITHUB",
        "serviceName": "service name"
    }
}
```

------

# 서비스 동기화 구성 삭제
<a name="delete-service-sync"></a>

콘솔 또는를 사용하여 서비스 동기화 구성을 삭제할 수 있습니다 AWS CLI.

------
#### [ AWS Management Console ]

**콘솔을 사용하여 서비스 동기화 구성 삭제**

1. 서비스 세부 정보 페이지에서 **서비스 동기화** 탭을 선택합니다.

1. **서비스 동기화 세부 정보** 단원에서 **연결 해제**를 선택하여 리포지토리 연결을 끊습니다. 리포지토리 연결이 끊긴 후에는 더 이상 해당 리포지토리에서 서비스를 동기화하지 않습니다.

------
#### [ AWS CLI ]

**다음 예제 명령 및 응답은를 사용하여 서비스 동기화 구성을 삭제 AWS CLI 하는 방법을 보여줍니다.**

다음 명령을 실행합니다.

```
$ aws proton delete-service-sync-config \
    --service-name "service name"
```

응답은 다음과 같습니다.

```
{
    "serviceSyncConfig": {
        "branch": "main",
        "filePath": "./configuration/custom-proton-ops.yaml",
        "repositoryName": "example/proton-sync-service",
        "repositoryProvider": "GITHUB",
        "serviceName": "service name"
    }
}
```

**참고**  
서비스 동기화는 서비스 인스턴스를 삭제하지 않습니다. 구성만 삭제됩니다.

------