

# 스테이징 배포 및 지속적 배포 정책 사용
<a name="working-with-staging-distribution-continuous-deployment-policy"></a>

AWS Command Line Interface(AWS CLI) 또는 CloudFront API를 사용하여 CloudFront 콘솔에서 스테이징 배포와 지속적 배포 정책을 생성, 업데이트 및 수정할 수 있습니다.

## 스테이징 배포 및 지속적 배포 정책 생성
<a name="create-staging-distribution-continuous-deployment-policy"></a>

다음 절차에서는 스테이징 배포 및 지속적 배포 정책을 생성하는 방법을 보여 줍니다.

------
#### [ Console ]

AWS Management Console을 사용하여 스테이징 배포 및 지속적 배포 정책을 생성할 수 있습니다.

**스테이징 배포 및 연속 배포 정책 생성(콘솔)**

1. AWS Management Console에 로그인한 다음 [https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)에서 CloudFront 콘솔을 엽니다.

1. 탐색 창에서 **Distributions(배포)**를 선택합니다.

1. *기본 배포*로 사용할 배포를 선택합니다. 기본 배포는 현재 프로덕션 트래픽을 제공하는 배포이며, 여기서 스테이징 배포를 만들게 됩니다.

1. **Continuous deployment**(지속적 배포) 섹션에서 **Create staging distribution**(스테이징 배포 생성)을 선택합니다. 그러면 **Create staging distribution**(스테이징 배포 생성) 마법사가 열립니다.

1. **Create staging distribution**(스테이징 배포 생성) 마법사에서 다음을 수행합니다.

   1. (선택 사항) 스테이징 배포에 대한 설명을 입력합니다.

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

   1. 스테이징 배포의 구성을 수정합니다. 업데이트할 수 있는 설정에 대한 자세한 내용은 [기본 및 스테이징 배포 업데이트](understanding-continuous-deployment.md#updating-staging-and-primary-distributions)를 참조하십시오.

      스테이징 배포의 구성 수정을 마치면 **Next**(다음)을 선택합니다.

   1. 콘솔을 사용하여 **Traffic configuration**(트래픽 구성)을 지정합니다. 이에 따라 CloudFront가 스테이징 배포로 트래픽을 라우팅하는 방식이 결정됩니다. (CloudFront는 트래픽 구성을 *지속적 배포 정책*에 저장합니다.)

      **트래픽 구성** 옵션에 대한 자세한 내용은 [요청을 스테이징 배포로 라우팅](understanding-continuous-deployment.md#understanding-continuous-deployment-routing)을 참조하세요.

      **Traffic configuration**(트래픽 구성)을 완료했으면 **Next**(다음)을 선택합니다.

   1. 트래픽 구성을 포함하여 스테이징 배포에 대한 구성을 검토한 다음 **Create staging distribution**(스테이징 배포 생성)을 선택합니다.

CloudFront 콘솔에서 **Create staging distribution**(스테이징 배포 생성) 마법사를 완료하면 CloudFront는 다음을 수행합니다.
+ 지정한 설정을 사용하여 스테이징 배포를 만듭니다(5c 단계).
+ 지정한 트래픽 구성을 사용하여 지속적 배포 정책을 생성합니다(5d단계).
+ 스테이징 배포를 만들 때 바탕이 된 기본 배포에 지속적 배포 정책을 연결합니다.

기본 배포의 구성이 연결된 지속적 배포 정책을 사용하여 엣지 로케이션에 배포되면 CloudFront는 트래픽 구성을 기반으로 지정된 트래픽 부분을 스테이징 배포로 전송하기 시작합니다.

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

AWS CLI에서 스테이징 배포와 지속적 배포 정책을 생성하려면 다음 절차를 사용합니다.

**스테이징 배포 생성(CLI)**

1. **aws cloudfront get-distribution** 및 **grep** 명령을 함께 사용하면 *기본 배포*로 사용할 배포의 `ETag` 값을 얻을 수 있습니다. 기본 배포는 현재 프로덕션 트래픽을 제공하는 배포이며, 여기서 스테이징 배포를 만들게 됩니다.

   다음 명령은 예시를 나타냅니다. 다음 예에서는 {{primary\_distribution\_ID}}를 기본 배포의 ID로 바꿉니다.

   ```
   aws cloudfront get-distribution --id {{primary_distribution_ID}} | grep 'ETag'
   ```

   다음 단계에 필요하므로 `ETag` 값을 복사하십시오.

1. **aws cloudfront copy-distribution** 명령을 사용하여 스테이징 배포를 만들 수 있습니다. 다음 예제 명령에서는 가독성을 높이기 위해 이스케이프 문자(\\)와 줄 바꿈을 사용하지만 실제 명령에서는 이러한 문자를 생략해야 합니다. 이 예에서 다음과 같이 합니다.
   + {{primary\_distribution\_ID}}를 기본 배포의 ID로 바꿉니다.
   + {{primary\_distribution\_ETag}}를 기본 배포의 `ETag` 값(이전 단계에서 가져온 값)으로 바꿉니다.
   + (선택 사항) {{CLI\_example}}을 원하는 호출자 참조 ID로 바꿉니다.

   ```
   aws cloudfront copy-distribution --primary-distribution-id {{primary_distribution_ID}} \
                                    --if-match {{primary_distribution_ETag}} \
                                    --staging \
                                    --caller-reference '{{CLI_example}}'
   ```

   명령의 출력에는 스테이징 배포와 해당 구성에 대한 정보가 표시됩니다. 스테이징 배포의 CloudFront 도메인 이름은 다음 단계에 필요하므로 복사합니다.

**지속적 배포 정책 생성(입력 파일이 있는 CLI)**

1. 다음 명령을 사용하여 `continuous-deployment-policy.yaml` 명령에 대한 모든 입력 파라미터가 포함된 **create-continuous-deployment-policy**이라는 파일을 만듭니다. 다음 명령에서는 가독성을 높이기 위해 이스케이프 문자(\\)와 줄 바꿈을 사용하지만 실제 명령에서는 이러한 문자를 생략해야 합니다.

   ```
   aws cloudfront create-continuous-deployment-policy --generate-cli-skeleton yaml-input \
                                                      > continuous-deployment-policy.yaml
   ```

1. 방금 생성한 `continuous-deployment-policy.yaml`이라는 파일을 엽니다. 파일을 편집하여 원하는 지속적 배포 정책 설정을 지정한 다음 파일을 저장합니다. 파일을 편집할 때:
   + `StagingDistributionDnsNames` 섹션:
     + `Quantity`의 값을 `1`로 변경합니다.
     + `Items`의 경우 스테이징 배포의 CloudFront 도메인 이름(이전 단계에서 저장한 이름)을 붙여 넣습니다.
   + `TrafficConfig` 섹션:
     + `Type`을 `SingleWeight` 또는 `SingleHeader`로 선택합니다.
     + 다른 유형에 대한 설정을 제거합니다. 예를 들어, 가중치 기반 트래픽 구성을 원하는 경우 `Type`을 `SingleWeight`로 설정한 다음 `SingleHeaderConfig` 설정을 제거합니다.
     + 가중치 기반 트래픽 구성을 사용하려면 `Weight`의 값을 `.01`(1%) 에서 `.15`(15%) 사이의 10진수로 설정합니다.

     `TrafficConfig`의 이러한 옵션에 대한 자세한 내용은 [요청을 스테이징 배포로 라우팅](understanding-continuous-deployment.md#understanding-continuous-deployment-routing) 및 [가중치 기반 구성을 위한 세션 고정성](understanding-continuous-deployment.md#understanding-continuous-deployment-sessions)을 참조하세요.

1. 다음 명령을 사용하여 `continuous-deployment-policy.yaml` 파일의 입력 파라미터로 지속적 배포 정책을 만듭니다.

   ```
   aws cloudfront create-continuous-deployment-policy --cli-input-yaml file://continuous-deployment-policy.yaml
   ```

   명령 출력의 `Id` 값을 복사합니다. 이는 지속적 배포 정책 ID이며 다음 단계에서 필요합니다.

**기본 배포에 지속적 배포 정책 연결(입력 파일이 있는 CLI)**

1. 다음 명령을 사용하여 기본 배포에 대한 구성을 이름이 `primary-distribution.yaml`인 파일에 저장합니다. {{primary\_distribution\_ID}}를 기본 배포의 ID로 바꿉니다.

   ```
   aws cloudfront get-distribution-config --id {{primary_distribution_ID}} --output yaml > primary-distribution.yaml
   ```

1. 방금 생성한 `primary-distribution.yaml`이라는 파일을 엽니다. 파일을 편집하여 다음과 같이 변경합니다.
   + 지속적 배포 정책 ID(이전 단계에서 복사한 ID)를 `ContinuousDeploymentPolicyId` 필드에 붙여 넣습니다.
   + `ETag` 필드의 이름을 `IfMatch`로 바꾸지만 필드 값은 변경하지 마세요.

   완료되면 파일을 저장합니다.

1. 지속적 배포 정책을 사용하도록 기본 배포를 업데이트하려면 다음 명령을 사용합니다. {{primary\_distribution\_ID}}를 기본 배포의 ID로 바꿉니다.

   ```
   aws cloudfront update-distribution --id {{primary_distribution_ID}} --cli-input-yaml file://primary-distribution.yaml
   ```

기본 배포의 구성이 연결된 지속적 배포 정책을 사용하여 엣지 로케이션에 배포되면 CloudFront는 트래픽 구성을 기반으로 지정된 트래픽 부분을 스테이징 배포로 전송하기 시작합니다.

------
#### [ API ]

CloudFront API를 사용하여 스테이징 배포 및 지속적 배포 정책을 생성하려면 다음 API 작업을 사용합니다.
+ [CopyDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CopyDistribution.html)
+ [CreateContinuousDeploymentPolicy](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_CreateContinuousDeploymentPolicy.html)

이러한 API 호출에서 지정하는 필드에 대한 자세한 내용은 다음을 참조하세요.
+ [요청을 스테이징 배포로 라우팅](understanding-continuous-deployment.md#understanding-continuous-deployment-routing)
+ [가중치 기반 구성을 위한 세션 고정성](understanding-continuous-deployment.md#understanding-continuous-deployment-sessions)
+ AWS SDK 또는 기타 API 클라이언트에 대한 API 참조 설명서

스테이징 배포와 지속적 배포 정책을 만든 후에는 [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html)(기본 배포에서)을 사용하여 지속적 배포 정책을 기본 배포에 연결합니다.

------

## 스테이징 배포 업데이트
<a name="update-staging-distribution"></a>

다음 절차에서는 스테이징 배포 및 지속적 배포 정책을 업데이트하는 방법을 보여 줍니다.

------
#### [ Console ]

기본 배포와 스테이징 배포 모두에 대해 특정 구성을 업데이트할 수 있습니다. 자세한 내용은 [기본 및 스테이징 배포 업데이트](understanding-continuous-deployment.md#updating-staging-and-primary-distributions) 섹션을 참조하세요.

**스테이징 배포 업데이트(콘솔)**

1. [https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)에서 CloudFront 콘솔을 엽니다.

1. 탐색 창에서 **Distributions(배포)**를 선택합니다.

1. 기본 배포를 선택합니다. 현재 프로덕션 트래픽을 제공하는 배포이며, 여기서 스테이징 배포를 만들게 됩니다.

1. **View staging distribution**(스테이징 배포 보기)를 선택합니다.

1. 콘솔을 사용하여 스테이징 배포의 구성을 수정합니다. 업데이트할 수 있는 설정에 대한 자세한 내용은 [기본 및 스테이징 배포 업데이트](understanding-continuous-deployment.md#updating-staging-and-primary-distributions)를 참조하십시오.

스테이징 배포의 구성이 엣지 로케이션에 배포되는 즉시 스테이징 배포로 라우팅되는 수신 트래픽에 적용됩니다.

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

**스테이징 배포 업데이트(입력 파일이 있는 CLI)**

1. 다음 명령을 사용하여 스테이징 배포에 대한 구성을 이름이 `staging-distribution.yaml`인 파일에 저장합니다. {{staging\_distribution\_ID}}를 스테이징 배포 ID로 바꿉니다.

   ```
   aws cloudfront get-distribution-config --id {{staging_distribution_ID}} --output yaml > staging-distribution.yaml
   ```

1. 방금 생성한 `staging-distribution.yaml`이라는 파일을 엽니다. 파일을 편집하여 다음과 같이 변경합니다.
   + 스테이징 배포의 구성을 수정합니다. 업데이트할 수 있는 설정에 대한 자세한 내용은 [기본 및 스테이징 배포 업데이트](understanding-continuous-deployment.md#updating-staging-and-primary-distributions)를 참조하십시오.
   + `ETag` 필드의 이름을 `IfMatch`로 바꾸지만 필드 값은 변경하지 마세요.

   완료되면 파일을 저장합니다.

1. 다음 명령을 사용하여 스테이징 배포의 구성을 업데이트합니다. {{staging\_distribution\_ID}}를 스테이징 배포 ID로 바꿉니다.

   ```
   aws cloudfront update-distribution --id {{staging_distribution_ID}} --cli-input-yaml file://staging-distribution.yaml
   ```

스테이징 배포의 구성이 엣지 로케이션에 배포되는 즉시 스테이징 배포로 라우팅되는 수신 트래픽에 적용됩니다.

------
#### [ API ]

스테이징 배포의 구성을 업데이트하려면 [UpdateDistribution](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistribution.html)(스테이징 배포에서)을 사용하여 스테이징 배포의 구성을 수정합니다. 업데이트할 수 있는 설정에 대한 자세한 내용은 [기본 및 스테이징 배포 업데이트](understanding-continuous-deployment.md#updating-staging-and-primary-distributions)를 참조하십시오.

------

## 지속적 배포 정책 업데이트
<a name="update-continuous-deployment-policy"></a>

다음 절차에서는 지속적 배포 정책을 업데이트하는 방법을 보여 줍니다.

------
#### [ Console ]

지속적 배포 정책을 업데이트하여 배포의 트래픽 구성을 업데이트할 수 있습니다.

**지속적 배포 정책 업데이트(콘솔)**

1. [https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)에서 CloudFront 콘솔을 엽니다.

1. 탐색 창에서 **Distributions(배포)**를 선택합니다.

1. 기본 배포를 선택합니다. 현재 프로덕션 트래픽을 제공하는 배포로, 스테이징 배포를 만들 때 바탕이 된 배포입니다.

1. **Continuous deployment**(지속적 배포) 섹션에서 **Edit policy**(정책 편집)을 선택합니다.

1. 지속적 배포 정책에서 트래픽 구성을 수정합니다. 작업을 마쳤으면 **변경 사항 저장**을 선택합니다.

기본 배포의 구성이 업데이트된 지속적 배포 정책을 사용하여 엣지 로케이션에 배포되면 CloudFront는 업데이트된 트래픽 구성을 기반으로 지정된 트래픽 부분을 스테이징 배포로 전송하기 시작합니다.

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

**지속적 배포 정책 업데이트(입력 파일이 있는 CLI)**

1. 다음 명령을 사용하여 지속적 배포 정책의 구성을 이름이 `continuous-deployment-policy.yaml`인 파일로 저장합니다. {{continuous\_deployment\_policy\_ID}}를 지속적 배포 정책의 ID로 바꾸십시오. 다음 명령에서는 가독성을 높이기 위해 이스케이프 문자(\\)와 줄 바꿈을 사용하지만 실제 명령에서는 이러한 문자를 생략해야 합니다.

   ```
   aws cloudfront get-continuous-deployment-policy-config --id {{continuous_deployment_policy_ID}} \
                                                          --output yaml > continuous-deployment-policy.yaml
   ```

1. 방금 생성한 `continuous-deployment-policy.yaml`이라는 파일을 엽니다. 파일을 편집하여 다음과 같이 변경합니다.
   + 지속적 배포 정책에서 구성을 원하는 대로 수정합니다. 예를 들어 헤더 기반 트래픽 구성에서 가중치 기반 트래픽 구성으로 변경하거나 가중치 기반 구성의 트래픽 비율(가중치)을 변경할 수 있습니다. 자세한 내용은 [요청을 스테이징 배포로 라우팅](understanding-continuous-deployment.md#understanding-continuous-deployment-routing) 및 [가중치 기반 구성을 위한 세션 고정성](understanding-continuous-deployment.md#understanding-continuous-deployment-sessions)(을)를 참조하세요.
   + `ETag` 필드의 이름을 `IfMatch`로 바꾸지만 필드 값은 변경하지 마세요.

   완료되면 파일을 저장합니다.

1. 지속적 배포 정책을 업데이트하려면 다음 명령을 사용합니다. {{continuous\_deployment\_policy\_ID}}를 지속적 배포 정책의 ID로 바꾸십시오. 다음 명령에서는 가독성을 높이기 위해 이스케이프 문자(\\)와 줄 바꿈을 사용하지만 실제 명령에서는 이러한 문자를 생략해야 합니다.

   ```
   aws cloudfront update-continuous-deployment-policy --id {{continuous_deployment_policy_ID}} \
                                                      --cli-input-yaml file://continuous-deployment-policy.yaml
   ```

기본 배포의 구성이 업데이트된 지속적 배포 정책을 사용하여 엣지 로케이션에 배포되면 CloudFront는 업데이트된 트래픽 구성을 기반으로 지정된 트래픽 부분을 스테이징 배포로 전송하기 시작합니다.

------
#### [ API ]

지속적 배포 정책을 업데이트하려면 [UpdateContinuousDeploymentPolicy](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateContinuousDeploymentPolicy.html)를 사용합니다.

------

## 스테이징 배포 구성 승격
<a name="promote-staging-distribution-configuration"></a>

다음 절차에서는 스테이징 배포 구성을 승격하는 방법을 보여 줍니다.

------
#### [ Console ]

스테이징 배포를 *승격*하면 CloudFront는 스테이징 배포의 구성을 기본 배포로 복사합니다. CloudFront는 지속적 배포 정책도 비활성화하며 모든 트래픽을 기본 배포로 라우팅합니다.

구성을 승격시킨 후 다음에 구성 변경을 테스트할 때 동일한 스테이징 배포를 재사용할 수 있습니다.

**스테이징 배포의 구성 승격(콘솔)**

1. [https://console.aws.amazon.com/cloudfront/v4/home](https://console.aws.amazon.com/cloudfront/v4/home)에서 CloudFront 콘솔을 엽니다.

1. 탐색 창에서 **Distributions(배포)**를 선택합니다.

1. 기본 배포를 선택합니다. 현재 프로덕션 트래픽을 제공하는 배포로, 스테이징 배포를 만들 때 바탕이 된 배포입니다.

1. **지속적 배포** 섹션에서 **승격**을 선택합니다.

1. **confirm**을 입력한 다음 **Promote**(승격)을 선택합니다.

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

스테이징 배포를 *승격*하면 CloudFront는 스테이징 배포의 구성을 기본 배포로 복사합니다. CloudFront는 지속적 배포 정책도 비활성화하며 모든 트래픽을 기본 배포로 라우팅합니다.

구성을 승격시킨 후 다음에 구성 변경을 테스트할 때 동일한 스테이징 배포를 재사용할 수 있습니다.

**스테이징 배포의 구성 승격(CLI)**
+ **aws cloudfront update-distribution-with-staging-config** 명령을 사용하여 스테이징 배포의 구성을 기본 배포로 승격시킵니다. 다음 예제 명령에서는 가독성을 높이기 위해 이스케이프 문자(\\)와 줄 바꿈을 사용하지만 실제 명령에서는 이러한 문자를 생략해야 합니다. 이 예에서 다음과 같이 합니다.
  + {{primary\_distribution\_ID}}를 기본 배포의 ID로 바꿉니다.
  + {{staging\_distribution\_ID}}를 스테이징 배포 ID로 바꿉니다.
  + {{primary\_distribution\_ETag}} 및 {{staging\_distribution\_ETag}}를 기본 및 스테이징 배포의 `ETag` 값으로 바꿉니다. 예와 같이 기본 분포의 값이 첫 번째인지 확인하십시오.

  ```
  aws cloudfront update-distribution-with-staging-config --id {{primary_distribution_ID}} \
                                                         --staging-distribution-id {{staging_distribution_ID}} \
                                                         --if-match '{{primary_distribution_ETag}},{{staging_distribution_ETag}}'
  ```

------
#### [ API ]

스테이징 배포의 구성을 기본 배포로 승격시키려면 [UpdateDistributionWithStagingConfig](https://docs.aws.amazon.com/cloudfront/latest/APIReference/API_UpdateDistributionWithStagingConfig.html)를 사용합니다.

------