Canary 릴리스 승격 - Amazon API Gateway

Canary 릴리스 승격

카나리 릴리스를 승격하면 카나리 릴리스가 현재 단계 설정을 대체합니다. Canary 릴리스 승격은 단계에서 Canary를 비활성화하지 않습니다. Canary를 비활성화하려면 단계에서 Canary 설정을 제거해야 합니다. 카나리를 승격하려면 다음을 수행합니다.

  • Canary의 배포 ID 설정으로 단계의 배포 ID를 재설정합니다. 이렇게 하면 Canary 스냅샷으로 단계의 API 스냅샷이 업데이트되어 테스트 버전도 프로덕션 릴리스가 됩니다.

  • Canary 단계 변수가 있다면 사용하여 단계 변수를 업데이트합니다. 이렇게 하면 Canary의 API 실행 컨텍스트로 단계의 API 실행 컨텍스트가 업데이트됩니다. 이 업데이트가 없으면 테스트 버전이 다른 단계 변수를 사용하거나 기존 단계 변수의 다른 값을 사용하는 경우, 새 API 버전이 예기치 못한 결과를 산출할 수 있습니다.

  • Canary 트래픽 백분율을 0.0%로 설정합니다.

API Gateway 콘솔을 사용하여 Canary 릴리스 승격

API Gateway 콘솔을 사용하여 Canary 릴리스 배포를 승격하려면 다음을 수행합니다.

Canary 릴리스 배포를 승격하려면
  1. API Gateway 콘솔에 로그인하고 기본 탐색 창에서 기존 API를 선택합니다.

  2. 기본 탐색 창에서 스테이지를 선택한 후 기존 스테이지를 선택합니다.

  3. Canary 탭을 선택합니다.

  4. Canary 승격을 선택합니다.

  5. 수행할 변경을 확인하고 Canary 승격을 선택합니다.

승격 후 프로덕션 릴리스는 Canary 릴리스와 동일한 API 버전(deploymentId)을 참조합니다. 이것은 AWS CLI를 사용하여 확인할 수 있습니다. 예제는 AWS CLI를 사용하여 Canary 릴리스 승격 단원을 참조하세요.

AWS CLI를 사용하여 Canary 릴리스 승격

AWS CLI 명령을 사용하여 Canary 릴리스를 프로덕션 릴리스로 승격하려면 update-stage 명령을 호출하여 Canary에 연결된 deploymentId를 단계에 연결된 deploymentId로 복사하고, Canary 트래픽 백분율을 0(0.0)으로 재설정하고, Canary에 바인딩된 모든 단계 변수를 해당 단계에 바인딩된 단계 변수로 복사합니다.

다음과 비슷한 단계로 설명되는 Canary 릴리스 배포가 있다고 가정합니다.

{ "_links": { ... }, "accessLogSettings": { ... }, "cacheClusterEnabled": false, "cacheClusterStatus": "NOT_AVAILABLE", "canarySettings": { "deploymentId": "eh1sby", "useStageCache": false, "stageVariableOverrides": { "sv2": "val3", "sv1": "val2" }, "percentTraffic": 10.5 }, "createdDate": "2017-11-20T04:42:19Z", "deploymentId": "nfcn0x", "lastUpdatedDate": "2017-11-22T00:54:28Z", "methodSettings": { ... }, "stageName": "prod", "variables": { "sv1": "val1" } }

다음 update-stage 요청을 호출하여 승격합니다.

aws apigateway update-stage \ --rest-api-id {rest-api-id} \ --stage-name '{stage-name}' \ --patch-operations '[{ "op": "replace", "value": "0.0", "path": "/canarySettings/percentTraffic" }, { "op": "copy", "from": "/canarySettings/stageVariableOverrides", "path": "/variables" }, { "op": "copy", "from": "/canarySettings/deploymentId", "path": "/deploymentId" }]'

승격이 끝난 후의 단계는 다음과 같이 됩니다.

{ "_links": { ... }, "accessLogSettings": { ... }, "cacheClusterEnabled": false, "cacheClusterStatus": "NOT_AVAILABLE", "canarySettings": { "deploymentId": "eh1sby", "useStageCache": false, "stageVariableOverrides": { "sv2": "val3", "sv1": "val2" }, "percentTraffic": 0 }, "createdDate": "2017-11-20T04:42:19Z", "deploymentId": "eh1sby", "lastUpdatedDate": "2017-11-22T05:29:47Z", "methodSettings": { ... }, "stageName": "prod", "variables": { "sv2": "val3", "sv1": "val2" } }

카나리 릴리스를 단계로 승격해도 카나리는 비활성화되지 않으며 배포는 카나리 릴리스 배포로 남아 있게 됩니다. 일반 프로덕션 릴리스 배포를 수행하려면 Canary 설정을 비활성화해야 합니다. Canary 릴리스 배포를 비활성화하는 방법에 대한 자세한 내용은 Canary 릴리스 비활성화 단원을 참조하세요.