

# CloudFront 지속적 배포를 사용하여 CDN 구성 변경을 안전하게 테스트
<a name="continuous-deployment"></a>

Amazon CloudFront *지속적 배포*를 사용하면 프로덕션 트래픽의 하위 집합으로 먼저 테스트하여 CDN 구성의 변경 사항을 안전하게 배포할 수 있습니다. *스테이징 배포*와 *지속적 배포 정책*을 사용하여 실제(프로덕션) 최종 사용자의 일부 트래픽을 새 CDN 구성으로 전송하고 예상대로 작동하는지 확인할 수 있습니다. 새 구성의 성능을 실시간으로 모니터링하고 준비가 되면 *기본 배포*를 통해 모든 트래픽을 처리하도록 새 구성을 승격할 수 있습니다.

다음 다이어그램은 CloudFront 지속적 배포를 사용할 경우의 이점을 보여 줍니다. 이 기능이 없으면 시뮬레이션된 트래픽으로 CDN 구성 변경을 테스트해야 합니다. 지속적 배포를 사용하면 프로덕션 트래픽의 하위 집합을 사용하여 변경 사항을 테스트한 다음 준비가 되면 기본 배포로 변경 사항을 승격할 수 있습니다.

![\[프로덕션 트래픽을 스테이징 배포로 보내는 CloudFront 연속 배포의 그림.\]](http://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/images/cloudfront-continuous-deployment.png)


다음 주제에서 지속적 배포 작업에 대해 자세히 알아봅니다.

**Topics**
+ [CloudFront 지속적 배포 워크플로](continuous-deployment-workflow.md)
+ [스테이징 배포 및 지속적 배포 정책 사용](working-with-staging-distribution-continuous-deployment-policy.md)
+ [스테이징 배포 모니터링](monitoring-staging-distribution.md)
+ [지속적 배포의 작동 방식 알아보기](understanding-continuous-deployment.md)
+ [지속적 배포를 위한 할당량 및 기타 고려 사항](continuous-deployment-quotas-considerations.md)

# CloudFront 지속적 배포 워크플로
<a name="continuous-deployment-workflow"></a>

다음 고급 워크플로는 CloudFront 지속적 배포를 통해 구성 변경을 안전하게 테스트하고 배포하는 방법을 설명합니다.

1. *기본 배포*로 사용할 배포를 선택합니다. 기본 배포는 현재 프로덕션 트래픽을 제공하는 배포입니다.

1. 기본 배포에서 *스테이징 배포*를 생성합니다. 스테이징 배포는 기본 배포의 복사본으로 시작됩니다.

1. *지속적 배포 정책* 내에서 *트래픽 구성*을 생성하고 이를 기본 배포에 연결합니다. 이에 따라 CloudFront가 스테이징 배포로 트래픽을 라우팅하는 방식이 결정됩니다. 요청을 스테이징 배포로 라우팅하는 방법에 대한 자세한 내용은 [요청을 스테이징 배포로 라우팅](understanding-continuous-deployment.md#understanding-continuous-deployment-routing)을 참조하십시오.

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

1. 스테이징 배포를 모니터링하여 구성 변경이 예상대로 수행되는지 확인합니다. 스테이징 배포를 모니터링하는 방법에 대한 자세한 내용은 [스테이징 배포 모니터링](monitoring-staging-distribution.md)을 참조하십시오.

   스테이징 배포를 모니터링하면서 다음을 수행할 수 있습니다.
   + 스테이징 배포의 구성을 다시 업데이트하여 구성 변경을 계속 테스트합니다.
   + 연속 배포 정책(트래픽 구성)을 업데이트하여 스테이징 배포에 더 많은 트래픽을 보내거나 더 적게 보냅니다.

1. 스테이징 배포의 성능이 만족스러우면 스테이징 배포의 구성을 기본 배포로 *승격합니다*. 그러면 스테이징 배포의 구성이 기본 배포에 복사됩니다. 이렇게 하면 지속적 배포 정책도 비활성화되므로 CloudFront는 모든 트래픽을 기본 배포로 라우팅합니다.

스테이징 배포의 성능을 모니터링(5단계)하고 특정 기준이 충족되면 구성을 자동으로 승격(6단계)하는 자동화를 구축할 수 있습니다.

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

CloudFront 콘솔, AWS CLI 또는 CloudFront API에서 스테이징 배포 및 지속적 배포 정책을 사용하는 방법에 대한 자세한 내용은 다음 섹션을 참조하십시오.

# 스테이징 배포 및 지속적 배포 정책 사용
<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\$1distribution\$1ID*를 기본 배포의 ID로 바꿉니다.

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

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

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

   ```
   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\$1distribution\$1ID*를 기본 배포의 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\$1distribution\$1ID*를 기본 배포의 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\$1distribution\$1ID*를 스테이징 배포 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\$1distribution\$1ID*를 스테이징 배포 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\$1deployment\$1policy\$1ID*를 지속적 배포 정책의 ID로 바꾸십시오. 다음 명령에서는 가독성을 높이기 위해 이스케이프 문자(\$1)와 줄 바꿈을 사용하지만 실제 명령에서는 이러한 문자를 생략해야 합니다.

   ```
   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\$1deployment\$1policy\$1ID*를 지속적 배포 정책의 ID로 바꾸십시오. 다음 명령에서는 가독성을 높이기 위해 이스케이프 문자(\$1)와 줄 바꿈을 사용하지만 실제 명령에서는 이러한 문자를 생략해야 합니다.

   ```
   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** 명령을 사용하여 스테이징 배포의 구성을 기본 배포로 승격시킵니다. 다음 예제 명령에서는 가독성을 높이기 위해 이스케이프 문자(\$1)와 줄 바꿈을 사용하지만 실제 명령에서는 이러한 문자를 생략해야 합니다. 이 예에서 다음과 같이 합니다.
  + *primary\$1distribution\$1ID*를 기본 배포의 ID로 바꿉니다.
  + *staging\$1distribution\$1ID*를 스테이징 배포 ID로 바꿉니다.
  + *primary\$1distribution\$1ETag* 및 *staging\$1distribution\$1ETag*를 기본 및 스테이징 배포의 `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)를 사용합니다.

------

# 스테이징 배포 모니터링
<a name="monitoring-staging-distribution"></a>

스테이징 배포의 성능을 모니터링하려면 CloudFront에서 모든 배포에 제공하는 것과 동일한 [지표, 로그 및 보고서](reports-and-monitoring.md)를 사용할 수 있습니다. 예제:
+ CloudFront 콘솔에서 [기본 CloudFront 배포 지표](viewing-cloudfront-metrics.md#monitoring-console.distributions)(예: 총 요청 수 및 오류율)를 볼 수 있으며 추가 비용을 지불하고 [추가 지표](viewing-cloudfront-metrics.md#monitoring-console.distributions-additional)(예: 캐시 적중률 및 상태 코드별 오류 발생률)를 설정할 수 있습니다. 이러한 지표를 기반으로 경보를 생성할 수도 있습니다.
+ [표준 로그](AccessLogs.md)와 [실시간 액세스 로그](real-time-logs.md)를 보고 스테이징 배포에서 받은 요청에 대한 자세한 정보를 얻을 수 있습니다. 표준 로그에는 CloudFront가 스테이징 배포로 요청을 라우팅하기 전에 요청이 원래 전송된 기본 배포를 식별하는 데 도움이 되는 두 필드 `primary-distribution-id` 및 `primary-distribution-dns-name`이 있습니다.
+ CloudFront 콘솔에서 [보고서](reports.md)(예: 캐시 통계 보고서)를 보고 다운로드할 수 있습니다.

# 지속적 배포의 작동 방식 알아보기
<a name="understanding-continuous-deployment"></a>

다음 주제에서는 CloudFront 지속적 배포의 작동 방식을 설명합니다.

**Topics**
+ [요청을 스테이징 배포로 라우팅](#understanding-continuous-deployment-routing)
+ [가중치 기반 구성을 위한 세션 고정성](#understanding-continuous-deployment-sessions)
+ [기본 및 스테이징 배포 업데이트](#updating-staging-and-primary-distributions)
+ [캐시를 공유하지 않는 기본 배포와 스테이징 배포](#staging-and-primary-no-shared-cache)

## 요청을 스테이징 배포로 라우팅
<a name="understanding-continuous-deployment-routing"></a>

CloudFront 지속적 배포를 사용할 경우 최종 사용자 요청에 대한 내용을 변경할 필요가 없습니다. 최종 사용자는 DNS 이름, IP 주소 또는 CNAME을 사용하여 스테이징 배포에 직접 요청을 보낼 수 없습니다. 대신 최종 사용자는 기본 (프로덕션) 배포에 요청을 보내고 CloudFront는 지속적 배포 정책의 트래픽 구성 설정에 따라 이러한 요청 중 일부를 스테이징 배포로 라우팅합니다. 다음과 같은 두 가지 유형의 트래픽 구성이 있습니다.

**가중치 기반**  
가중치 기반 구성은 지정된 비율의 최종 사용자 요청을 스테이징 배포로 라우팅합니다. 가중치 기반 구성을 사용하는 경우 *세션 고정성*을 활성화하여 CloudFront가 동일한 사용자의 요청을 단일 세션의 일부로 처리하도록 할 수도 있습니다. 자세한 내용은 [가중치 기반 구성을 위한 세션 고정성](#understanding-continuous-deployment-sessions) 섹션을 참조하세요.

**헤더 기반**  
헤더 기반 구성은 최종 사용자 요청에 특정 HTTP 헤더(헤더 및 값 지정)가 포함된 경우 요청을 스테이징 배포로 라우팅합니다. 지정된 헤더와 값을 포함하지 않는 요청은 기본 배포로 라우팅됩니다. 이 구성은 로컬 테스트나 최종 사용자 요청을 제어할 수 있는 경우에 유용합니다.  
스테이징 배포로 라우팅되는 헤더에는 `aws-cf-cd-` 접두사가 포함되어야 합니다.

## 가중치 기반 구성을 위한 세션 고정성
<a name="understanding-continuous-deployment-sessions"></a>

트래픽을 스테이징 배포로 라우팅하기 위해 가중치 기반 구성을 사용하는 경우 *세션 고정성*을 활성화하여 CloudFront가 동일한 사용자의 요청을 단일 세션의 일부로 처리하도록 할 수도 있습니다. 세션 고정성을 활성화하면 CloudFront는 쿠키를 설정하여 단일 세션에서 동일한 사용자의 모든 요청이 기본 배포든 스테이징이든 하나의 배포에서 처리되도록 합니다.

세션 고정성을 활성화하면 *유휴 기간*도 지정할 수 있습니다. 이 시간 동안 사용자가 유휴 상태(요청을 보내지 않음)인 경우 세션이 만료되고 CloudFront는 이 사용자의 향후 요청을 새 세션으로 취급합니다. 유휴 지속 시간을 300(5분)에서 3600(1시간) 사이의 초 수로 지정합니다.

다음과 같은 경우 CloudFront는 모든 세션(활성 세션 포함)을 재설정하고 모든 요청을 새 세션으로 간주합니다.
+ 지속적 배포 정책 활성화 또는 비활성화
+ 세션 고정성 설정 활성화 또는 비활성화

## 기본 및 스테이징 배포 업데이트
<a name="updating-staging-and-primary-distributions"></a>

기본 배포에 연속 배포 정책이 연결된 경우 기본 배포와 스테이징 배포 모두에 대해 다음과 같은 구성 변경을 사용할 수 있습니다.
+ 기본 캐시 동작을 포함한 모든 캐시 동작 설정
+ 모든 오리진 설정(오리진 및 오리진 그룹)
+ 사용자 지정 오류 응답(오류 페이지)
+ 지리적 제한
+ 기본 루트 객체
+ 로깅 설정
+ 설명(댓글)

또한 캐시 정책, 응답 헤더 정책, CloudFront 함수 또는 Lambda@Edge 함수와 같이 배포 구성에서 참조되는 외부 리소스를 업데이트할 수 있습니다.

## 캐시를 공유하지 않는 기본 배포와 스테이징 배포
<a name="staging-and-primary-no-shared-cache"></a>

기본 배포와 스테이징 배포는 캐시를 공유하지 않습니다. CloudFront가 스테이징 배포에 첫 번째 요청을 보낼 때 해당 캐시는 비어 있습니다. 요청이 스테이징 배포에 도착하면 응답 캐싱을 시작합니다(그렇게 하도록 구성된 경우).

# 지속적 배포를 위한 할당량 및 기타 고려 사항
<a name="continuous-deployment-quotas-considerations"></a>

CloudFront 지속적 배포에는 다음 할당량 및 기타 고려 사항이 적용됩니다.

## 할당량
<a name="continuous-deployment-quotas"></a>
+ AWS 계정당 최대 스테이징 배포 수: 20
+ AWS 계정당 최대 지속적 배포 정책 수: 20
+ 가중치 기반 구성에서 스테이징 배포로 보낼 수 있는 최대 트래픽 비율: 15%
+ 세션 고정 유휴 기간의 최소값 및 최대값: 300\$13600초

자세한 내용은 [할당량](cloudfront-limits.md) 섹션을 참조하세요.

**참고**  
지속적 배포를 사용하고 기본 배포가 S3 버킷 액세스를 위한 OAC로 설정된 경우 스테이징 배포에 대한 액세스를 허용하도록 S3 버킷 정책을 업데이트합니다. 예제 S3 버킷 정책은 [CloudFront에 S3 버킷에 액세스할 수 있는 권한 부여](private-content-restricting-access-to-s3.md#oac-permission-to-access-s3) 섹션을 참조합니다.

## AWS WAF 웹 ACL
<a name="waf-web-acl"></a>

배포에 지속적 배포를 활성화하는 경우 다음 고려 사항이 AWS WAF에 적용됩니다.
+ ACL이 배포와 처음 연결된 경우 배포에 AWS WAF 웹 액세스 제어 목록(ACL)을 연결할 수 없습니다.
+ 배포에서 AWS WAF 웹 ACL을 연결 해제할 수 없습니다.

위의 작업을 수행하려면 먼저 프로덕션 배포에 대한 지속적 배포 정책을 삭제해야 합니다. 이렇게 하면 스테이징 배포의 구성도 업데이트됩니다. 자세한 내용은 [AWS WAF 보호 사용](distribution-web-awswaf.md) 섹션을 참조하세요.

## CloudFront가 모든 요청을 기본 배포로 보내는 경우
<a name="all-requests-to-primary-distribution"></a>

리소스 사용률이 높은 기간과 같은 특정 상황에서는 지속적 배포 정책에 지정된 내용에 관계없이 CloudFront가 모든 요청을 기본 배포로 보낼 수 있습니다.

CloudFront는 지속적 배포 정책에 지정된 내용에 관계없이 트래픽이 가장 많은 시간대에 기본 배포에 모든 요청을 보냅니다. 최대 트래픽은 배포의 트래픽이 아니라 CloudFront 서비스의 트래픽을 나타냅니다.**

## HTTP/3
<a name="continuous-deployment-http3"></a>

HTTP/3을 지원하는 배포에서는 지속적 배포를 사용할 수 없습니다.