안전한 카나리 업데이트 수행 - Amazon CloudWatch

안전한 카나리 업데이트 수행

CloudWatch Synthetics 안전한 카나리 업데이트를 사용하면 변경 사항을 적용하기 전에 기존 카나리에 대한 업데이트를 테스트할 수 있습니다. 이 기능은 새로운 런타임 및 코드 또는 메모리 변경과 같은 기타 구성 변경 사항과 카나리의 호환성을 검증하는 데 도움이 됩니다. 잘못된 업데이트로 인한 잠재적 모니터링 중단을 최소화할 수 있습니다.

런타임 버전 업데이트, 구성 변경 및 코드 스크립트 수정에 안전한 카나리 업데이트를 사용하면 위험을 완화하고, 중단 없는 모니터링을 유지하고, 커밋 전에 변경 사항을 확인하고, 업데이트 및 가동 중지 시간을 단축할 수 있습니다.

사전 조건

사전 조건이 완료되어야 합니다.

  • AWS CloudWatch Synthetics 권한이 있는 계정

  • 지원되는 런타임 버전의 기존 카나리(제한 사항에서 호환되는 런타임 참조)

  • 모의 실행을 수행할 때 호환되는 런타임 포함(제한 사항에서 호환되는 런타임 참조)

모범 사례

다음은 카나리를 수행하는 동안 따라야 할 몇 가지 모범 사례입니다.

  • 모의 실행을 실행하여 런타임 업데이트 검증

  • 카나리에 대한 프로덕션 업데이트 전에 모의 실행 수행

  • 모의 실행 후 카나리 로그 및 아티팩트 검토

  • 모의 실행을 사용하여 종속성 및 라이브러리 호환성 검증

모의 실습을 사용하여 카나리 테스트

다음 옵션을 사용하여 카나리 업데이트를 테스트할 수 있습니다.

AWS Management Console의 편집 워크플로 사용

  1. CloudWatch Synthetics 콘솔로 이동합니다.

  2. 업데이트할 카나리를 선택합니다.

  3. 작업 드롭다운에서 편집을 선택합니다.

    테스트하려는 변경 사항으로 카나리를 업데이트합니다. 런타임 버전 변경이나 스크립트의 코드 편집을 예로 들 수 있습니다.

  4. 카나리 스크립트에서 모의 실행 시작을 선택하여 테스트하고 즉시 결과를 확인하거나 페이지 하단에 있는 나중에 검증 및 저장을 선택하여 테스트를 시작하고 나중에 카나리 세부 정보 페이지에서 결과를 확인합니다.

  5. 모의 실행이 성공하면 제출을 선택하여 카나리 업데이트를 커밋합니다.

AWS Management Console을 사용하여 카나리 일괄 업데이트

  1. CloudWatch Synthetics 콘솔로 이동합니다.

  2. Synthetics 목록 페이지를 선택합니다.

  3. 런타임을 업데이트할 카나리를 최대 5개까지 선택합니다.

  4. 작업 드롭다운 메뉴에서 런타임 업데이트를 선택합니다.

  5. 새 런타임의 모의 실행 시작을 선택하여 모의 실행을 시작하고 업데이트 전에 변경 사항을 테스트합니다.

  6. Synthetics 목록 페이지에는 카나리의 런타임 버전 옆에 모의 실행 진행 상황을 표시하는 텍스트가 표시됩니다(런타임 업데이트와 관련된 모의 실행에만 표시됨).

    모의 실행이 성공하면 업데이트 시작 텍스트가 표시됩니다.

  7. 업데이트 시작을 선택하여 런타임 업데이트를 커밋합니다.

  8. 모의 실행이 실패하면 모의 실행 업데이트 실패 텍스트가 표시됩니다. 텍스트를 선택하여 카나리 세부 정보 페이지에 대한 디버그 링크를 확인합니다.

AWS CLI 또는 SDK 사용

API는 제공된 카나리 이름 MyCanary에 대해 모의 실행을 시작하고 런타임 버전을 syn-nodejs-puppeteer-10.0으로 업데이트합니다.

aws synthetics start-canary-dry-run \ --name MyCanary \ --runtime-version syn-nodejs-puppeteer-10.0 // Or if you wanted to update other configurations: aws synthetics start-canary-dry-run \ --name MyCanary \ --execution-role-arn arn:aws:iam::123456789012:role/NewRole

API는 DryRunConfigOutput 내부에 DryRunId를 반환합니다.

제공된 DryRunId를 사용하여 GetCanary를 호출하고 카나리의 모의 실행 구성과 LastDryRunExecutionStatus로 나열된 모의 실행의 상태가 포함된 추가 필드인 DryRunConfig를 수신합니다.

aws synthetics get-canary \ --name MyCanary \ --dry-run-id XXXX-XXXX-XXXX-XXXX

자세한 정보를 알아보려면 제공된 DryRunId와 함께 GetCanaryRuns를 사용하여 실행 및 추가 정보를 검색합니다.

aws synthetics get-canary-runs \ --name MyCanary \ --dry-run-id XXXX-XXXX-XXXX-XXXX

모의 실습이 성공하면 제공된 DryRunId와 함께 UpdateCanary를 사용하여 변경 사항을 커밋할 수 있습니다.

aws synthetics update-canary \ --name MyCanary \ --dry-run-id XXXX-XXXX-XXXX-XXXX

어떤 이유로든 실패하면(GetCanaryRuns의 결과에 세부 정보 포함) GetCanaryRuns의 결과에 디버깅할 로그가 포함된 아티팩트 위치가 있습니다. 로그가 없으면 모의 실행 생성에 실패한 것입니다. GetCanary를 사용하여 검증할 수 있습니다.

aws synthetics get-canary \ --name MyCanary \ --dry-run-id XXXX-XXXX-XXXX-XXXX

State, StateReasonStateReasonCode에는 모의 실행 상태가 표시됩니다.

AWS CloudFormation 사용

Synthetics Canary용 템플릿에서 부울 값 true 또는 false를 허용하는 필드 DryRunAndUpdate를 입력합니다.

값이 true인 경우 모든 업데이트에서 카나리를 자동으로 업데이트하기 전에 변경 사항을 검증하기 위한 모의 실행을 실행합니다. 모의 실행이 실패하면 카나리가 업데이트되지 않고 유효한 이유와 함께 배포 및 AWS CloudFormation 배포에 실패합니다. 이 문제를 디버깅하려면 AWS Synthetics 콘솔을 사용하거나 API를 사용하는 경우 GetCanaryRuns API를 사용하여 ArtifactS3Location을 가져오고, *-log.txt 파일을 다운로드하여 카나리 로그 실행에 오류가 있는지 검토합니다. 검증 후 AWS CloudFormation 템플릿을 수정하고 배포를 다시 시도하거나 위의 API를 사용하여 검증합니다.

값이 false인 경우 Synthetics는 변경 사항을 검증하기 위해 모의 실행을 실행하지 않고 업데이트를 직접 커밋합니다.

실패한 카나리에 대한 문제 해결에 대한 내용은 실패한 canary 문제 해결 섹션을 참조하세요.

예제 템플릿.

SyntheticsCanary: Type: 'AWS::Synthetics::Canary' Properties: Name: MyCanary RuntimeVersion: syn-nodejs-puppeteer-10.0 Schedule: {Expression: 'rate(5 minutes)', DurationInSeconds: 3600} ... DryRunAndUpdate: true

제한 사항

  • 지원 런타임 버전 – syn-nodejs-puppeteer-10.0+, syn-nodejs-playwright-2.0+, and syn-python-selenium-5.1+

  • 한 번에 카나리당 한 번의 모의 실행만 실행할 수 있습니다.

  • 모의 실행이 실패하면 카나리를 업데이트할 수 없습니다.

  • 모의 실행은 Schedule 필드 변경 사항을 테스트할 수 없습니다.

참고

Playwright 카나리에 대한 코드 변경이 포함된 모의 실행을 시작하고 연결된 DryRunId를 제공하지 않고 카나리를 업데이트하려는 경우 코드 파라미터를 명시적으로 지정해야 합니다.