

# Synthetics 런타임 버전
<a name="CloudWatch_Synthetics_Canaries_Library"></a>

canary를 생성하거나 업데이트하는 경우 canary에 대한 Synthetics 런타임 버전을 선택합니다. Synthetics 런타임은 스크립트 핸들러를 호출하는 Synthetics 코드와 Lambda 번들 종속성 계층의 조합입니다.

CloudWatch Synthetics는 현재 Node.js, Python 또는 Java 언어를 사용하는 런타임을 지원합니다. 지원되는 프레임워크는 Puppeteer, Playwright 및 Selenium입니다.

최신 기능과 Synthetics 라이브러리 업데이트를 사용하도록 canary에 항상 최신 런타임 버전을 사용하는 것이 좋습니다.

**주의 사항**: 새 버전의 Synthetics 런타임을 사용하도록 카나리를 실행할 때마다 카나리에서 사용하는 모든 Synthetics 라이브러리 함수도 Synthetics 런타임이 지원하는 것과 동일한 버전의 NodeJS로 자동 이전됩니다.

**Topics**
+ [

# Java를 사용하는 런타임 버전
](CloudWatch_Synthetics_Library_Java.md)
+ [

# Node.js 및 Playwright을 사용하는 런타임 버전
](CloudWatch_Synthetics_Library_nodejs_playwright.md)
+ [

# Node.js 및 Puppeteer를 사용하는 런타임 버전
](CloudWatch_Synthetics_Library_nodejs_puppeteer.md)
+ [

# Python 및 Selenium Webdriver를 사용하는 런타임 버전
](CloudWatch_Synthetics_Library_python_selenium.md)
+ [

# Node.js를 사용하는 런타임 버전
](CloudWatch_Synthetics_Library_Nodejs.md)
+ [

# 런타임 버전 지원 정책
](CloudWatch_Synthetics_Runtime_Support_Policy.md)
+ [

# 런타임 버전 업데이트
](CloudWatch_Synthetics_Runtime_Version_Update.md)

# Java를 사용하는 런타임 버전
<a name="CloudWatch_Synthetics_Library_Java"></a>

다음 섹션에는 Java용 CloudWatch Synthetics 런타임 버전에 관한 정보가 포함되어 있습니다. 이 런타임에는 브라우저 또는 프레임워크가 포함되어 있지 않습니다.

이러한 런타임 버전의 명명 규칙은 `syn-language -majorversion.minorversion`입니다.

## syn-java-1.0
<a name="Synthetics_runtimeversion-syn-java-1.0"></a>

**주요 종속 항목**:
+ AWS Lambda 런타임 Java 21

 **Features** 
+ *CloudWatch Logs 통합* - CloudWatch Synthetics 콘솔을 통해 로그를 쿼리하고 필터링할 수 있습니다. 각 로그 메시지에는 고유한 ` canaryRunId`가 포함되어 있으므로, 특정한 카나리 실행에 대한 로그를 쉽게 검색할 수 있습니다.
+ *지표* - CloudWatch 지표를 통해 카나리 실행 성공률 및 기간을 모니터링할 수 있습니다. 카나리에서 문제를 감지할 때 알림을 보내도록 경보를 구성할 수도 있습니다.
+ *카나리 아티팩트* - 각 카나리 실행은 Amazon S3를 통해 액세스할 수 있는 실행 및 실행 내 단계에 해당하는 세부 보고서를 업로드합니다.
+ *트레이스 지원* - X-Ray를 통해 카나리에서 수행한 모든 요청에 대해 트레이스를 내보낼 수 있습니다. 각 카나리 실행은 트레이스 ID 1개와 연결됩니다.

# Node.js 및 Playwright을 사용하는 런타임 버전
<a name="CloudWatch_Synthetics_Library_nodejs_playwright"></a>

다음 섹션에는 Node.js 및 Playwright용 CloudWatch Synthetics 런타임 버전에 관한 정보가 포함되어 있습니다. Playwright은 브라우저 테스트를 위한 오픈 소스 자동화 라이브러리입니다. Playwright에 대한 자세한 내용은 [https://playwright.dev/](https://playwright.dev)를 참조하세요.

이러한 런타임 버전의 명명 규칙은 `syn-language -framework-majorversion. minorversion`입니다.

## syn-nodejs-playwright-6.0
<a name="Synthetics_runtimeversion-syn-nodejs-playwright-6.0"></a>

**중요**  
Synthetics `syn-nodejs-playwright-5.1` 이상부터 Synthetics 런타임은 새 네임스페이스를 사용합니다. 새 네임스페이스를 사용하려면 카나리 스크립트를 마이그레이션하세요. 레거시 네임스페이스는 향후 릴리스에서 더 이상 사용되지 않습니다.  
@amzn/synthetics-playwright → @aws/synthetics-playwright

**주요 종속 항목**:
+ AWS Lambda 런타임 Node.js 22.x
+ Playwright 버전 1.58.2
+ Playwright/테스트 버전 1.58.2
+ Chromium 버전 145.0.7632.77
+ Firefox 버전 146.0.1

 **syn-nodejs-playwright-6.0의 변경 사항** 
+ 보안 패치를 적용하고 Playwright 및 브라우저 버전을 업데이트했습니다.

자세한 내용은 다음을 참조하세요.
+  [Playwright 변경 로그 ](https://playwright.dev/docs/release-notes) 
+  [Playwright API 참조](https://playwright.dev/docs/api/class-playwright) 

## Node.js 및 Playwright의 이전 런타임 버전
<a name="Previousversions-nodejs-playwright"></a>

Node.js 및 Playwright의 다음과 같은 이전 런타임 버전은 여전히 지원됩니다.

### syn-nodejs-playwright-5.1
<a name="Synthetics_runtimeversion-syn-nodejs-playwright-5.1"></a>

**주요 종속 항목**:
+ AWS Lambda 런타임 Node.js 22.x
+ Playwright 버전 1.57.0
+ Playwright/테스트 버전 1.57.0
+ Chromium 버전 143.0.7499.169
+ Firefox 버전 142.0.1

 **syn-nodejs-playwright-5.1의 변경 사항** 
+ Synthetics 런타임 네임스페이스 마이그레이션.
+ 유형 정의는 [npm 레지스트리](https://www.npmjs.com/package/@aws/synthetics-playwright)에서 사용할 수 있습니다. 유형 정의 패키지 버전이 카나리의 런타임 버전과 일치하는지 확인하세요.

자세한 내용은 다음을 참조하세요.
+  [Playwright 변경 로그 ](https://playwright.dev/docs/release-notes) 
+  [Playwright API 참조](https://playwright.dev/docs/api/class-playwright) 

### syn-nodejs-playwright-5.0
<a name="Synthetics_runtimeversion-syn-nodejs-playwright-5.0"></a>

**주요 종속 항목**:
+ AWS Lambda 런타임 Node.js 22.x
+ Playwright 버전 1.57.0
+ Playwright/테스트 버전 1.57.0
+ Chromium 버전 143.0.7499.4
+ Firefox 버전 142.0.1

 **syn-nodejs-playwright-5.0의 변경 사항** 
+ 보안 패치를 적용하고 Playwright 및 브라우저 버전을 업데이트했습니다.

자세한 내용은 다음을 참조하세요.
+  [Playwright 변경 로그 ](https://playwright.dev/docs/release-notes) 
+  [Playwright API 참조](https://playwright.dev/docs/api/class-playwright) 

### syn-nodejs-playwright-4.0
<a name="Synthetics_runtimeversion-syn-nodejs-playwright-4.0"></a>

**주요 종속 항목**:
+ AWS Lambda 런타임 Node.js 22.x
+ Playwright 버전 1.55.0
+ Playwright/테스트 버전 1.55.0
+ Chromium 버전 140.0.7339.16
+ Firefox 버전 141.0

 **syn-nodejs-playwright-4.0의 변경 사항** 
+ 보안 패치를 적용하고 Playwright 및 브라우저 버전을 업데이트했습니다.

자세한 내용은 다음을 참조하세요.
+  [Playwright 변경 로그 ](https://playwright.dev/docs/release-notes) 
+  [Playwright API 참조](https://playwright.dev/docs/api/class-playwright) 

### syn-nodejs-playwright-3.0
<a name="Synthetics_runtimeversion-syn-nodejs-playwright-3.0"></a>

**주요 종속 항목**:
+ AWS Lambda 런타임 Node.js 20.x
+ Playwright 버전 1.53.0
+ Playwright/테스트 버전 1.53.0
+ Chromium 버전 138.0.7204.168

 **syn-nodejs-playwright-3.0의 변경 사항** 
+ 다중 브라우저 지원 - 이제 Firefox 또는 Chrome에서 nodejs puppeteer 카나리를 실행할 수 있습니다.
+ 시각적 모니터링에 대한 지원

자세한 내용은 다음을 참조하세요.
+  [Playwright 변경 로그 ](https://playwright.dev/docs/release-notes) 
+  [Playwright API 참조](https://playwright.dev/docs/api/class-playwright) 

### syn-nodejs-playwright-2.0
<a name="Synthetics_runtimeversion-syn-nodejs-playwright-2.0"></a>

**주요 종속 항목**:
+ AWS Lambda 런타임 Node.js 20.x
+ Playwright 버전1.49.1
+ Playwright/테스트 버전 1.49.1
+ Chromium 버전 131.0.6778.264

 **syn-nodejs-playwright-2.0의 변경 사항** 
+ HAR 파일의 주어진 요청에 대한 총 기간과 타이밍 합계 간 불일치가 수정되었습니다.
+ 카나리에 대한 모의 실행을 지원하여 임시 실행을 허용하거나 안전한 카나리 업데이트를 수행할 수 있습니다.

자세한 내용은 다음을 참조하세요.
+  [Playwright 변경 로그 ](https://playwright.dev/docs/release-notes) 
+  [Playwright API 참조](https://playwright.dev/docs/api/class-playwright) 

### syn-nodejs-playwright-1.0
<a name="Synthetics_runtimeversion-syn-nodejs-playwright-1.0"></a>

**주요 종속 항목**:
+ AWS Lambda 런타임 Node.js 20.x
+ Playwright 버전 1.44.1
+ Playwright/테스트 버전 1.44.1
+ Chromium 버전 126.0.6478.126

**기능:**
+ **PlayWright 지원** - Playwright 자동화 프레임워크를 사용하여 카나리 스크립트를 작성할 수 있습니다. 기존 Playwright 스크립트를 카나리로 실행하도록 가져오고, AWS 모니터링 기능을 통해 개선할 수 있습니다.
+ **CloudWatch Logs 통합** - CloudWatch Synthetics 콘솔을 통해 로그를 쿼리하고 필터링할 수 있습니다. 각 로그 메시지에는 고유한 `canaryRunId`가 포함되어 있으므로, 특정한 카나리 실행에 대한 로그를 쉽게 검색할 수 있습니다.
+ **지표 및 카나리 아티팩트** - CloudWatch 지표를 통해 카나리 실행 통과율을 모니터링하고, 카나리가 문제를 감지할 때 알림을 보내도록 경보를 구성할 수 있습니다.
+ **스크린샷 및 단계 연결** - 네이티브 Playwright 기능을 사용해 스크린샷을 캡처하여 각 실행에서 카나리 스크립트의 단계를 시각화할 수 있습니다. 스크린샷은 카나리 단계와 자동으로 연결되며, Amazon S3 버킷에 업로드됩니다.
+ **다중 탭** - 여러 브라우저 탭을 여는 카나리를 생성하고, 각 탭에서 스크린샷에 액세스할 수 있습니다. Synthetics에서 다중 탭 및 다단계 사용자 워크플로를 생성할 수 있습니다.

# Node.js 및 Puppeteer를 사용하는 런타임 버전
<a name="CloudWatch_Synthetics_Library_nodejs_puppeteer"></a>

Node.js 및 Puppeteer의 첫 번째 런타임 버전 이름은 `syn-1.0`이었습니다. 이후의 런타임 버전에는 `syn-language -majorversion.minorversion`이라는 명명 규칙이 있습니다. `syn-nodejs-puppeteer-3.0`부터 명명 규칙은 `syn- language-framework-majorversion .minorversion`입니다.

추가 `-beta` 접미사는 런타임 버전이 현재 베타 평가판 릴리스임을 보여 줍니다.

메이저 버전 번호가 동일한 런타임 버전은 이전 버전과 호환됩니다.

canary의 Lambda 코드는 최대 1GB의 메모리를 갖도록 구성됩니다. 구성된 시간 초과 값 후에 각 canary 실행 시간이 초과됩니다. 카나리에 대한 시간 제한 값이 지정되지 않은 경우 CloudWatch는 카나리의 빈도에 따라 시간 제한 값을 선택합니다. 시간 초과 값을 구성하는 경우, Lambda 콜드 스타트와 canary 계측 부팅에 걸리는 시간을 15초 이상 허용하세요.

## syn-nodejs-puppeteer-15.0
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-15.0"></a>

`syn-nodejs-puppeteer-15.0`은 Node.js 및 Puppeteer에 대한 최신 Synthetics 런타임입니다.

**중요**  
Synthetics `syn-nodejs-puppeteer-13.1` 이상부터 Synthetics 런타임은 새 네임스페이스를 사용합니다. 새 네임스페이스를 사용하려면 카나리 스크립트를 마이그레이션하세요. 레거시 네임스페이스는 향후 릴리스에서 더 이상 사용되지 않습니다.  
Synthetics → @aws/synthetics-puppeteer
SyntheticsLink → @aws/synthetics-link
SyntheticsLogger → @aws/synthetics-logger
SyntheticsLogHelper → @aws/synthetics-log-helper
BrokenLinkCheckerReport → @aws/synthetics-broken-link-checker-report

**중요**  
Synthetics 런타임 `syn-nodejs-puppeteer-11.0` 이상 버전은 다음 단계 수준 구성 재정의만 지원합니다.  
 `screenshotOnStepStart` 
 `screenshotOnStepSuccess` 
 `screenshotOnStepFailure` 
 `stepSuccessMetric` 
 `stepDurationMetric` 
 `continueOnStepFailure/continueOnHttpStepFailure` 
 `stepsReport` 

자세한 내용은 다음을 참조하세요.
+  [Puppeteer 변경 로그](https://pptr.dev/CHANGELOG#24375-2026-02-19) 
+  [Puppeteer API 참조](https://github.com/puppeteer/puppeteer/blob/puppeteer-v24.37.5/docs/api/index.md) 

**주요 종속 항목**:
+ Lambda 런타임 Node.js 22.x
+ Puppeteer-core 버전 24.37.5
+ Chromium 버전 145.0.7632.77
+ Firefox 버전 147.0.4

 **syn-nodejs-puppeteer-15.0의 변경 사항** 
+ 보안 패치를 적용하고 Puppeteer 및 브라우저 버전을 업데이트했습니다.
+ continueOnHttpStepFailure가 적용되지 않아 HTTP 단계 실패가 발생하더라도 카나리 실행이 성공한 것으로 잘못 표시되는 버그를 수정했습니다.

## Node.js 및 Puppeteer의 이전 런타임 버전
<a name="Previousversions-nodejs-puppeteer"></a>

Node.js 및 Puppeteer의 다음과 같은 이전 런타임 버전은 여전히 지원됩니다.

### syn-nodejs-puppeteer-14.0
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-14.0"></a>

자세한 내용은 다음을 참조하세요.
+  [Puppeteer 변경 로그](https://pptr.dev/CHANGELOG#24340-2025-12-19) 
+  [Puppeteer API 참조](https://github.com/puppeteer/puppeteer/blob/puppeteer-v24.34.0/docs/api/index.md) 

**주요 종속 항목**:
+ Lambda 런타임 Node.js 22.x
+ Puppeteer-core 버전 24.34.0
+ Chromium 버전 143.0.7499.169
+ Firefox 버전 146.x

 **syn-nodejs-puppeteer-14.0의 변경 사항** 
+ 보안 패치를 적용하고 Puppeteer 및 브라우저 버전을 업데이트했습니다.

### syn-nodejs-puppeteer-13.1
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-13.1"></a>

`syn-nodejs-puppeteer-13.1`은 Node.js 및 Puppeteer에 대한 최신 Synthetics 런타임입니다.

자세한 내용은 다음을 참조하세요.
+  [Puppeteer 변경 로그](https://pptr.dev/CHANGELOG#24250-2025-10-15) 
+  [Puppeteer API 참조](https://github.com/puppeteer/puppeteer/blob/puppeteer-v24.2.0/docs/api/index.md) 

**주요 종속 항목**:
+ Lambda 런타임 Node.js 22.x
+ Puppeteer-core 버전 24.25.0
+ Chromium 버전 142.0.7444.175
+ Firefox 버전 145.x

 **syn-nodejs-puppeteer-13.1의 변경 사항** 
+ Synthetics 런타임 네임스페이스 마이그레이션.
+ 유형 정의는 npm 레지스트리에서 사용할 수 있습니다. 유형 정의 패키지 버전이 카나리의 런타임 버전과 일치하는지 확인하세요.
  +  [ @aws/synthetics-puppeteer](https://www.npmjs.com/package/@aws/synthetics-puppeteer) 
  +  [ @aws/synthetics-link](https://www.npmjs.com/package/@aws/synthetics-link) 
  +  [ @aws/synthetics-broken-link-checker-report](https://www.npmjs.com/package/@aws/synthetics-broken-link-checker-report) 
  +  [ @aws/synthetics-log-helper](https://www.npmjs.com/package/@aws/synthetics-log-helper) 
  +  [ @aws/synthetics-logger](https://www.npmjs.com/package/@aws/synthetics-logger) 

### syn-nodejs-puppeteer-13.0
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-13.0"></a>

자세한 내용은 다음을 참조하세요.
+  [Puppeteer 변경 로그](https://pptr.dev/CHANGELOG#24250-2025-10-15) 
+  [Puppeteer API 참조](https://github.com/puppeteer/puppeteer/blob/puppeteer-v24.2.0/docs/api/index.md) 

**주요 종속 항목**:
+ Lambda 런타임 Node.js 22.x
+ Puppeteer-core 버전 24.25.0
+ Chromium 버전 142.0.7444.175
+ Firefox 버전 145.x

 **syn-nodejs-puppeteer-13.0의 변경 사항** 
+ 보안 패치를 적용하고 Puppeteer 및 브라우저 버전을 업데이트했습니다.
+ 버그 수정 - 동시 맵 액세스로 인한 간헐적인 런타임 확장 충돌 문제를 수정했습니다.

### syn-nodejs-puppeteer-12.0
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-12.0"></a>

자세한 내용은 다음을 참조하세요.
+  [Puppeteer 변경 로그](https://pptr.dev/CHANGELOG#24221-2025-09-23) 
+  [Puppeteer API 참조](https://github.com/puppeteer/puppeteer/blob/puppeteer-v24.22.1/docs/api/index.md) 

**주요 종속 항목**:
+ Lambda 런타임 Node.js 22.x
+ Puppeteer-core 버전 24.22.1
+ Chromium 버전 140.0.7339.185
+ Firefox 버전 143.0.1

 **syn-nodejs-puppeteer-12.0의 변경 사항** 
+ 보안 패치를 적용하고 Puppeteer 및 브라우저 버전을 업데이트했습니다.
+ 제한된 헤더 수정에 대한 버그 수정 - 일부 상황에서 제한된 헤더가 executeHttpStep()에서 수정되지 않는 문제를 수정했습니다. 이제 동작이 Puppeteer 10.0과 일치합니다.
+ includeResponseBody 구성에 대한 버그 수정 - 특정 상황에서 HAR 파일 생성 시 includeResponseBody 구성 설정이 잘못 적용될 수 있는 문제를 수정했습니다. 이제 HAR에서는 설정 구성 시 응답 본문을 제외합니다.
+ 요청 캡처 수명 주기 수정 - 일부 상황에서 HTTP 요청 캡처 도구가 요청을 지속적으로 집계하게 될 수 있는 문제를 수정했습니다. 이제 각 단계 실행 후 레코딩이 올바르게 종료됩니다.

### syn-nodejs-puppeteer-11.0
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-11.0"></a>

자세한 내용은 다음을 참조하세요.
+  [Puppeteer 변경 로그](https://pptr.dev/CHANGELOG) 
+  [Puppeteer API 참조](https://github.com/puppeteer/puppeteer/blob/puppeteer-v24.2.0/docs/api/index.md) 

**주요 종속 항목**:
+ Lambda 런타임 Node.js 20.x
+ Puppeteer-core 버전 24.15.0
+ Chromium 버전 138.0.7204.168

 **syn-nodejs-puppeteer-11.0의 변경 사항** 
+ 다중 브라우저 지원 - 이제 Firefox 또는 Chrome에서 Node.js Puppeteer 카나리를 실행할 수 있습니다.
+ 간소화된 패키징 - Node.js/node\$1modules 디렉터리 구조를 사용하지 않고 루트 바로 아래에 스크립트를 패키징합니다.
+ 스크린샷 통합 - 기본 Puppeteer 함수로 스크린샷을 캡처하여 카나리 스크립트 단계를 시각화합니다. Synthetics는 스크린샷을 카나리 단계와 자동으로 연결하고 Amazon S3에 업로드합니다.
+ 향상된 로그 쿼리 - CloudWatch Insights 콘솔을 통해 로그를 쿼리하고 필터링합니다. 각 로그 메시지에는 더 쉽게 검색할 수 있도록 고유한 `canaryRunId`가 포함되어 있습니다.
+ 구성 파일 지원 - synthetics.json 파일을 사용하여 Synthetics 설정을 정의하고 업데이트합니다. 스크립트 로직과 구성을 분리하면 유지 관리 및 재사용성이 향상됩니다.
+ 다중 탭 지원 - 여러 브라우저 탭을 여는 카나리를 생성하고 각 탭에서 스크린샷에 액세스합니다. Synthetics에서 다중 탭 및 다단계 사용자 워크플로 빌드
+ 보안 수정
+ 시각적 모니터링 버그 수정
+ 구성 가능한 로그 수준의 구조화된 JSON 로깅에 대한 지원 추가 - 이제 CloudWatch에서 보다 쉽게 구문 분석하고 쿼리하도록 로그를 JSON 형식으로 내보냅니다. 사용자가 필요에 따라 상세 수준을 제어할 수 있도록 환경 변수를 통해 로그 수준(예: 디버그, 정보, 추적)을 구성할 수 있습니다.
+ ES 구문에 대한 지원

### syn-nodejs-puppeteer-10.0
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-10.0"></a>

자세한 내용은 다음을 참조하세요.
+  [Puppeteer 변경 로그](https://pptr.dev/CHANGELOG) 
+  [Puppeteer API 참조](https://github.com/puppeteer/puppeteer/blob/puppeteer-v24.2.0/docs/api/index.md) 

**주요 종속 항목**:
+ Lambda 런타임 Node.js 20.x
+ Puppeteer-core 버전 24.2.0
+ Chromium 버전 131.0.6778.264

 **syn-nodejs-puppeteer-10.0의 변경 사항** 
+ 지나치게 오래 걸렸던 브라우저 닫기와 관련된 버그가 수정되었습니다.
+ 카나리에 대한 모의 실행을 지원하여 임시 실행을 허용하거나 안전한 카나리 업데이트를 수행할 수 있습니다.

### syn-nodejs-puppeteer-9.1
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-9.1"></a>

**주요 종속 항목**:
+ Lambda 런타임 Node.js 20.x
+ Puppeteer-core 버전 22.12.1
+ Chromium 버전 126.0.6478.126

**syn-nodejs-puppeteer-9.1의 변경 사항** - HAR 파일의 날짜 범위 및 보류 상태의 요청과 관련된 버그 수정이 수정되었습니다.

### syn-nodejs-puppeteer-9.0
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-9.0"></a>

**주요 종속 항목**:
+ Lambda 런타임 Node.js 20.x
+ Puppeteer-core 버전 22.12.1
+ Chromium 버전 126.0.6478.126

**syn-nodejs-puppeteer-9.0의 변경 사항** - 시각적 모니터링 기능을 활성화하는 버그 수정이 수정되었습니다.

### syn-nodejs-puppeteer-8.0
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-8.0"></a>

**주의**  
버그로 인해 `syn-nodejs-puppeteer-8.0` 런타임에서 canary의 시각적 모니터링이 지원되지 않습니다. 시각적 모니터링의 버그 수정을 위해 [syn-nodejs-puppeteer-9.0](#CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-9.0)으로 업그레이드합니다.

**중요**  
Lambda Node.js 18 및 이후의 런타임은 AWS SDK for JavaScript V3를 사용합니다. 이전 런타임에서 카나리를 마이그레이션해야 하는 경우 GitHub에서 [aws-sdk-js-v3 마이그레이션 워크숍](https://github.com/aws-samples/aws-sdk-js-v3-workshop)을 따르세요. AWS SDK for JavaScript 버전 3에 대한 자세한 내용은 [이 블로그 게시물](https://aws.amazon.com/blogs/developer/modular-aws-sdk-for-javascript-is-now-generally-available/)을 참조하세요.

**주요 종속 항목**:
+ Lambda 런타임 Node.js 20.x
+ Puppeteer-core 버전 22.10.0
+ Chromium 버전 125.0.6422.112

**syn-nodejs-puppeteer-8.0의 업데이트 사항**:
+  **2단계 인증 지원** 
+ Node.js SDK V3 응답의 데이터가 손실되는 일부 서비스 클라이언트의 **버그 수정**이 수정되었습니다.

## Node.js 및 Puppeteer의 사용 중단된 런타임 버전
<a name="CloudWatch_Synthetics_nodejs-puppeteer-Deprecated"></a>

Node.js 및 Puppeteer에 대한 다음 런타임은 더 이상 사용되지 않습니다. 런타임 사용 중단 날짜에 대한 내용은 [CloudWatch Synthetics 런타임 사용 중단 날짜](CloudWatch_Synthetics_Runtime_Support_Policy.md#runtime_deprecation_dates) 단원을 참조하세요.

### syn-nodejs-puppeteer-7.0
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-7.0"></a>

**주요 종속 항목**:
+ Lambda 런타임 Node.js 18.x
+ Puppeteer-core 버전 21.9.0
+ Chromium 버전 121.0.6167.139

**코드 크기**:

이 런타임에 패키징할 수 있는 코드 및 종속성 크기는 80MB입니다.

**syn-nodejs-puppeteer-7.0의 업데이트 사항**:
+ **Puppeteer 및 Chromium의 번들링된 라이브러리의 버전 업데이트** - Puppeteer 및 Chromium 종속성이 새 버전으로 업데이트되었습니다.
**중요**  
Puppeteer 19.7.0에서 Puppeteer 21.9.0으로 전환하면서 테스트 및 필터와 관련하여 주요 변경 사항이 도입되었습니다. 자세한 내용은 [puppeteer: v20.0.0](https://github.com/puppeteer/puppeteer/releases/tag/puppeteer-v20.0.0) 및 [puppeteer-core: v21.0.0](https://github.com/puppeteer/puppeteer/releases/tag/puppeteer-core-v21.0.0)의 **주요 변경 사항** 섹션을 참조하십시오.

 **AWS SDK v3으로의 업그레이드 권장** 

Lambda nodejs18.x 런타임은 AWS SDK v2를 지원하지 않습니다. AWS SDK v3로 마이그레이션하는 것이 강력하게 권장됩니다.

### syn-nodejs-puppeteer-6.2
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-6.2"></a>

**주요 종속 항목**:
+ Lambda 런타임 Node.js 18.x
+ Puppeteer-core 버전 19.7.0
+ Chromium 버전 111.0.5563.146

**syn-nodejs-puppeteer-6.2의 변경 사항**:
+  **Chromium의 번들 라이브러리 업데이트 버전** 
+ **임시 스토리지 모니터링** — 이 런타임은 고객 계정에 임시 스토리지 모니터링을 추가합니다.
+  **버그 수정** 

### syn-nodejs-puppeteer-6.1
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-6.1"></a>

**주요 종속 항목**:
+ Lambda 런타임 Node.js 18.x
+ Puppeteer-core 버전 19.7.0
+ Chromium 버전 111.0.5563.146

**syn-nodejs-puppeteer-6.1의 업데이트 사항**:
+ **안정성 개선** - 간헐적인 Puppeteer 실행 오류를 처리하기 위한 자동 재시도 로직이 추가되었습니다.
+ **종속성 업그레이드** - 일부 타사 종속성 패키지에 대한 업그레이드입니다.
+ **Amazon S3 권한이 없는 canary** - Amazon S3 권한이 없는 canary를 계속 실행할 수 있도록 버그가 수정되었습니다. Amazon S3 권한이 없는 이러한 canary는 Amazon S3에 스크린샷 또는 기타 아티팩트를 업로드할 수 없습니다. canary 권한에 대한 자세한 내용은 [canary에 필요한 역할 및 권한](CloudWatch_Synthetics_Canaries_CanaryPermissions.md) 섹션을 참조하세요.

**중요**  
중요: 포함된 AWS SDK for JavaScript v2 종속성은 향후 런타임 릴리스에서 AWS SDK for JavaScript v3을 사용하도록 제거되고 업데이트될 예정입니다. 이 경우 canary 코드 참조를 업데이트할 수 있습니다. 또는 소스 코드 zip 파일에 종속성으로 추가하여 포함된 AWS SDK for JavaScript v2 종속성을 계속 참조하고 사용할 수 있습니다.

### syn-nodejs-puppeteer-6.0
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-6.0"></a>

**주요 종속 항목**:
+ Lambda 런타임 Node.js 18.x
+ Puppeteer-core 버전 19.7.0
+ Chromium 버전 111.0.5563.146

**syn-nodejs-puppeteer-6.0의 업데이트 사항**:
+ **종속성 업그레이드** - Node.js 종속성이 18.x로 업그레이드되었습니다.
+ **인터셉트 모드 지원** - Puppeteer 협동 인터셉트 모드 지원이 Synthetics canary 런타임 라이브러리에 추가되었습니다.
+ **추적 동작 변경** - 리소스 요청은 추적하지 않고 fetch 및 xhr 요청만 추적하도록 기본 추적 동작이 변경되었습니다. `traceResourceRequests` 옵션을 구성하여 리소스 요청 추적을 활성화할 수 있습니다.
+ **기간 지표 개선** - 이제 canary가 아티팩트를 업로드하고, 스크린샷을 찍고, CloudWatch 지표를 생성하는 데 사용하는 작업 시간이 ` Duration` 지표에서 제외됩니다. `Duration` 지표 값은 CloudWatch에 보고되며 Synthetics 콘솔에서도 확인할 수 있습니다.
+ **버그 수정**— canary 실행 중 Chromium이 충돌할 때 생성되는 코어 덤프를 정리합니다.

**중요**  
중요: 포함된 AWS SDK for JavaScript v2 종속성은 향후 런타임 릴리스에서 AWS SDK for JavaScript v3을 사용하도록 제거되고 업데이트될 예정입니다. 이 경우 canary 코드 참조를 업데이트할 수 있습니다. 또는 소스 코드 zip 파일에 종속성으로 추가하여 포함된 AWS SDK for JavaScript v2 종속성을 계속 참조하고 사용할 수 있습니다.

### syn-nodejs-puppeteer-5.2
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-5.2"></a>

**주요 종속 항목**:
+ Lambda 런타임 Node.js 16.x
+ Puppeteer-core 버전 19.7.0
+ Chromium 버전 111.0.5563.146

**syn-nodejs-puppeteer-5.2의 업데이트 사항**:
+  **Chromium의 번들 라이브러리 업데이트 버전** 
+  **버그 수정** 

### syn-nodejs-puppeteer-5.1
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-5.1"></a>

**주요 종속 항목**:
+ Lambda 런타임 Node.js 16.x
+ Puppeteer-core 버전 19.7.0
+ Chromium 버전 111.0.5563.146

**syn-nodejs-puppeteer-5.1의 버그 수정**:
+ **버그 수정** - 이 런타임은 ` syn-nodejs-puppeteer-5.0`에서 canary가 생성한 HAR 파일에 요청 헤더가 누락되는 버그를 수정합니다.

### syn-nodejs-puppeteer-5.0
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-5.0"></a>

**주요 종속 항목**:
+ Lambda 런타임 Node.js 16.x
+ Puppeteer-core 버전 19.7.0
+ Chromium 버전 111.0.5563.146

**syn-nodejs-puppeteer-5.0의 업데이트 사항**:
+ **종속성 업그레이드** - Puppeteer-core 버전이 19.7.0으로 업데이트되었습니다. Chromium 버전이 111.0.5563.146으로 업그레이드되었습니다.

**중요**  
새 Puppeteer-core 버전은 이전 버전의 Puppeteer와 완전히 호환되지는 않습니다. 이 버전의 일부 변경 사항으로 인해 더 이상 사용되지 않는 Puppeteer 함수를 사용하는 기존 canary가 작동하지 않을 수 있습니다. 자세한 내용은 [Puppeteer 변경 로그](https://github.com/puppeteer/puppeteer/releases?q=breaking&expanded=true)에서 Puppeteer-core 버전 19.7.0부터 6.0까지에 대한 변경 로그의 주요 변경 사항을 참조하세요.

### syn-nodejs-puppeteer-4.0
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-4.0"></a>

**주요 종속 항목**:
+ Lambda 런타임 Node.js 16.x
+ Puppeteer-core 버전 5.5.0
+ Chromium 버전 92.0.4512

**syn-nodejs-puppeteer-4.0의 업데이트 사항**:
+ **종속성 업그레이드** - Node.js 종속성이 16.x로 업데이트되었습니다.

### syn-nodejs-puppeteer-3.9
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-3.9"></a>

**중요**  
이 런타임 버전은 2024년 1월 8일부터 사용 중지되었습니다. 자세한 내용은 [런타임 버전 지원 정책](CloudWatch_Synthetics_Runtime_Support_Policy.md) 섹션을 참조하세요.

**주요 종속 항목**:
+ Lambda 런타임 Node.js 14.x
+ Puppeteer-core 버전 5.5.0
+ Chromium 버전 92.0.4512

**syn-nodejs-puppeteer-3.9의 업데이트 사항**:
+ **종속성 업그레이드** - 일부 타사 종속성 패키지를 업그레이드합니다.

### syn-nodejs-puppeteer-3.8
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-3.8"></a>

**중요**  
이 런타임 버전은 2024년 1월 8일부터 사용 중지되었습니다. 자세한 내용은 [런타임 버전 지원 정책](CloudWatch_Synthetics_Runtime_Support_Policy.md) 섹션을 참조하세요.

**주요 종속 항목**:
+ Lambda 런타임 Node.js 14.x
+ Puppeteer-core 버전 5.5.0
+ Chromium 버전 92.0.4512

**syn-nodejs-puppeteer-3.8의 업데이트 사항**:
+ **프로파일 클린업** - 이제 각 canary 실행 후 Chromium 프로파일이 클린업됩니다.

**syn-nodejs-puppeteer-3.8의 버그 수정**:
+ **버그 수정** - 이전에는 스크린샷 없이 실행한 후 시각적 모니터링 canary가 제대로 작동하지 않는 경우가 있었습니다. 이 버그는 이제 수정되었습니다.

### syn-nodejs-puppeteer-3.7
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-3.7"></a>

**중요**  
이 런타임 버전은 2024년 1월 8일부터 사용 중지되었습니다. 자세한 내용은 [런타임 버전 지원 정책](CloudWatch_Synthetics_Runtime_Support_Policy.md) 섹션을 참조하세요.

**주요 종속 항목**:
+ Lambda 런타임 Node.js 14.x
+ Puppeteer-core 버전 5.5.0
+ Chromium 버전 92.0.4512

**syn-nodejs-puppeteer-3.7의 업데이트 사항**:
+ **로깅 향상** - canary는 시간 초과 또는 충돌이 발생하더라도 Amazon S3에 로그를 업로드합니다.
+ **Lambda 계층 크기 감소** - canary에 사용되는 Lambda 계층의 크기가 34% 감소했습니다.

**syn-nodejs-puppeteer-3.7의 버그 수정**:
+ **버그 수정** - 일본어, 중국어 간체 및 중국어 번체 글꼴이 제대로 렌더링됩니다.

### syn-nodejs-puppeteer-3.6
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-3.6"></a>

**중요**  
이 런타임 버전은 2024년 1월 8일부터 사용 중지되었습니다. 자세한 내용은 [런타임 버전 지원 정책](CloudWatch_Synthetics_Runtime_Support_Policy.md) 섹션을 참조하세요.

**주요 종속 항목**:
+ Lambda 런타임 Node.js 14.x
+ Puppeteer-core 버전 5.5.0
+ Chromium 버전 92.0.4512

**syn-nodejs-puppeteer-3.6의 업데이트 사항**:
+ **보다 정확한 타임스탬프** - canary 실행의 시작 시간과 중지 시간이 이제 밀리초의 정밀도로 기록됩니다.

### syn-nodejs-puppeteer-3.5
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-3.5"></a>

**중요**  
이 런타임 버전은 2024년 1월 8일부터 사용 중지되었습니다. 자세한 내용은 [런타임 버전 지원 정책](CloudWatch_Synthetics_Runtime_Support_Policy.md) 섹션을 참조하세요.

**주요 종속 항목**:
+ Lambda 런타임 Node.js 14.x
+ Puppeteer-core 버전 5.5.0
+ Chromium 버전 92.0.4512

**syn-nodejs-puppeteer-3.5의 업데이트 사항**:
+ **종속 항목 업데이트**— 이 런타임의 유일한 새로운 기능은 업데이트된 종속 항목입니다.

### syn-nodejs-puppeteer-3.4
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-3.4"></a>

**중요**  
이 런타임 버전은 2022년 11월 13일부터 사용 중지되었습니다. 자세한 내용은 [런타임 버전 지원 정책](CloudWatch_Synthetics_Runtime_Support_Policy.md) 섹션을 참조하세요.

**주요 종속 항목**:
+ Lambda 런타임 Node.js 12.x
+ Puppeteer-core 버전 5.5.0
+ Chromium 버전 88.0.4298.0

**syn-nodejs-puppeteer-3.4의 업데이트 사항**:
+ **사용자 지정 핸들러 함수** - 이제 canary 스크립트에 사용자 지정 핸들러 함수를 사용할 수 있습니다. 이전 런타임의 경우 `.handler`를 포함할 스크립트 엔트리 포인트가 필요합니다.

  canary 스크립트를 임의의 폴더에 넣고 폴더 이름을 핸들러의 일부로 전달할 수도 있습니다. 예를 들어, `MyFolder/MyScriptFile.functionname`을 진입점으로 사용할 수 있습니다.
+ **확장된 HAR 파일 정보** - 이제 canary에서 생성한 HAR 파일에서 불량, 보류 중, 불완전한 요청을 볼 수 있습니다.

### syn-nodejs-puppeteer-3.3
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-3.3"></a>

**중요**  
이 런타임 버전은 2022년 11월 13일에 사용 중지되었습니다. 자세한 내용은 [런타임 버전 지원 정책](CloudWatch_Synthetics_Runtime_Support_Policy.md) 섹션을 참조하세요.

**주요 종속 항목**:
+ Lambda 런타임 Node.js 12.x
+ Puppeteer-core 버전 5.5.0
+ Chromium 버전 88.0.4298.0

**syn-nodejs-puppeteer-3.3의 업데이트 사항**:
+ **아티팩트 암호화에 대한 추가 옵션**: 이 런타임 이상을 사용하는 canary의 경우 canary가 Amazon S3에 저장하는 아티팩트를 암호화하는 AWS 관리형 키를 사용하는 대신 AWS KMS 고객 관리형 키 또는 Amazon S3 관리형 키 사용을 선택할 수 있습니다. 자세한 내용은 [canary 아티팩트 암호화](CloudWatch_Synthetics_artifact_encryption.md) 섹션을 참조하세요.

### syn-nodejs-puppeteer-3.2
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-3.2"></a>

**중요**  
이 런타임 버전은 2022년 11월 13일에 사용 중지되었습니다. 자세한 내용은 [런타임 버전 지원 정책](CloudWatch_Synthetics_Runtime_Support_Policy.md) 섹션을 참조하세요.

**주요 종속 항목**:
+ Lambda 런타임 Node.js 12.x
+ Puppeteer-core 버전 5.5.0
+ Chromium 버전 88.0.4298.0

**syn-nodejs-puppeteer-3.2의 업데이트 사항**:
+ **스크린샷을 사용한 시각적 모니터링** - 이 런타임 이상 버전을 사용하는 canary는 실행 중에 생성한 스크린샷을 동일한 스크린샷의 기준 버전과 비교할 수 있습니다. 스크린샷이 지정된 백분율 임곗값과 많이 다르면 canary가 실패합니다. 자세한 내용은 [시각적 모니터링](CloudWatch_Synthetics_Canaries_Library_Nodejs.md#CloudWatch_Synthetics_Library_SyntheticsLogger_VisualTesting) 또는 [시각적 모니터링 블루프린트](CloudWatch_Synthetics_Canaries_Blueprints.md#CloudWatch_Synthetics_Canaries_Blueprints_VisualTesting) 섹션을 참조하세요.
+ **민감한 데이터에 관한 새로운 기능** - 민감한 데이터가 canary 로그 및 보고서에 표시되지 않도록 방지할 수 있습니다. 자세한 내용은 [SyntheticsLogHelper 클래스](CloudWatch_Synthetics_Canaries_Library_Nodejs.md#CloudWatch_Synthetics_Library_SyntheticsLogHelper) 단원을 참조하세요.
+ **사용 중지된 함수** - ` RequestResponseLogHelper` 클래스는 새로운 다른 구성 옵션을 위해 더 이상 사용되지 않습니다. 자세한 내용은 [RequestResponseLogHelper 클래스](CloudWatch_Synthetics_Canaries_Library_Nodejs.md#CloudWatch_Synthetics_Library_RequestResponseLogHelper) 단원을 참조하세요.

### syn-nodejs-puppeteer-3.1
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-3.1"></a>

**중요**  
이 런타임 버전은 2022년 11월 13일에 사용 중지되었습니다. 자세한 내용은 [런타임 버전 지원 정책](CloudWatch_Synthetics_Runtime_Support_Policy.md) 섹션을 참조하세요.

**주요 종속 항목**:
+ Lambda 런타임 Node.js 12.x
+ Puppeteer-core 버전 5.5.0
+ Chromium 버전 88.0.4298.0

**syn-nodejs-puppeteer-3.1의 업데이트 사항**:
+ **CloudWatch 지표 구성 기능** - 이 런타임을 사용하면 필요하지 않은 지표를 사용 중지할 수 있습니다. 그렇지 않으면 canary는 각 canary 실행에 대한 다양한 CloudWatch 지표를 게시합니다.
+ **스크린샷 연결** - 단계가 완료된 후 스크린샷을 canary 단계에 연결할 수 있습니다. 이렇게 하려면 [**takeScreenshot**] 메서드를 사용하여 스크린샷을 생성합니다. 이때 스크린샷을 연결하려는 단계의 이름을 사용합니다. 예를 들어 단계를 수행하고 대기 시간을 추가한 다음, 스크린샷을 생성할 수 있습니다.
+ **하트비트 모니터 블루프린트가 여러 URL을 모니터링할 수 있음** -​​CloudWatch 콘솔에서 하트비트 모니터링 블루프린트를 사용하여 여러 URL을 모니터링하고 canary 실행 보고서의 단계 요약에서 각 URL의 상태, 지속 시간, 관련 스크린샷, 실패 원인을 확인할 수 있습니다.

### syn-nodejs-puppeteer-3.0
<a name="CloudWatch_Synthetics_runtimeversion-nodejs-puppeteer-3.0"></a>

**중요**  
이 런타임 버전은 2022년 11월 13일에 사용 중지되었습니다. 자세한 내용은 [런타임 버전 지원 정책](CloudWatch_Synthetics_Runtime_Support_Policy.md) 섹션을 참조하세요.

**주요 종속 항목**:
+ Lambda 런타임 Node.js 12.x
+ Puppeteer-core 버전 5.5.0
+ Chromium 버전 88.0.4298.0

**syn-nodejs-puppeteer-3.0의 업데이트 사항**:
+ **종속 항목 업그레이드** - 이 버전은 Puppeteer 버전 5.5.0, Node.js 12.x, Chromium 88.0.4298.0을 사용합니다.
+ **교차 리전 버킷 액세스** - 이제 canary가 해당 로그 파일, 스크린샷, HAR 파일을 저장하는 버킷으로 다른 리전의 S3 버킷을 지정할 수 있습니다.
+ **새 함수 사용 가능** - 이 버전에서는 canary 이름 및 Synthetics 런타임 버전을 검색하는 라이브러리 함수를 추가합니다.

  자세한 내용은 [Synthetics 클래스](CloudWatch_Synthetics_Canaries_Library_Nodejs.md#CloudWatch_Synthetics_Library_Synthetics_Class_all) 단원을 참조하세요.

### syn-nodejs-2.2
<a name="CloudWatch_Synthetics_runtimeversion-2.2"></a>

이 단원에는 `syn-nodejs-2.2` 런타임 버전에 관한 정보가 포함되어 있습니다.

**중요**  
이 런타임 버전은 2021년 5월 28일에 사용 중지되었습니다. 자세한 내용은 [런타임 버전 지원 정책](CloudWatch_Synthetics_Runtime_Support_Policy.md) 섹션을 참조하세요.

**주요 종속 항목**:
+ Lambda 런타임 Node.js 10.x
+ Puppeteer-core 버전 3.3.0
+ Chromium 버전 83.0.4103.0

**syn-nodejs-2.2의 변경 사항**:
+ **HTTP 단계로 canary 모니터링** - 이제 단일 canary에서 여러 API를 테스트할 수 있습니다. 각 API는 별도의 HTTP 단계로 테스트되며, CloudWatch Synthetics는 단계 지표 및 CloudWatch Synthetics 단계 보고서를 사용하여 각 단계의 상태를 모니터링합니다. CloudWatch Synthetics는 각 HTTP 단계에 대해 ` SuccessPercent` 및 `Duration` 지표를 생성합니다.

  이 기능은 **executeHttpStep(stepName, requestOptions, callback, stepConfig)** 함수에 의해 구현됩니다. 자세한 내용은 [executeHttpStep(stepName, requestOptions, [callback], [stepConfig])](CloudWatch_Synthetics_Canaries_Library_Nodejs.md#CloudWatch_Synthetics_Library_executeHttpStep) 단원을 참조하세요.

  API canary 블루프린트는 새로운 이 기능을 사용하도록 업데이트되었습니다.
+ **HTTP 요청 보고** - 이제 요청 또는 응답 헤더, 응답 본문, 상태 코드, 오류 및 성능 타이밍, TCP 연결 시간, TLS 핸드셰이크 시간, 첫 번째 바이트 시간, 콘텐츠 전송 시간과 같은 세부 정보를 캡처하는 자세한 HTTP 요청 보고서를 볼 수 있습니다. 내부적으로 HTTP/HTTPS 모듈을 사용하는 모든 HTTP 요청이 여기에 캡처됩니다. 헤더 및 응답 본문은 기본적으로 캡처되지 않지만 구성 옵션을 설정하여 사용 설정할 수 있습니다.
+ **글로벌 및 단계 수준 구성** - canary의 모든 단계에 적용되는 글로벌 수준에서 CloudWatch Synthetics 구성을 설정할 수 있습니다. 또한 구성 키-값 페어를 전달하여 특정 옵션을 사용하거나 사용 중지함으로써 단계 수준에서 이러한 구성을 재정의할 수도 있습니다.

  자세한 내용은 [SyntheticsConfiguration 클래스](CloudWatch_Synthetics_Canaries_Library_Nodejs.md#CloudWatch_Synthetics_Library_SyntheticsConfiguration) 단원을 참조하세요.
+ **단계 실패 시 계속 구성** - 단계 실패 시 canary 실행을 계속하도록 선택할 수 있습니다. ` executeHttpStep` 함수에서 이 옵션이 기본적으로 활성화되어 있습니다. 이 옵션은 글로벌 수준에서 한 번 설정하거나 단계마다 다르게 설정할 수 있습니다.

### syn-nodejs-2.1
<a name="CloudWatch_Synthetics_runtimeversion-2.1"></a>

**중요**  
이 런타임 버전은 2021년 5월 28일에 사용 중지되었습니다. 자세한 내용은 [런타임 버전 지원 정책](CloudWatch_Synthetics_Runtime_Support_Policy.md) 섹션을 참조하세요.

**주요 종속 항목**:
+ Lambda 런타임 Node.js 10.x
+ Puppeteer-core 버전 3.3.0
+ Chromium 버전 83.0.4103.0

**syn-nodejs-2.1의 업데이트 사항**:
+ **구성 가능한 스크린샷 동작** - UI canary에 의한 스크린샷 캡처를 비활성화하는 기능을 제공합니다. 이전 버전의 런타임을 사용하는 canary에서 UI canary는 항상 각 단계 전후에 스크린샷을 캡처합니다. `syn-nodejs-2.1`에서는 이 옵션을 구성할 수 있습니다. 스크린샷을 비활성화하면 Amazon S3 스토리지 비용을 줄이고 HIPAA 규정을 준수하는 데 도움이 될 수 있습니다. 자세한 내용은 [SyntheticsConfiguration 클래스](CloudWatch_Synthetics_Canaries_Library_Nodejs.md#CloudWatch_Synthetics_Library_SyntheticsConfiguration) 단원을 참조하세요.
+ **Google Chrome 시작 파라미터 사용자 지정** - 이제 canary가 Google Chrome 브라우저 창을 시작할 때 사용되는 인수를 구성할 수 있습니다. 자세한 내용은 [launch(options)](CloudWatch_Synthetics_Canaries_Library_Nodejs.md#CloudWatch_Synthetics_Library_LaunchOptions) 단원을 참조하세요.

이전 버전의 canary 런타임과 비교했을 때 syn-nodejs-2.0 이상을 사용할 경우 canary 지속 시간이 약간 증가할 수 있습니다.

### syn-nodejs-2.0
<a name="CloudWatch_Synthetics_runtimeversion-2.0"></a>

**중요**  
이 런타임 버전은 2021년 5월 28일에 사용 중지되었습니다. 자세한 내용은 [런타임 버전 지원 정책](CloudWatch_Synthetics_Runtime_Support_Policy.md) 섹션을 참조하세요.

**주요 종속 항목**:
+ Lambda 런타임 Node.js 10.x
+ Puppeteer-core 버전 3.3.0
+ Chromium 버전 83.0.4103.0

**syn-nodejs-2.0의 업데이트 사항**:
+ **종속 항목 업그레이드** - 이 런타임 버전은 Puppeteer-core 버전 3.3.0 및 Chromium 버전 83.0.4103.0을 사용합니다.
+ **X-Ray 활성추적 지원** - canary에서 추적이 사용 설정된 경우 브라우저, AWS SDK, HTTP 또는 HTTPS 모듈을 사용하는 canary가 수행한 모든 호출에 대해 X-Ray 추적이 전송됩니다. 추적이 활성화된 canary는 X-Ray 트레이스 맵에 나타나며, 이는 추적이 활성화된 다른 서비스 또는 애플리케이션에 요청을 보내지 않는 경우에도 그렇습니다. 자세한 내용은 [canary 및 X-Ray 추적](CloudWatch_Synthetics_Canaries_tracing.md) 섹션을 참조하세요.
+ **Synthetics 보고** - CloudWatch Synthetics는 각 canary 실행에 대해 시작 시간, 종료 시간, 상태, 실패와 같은 데이터를 기록하는 ` SyntheticsReport-PASSED.json` 또는 ` SyntheticsReport-FAILED.json`이라는 보고서를 생성합니다. 또한 canary 스크립트의 각 단계에 대한 PASSED/FAILED 상태, 각 단계에 대해 캡처된 스크린샷 및 실패를 기록합니다.
+ **잘못된 링크 검사기 보고서** - 이 런타임에 포함된 잘못된 링크 검사기의 새 버전은 확인된 링크, 상태 코드, 실패 원인(있는 경우), 소스 및 대상 페이지 스크린샷을 포함하는 보고서를 생성합니다.
+ **새로운 CloudWatch 지표** - Synthetics는 `CloudWatchSynthetics` 네임스페이스에 `2xx`, `4xx`, `5xx` 및 `RequestFailed`라는 지표를 게시합니다. 이러한 지표는 canary 실행의 200s, 400s, 500s 및 요청 실패 수를 보여 줍니다. 이 런타임 버전에서는 이러한 지표가 UI canary에 대해서만 보고되며 API canary에 대해서는 보고되지 않습니다. 런타임 버전 ` syn-nodejs-puppeteeer-2.2`부터는 API canary에 대해서도 보고됩니다.
+ **정렬 가능한 HAR 파일** – 이제 상태 코드, 요청 크기, 지속 시간을 기준으로 HAR 파일을 정렬할 수 있습니다.
+ **지표 타임스탬프** - 이제 CloudWatch 지표가 canary 실행 종료 시간 대신 Lambda 호출 시간을 기반으로 보고됩니다.

**syn-nodejs-2.0의 버그 수정**:
+ canary 아티팩트 업로드 오류가 보고되지 않는 문제를 수정했습니다. 이러한 오류는 이제 실행 오류로 표시됩니다.
+ 리디렉션된 요청(3xx)이 오류로 잘못 로그되는 문제를 수정했습니다.
+ 스크린샷 번호가 0부터 시작되는 문제를 수정했습니다. 이제 스크린샷 번호가 1부터 시작됩니다.
+ 중국어 및 일본어 글꼴의 스크린샷이 깨져 보이는 문제를 수정했습니다.

이전 버전의 canary 런타임과 비교했을 때 syn-nodejs-2.0 이상을 사용할 경우 canary 지속 시간이 약간 증가할 수 있습니다.

### syn-nodejs-2.0-beta
<a name="CloudWatch_Synthetics_runtimeversion-2.0-beta"></a>

**중요**  
이 런타임 버전은 2021년 2월 8일에 사용 중지되었습니다. 자세한 내용은 [런타임 버전 지원 정책](CloudWatch_Synthetics_Runtime_Support_Policy.md) 섹션을 참조하세요.

**주요 종속 항목**:
+ Lambda 런타임 Node.js 10.x
+ Puppeteer-core 버전 3.3.0
+ Chromium 버전 83.0.4103.0

**syn-nodejs-2.0-beta의 변경 사항**:
+ **종속 항목 업그레이드** - 이 런타임 버전은 Puppeteer-core 버전 3.3.0 및 Chromium 버전 83.0.4103.0을 사용합니다.
+ **Synthetics 보고** - CloudWatch Synthetics는 각 canary 실행에 대해 시작 시간, 종료 시간, 상태, 실패와 같은 데이터를 기록하는 ` SyntheticsReport-PASSED.json` 또는 ` SyntheticsReport-FAILED.json`이라는 보고서를 생성합니다. 또한 canary 스크립트의 각 단계에 대한 PASSED/FAILED 상태, 각 단계에 대해 캡처된 스크린샷 및 실패를 기록합니다.
+ **잘못된 링크 검사기 보고서** - 이 런타임에 포함된 잘못된 링크 검사기의 새 버전은 확인된 링크, 상태 코드, 실패 원인(있는 경우), 소스 및 대상 페이지 스크린샷을 포함하는 보고서를 생성합니다.
+ **새로운 CloudWatch 지표** - Synthetics는 `CloudWatchSynthetics` 네임스페이스에 `2xx`, `4xx`, `5xx` 및 `RequestFailed`라는 지표를 게시합니다. 이러한 지표는 canary 실행의 200s, 400s, 500s 및 요청 실패 수를 보여 줍니다. 이러한 지표가 UI canary에 대해서만 보고되며 API canary에 대해서는 보고되지 않습니다.
+ **정렬 가능한 HAR 파일** – 이제 상태 코드, 요청 크기, 지속 시간을 기준으로 HAR 파일을 정렬할 수 있습니다.
+ **지표 타임스탬프** - 이제 CloudWatch 지표가 canary 실행 종료 시간 대신 Lambda 호출 시간을 기반으로 보고됩니다.

**syn-nodejs-2.0-beta의 버그 수정**:
+ canary 아티팩트 업로드 오류가 보고되지 않는 문제를 수정했습니다. 이러한 오류는 이제 실행 오류로 표시됩니다.
+ 리디렉션된 요청(3xx)이 오류로 잘못 로그되는 문제를 수정했습니다.
+ 스크린샷 번호가 0부터 시작되는 문제를 수정했습니다. 이제 스크린샷 번호가 1부터 시작됩니다.
+ 중국어 및 일본어 글꼴의 스크린샷이 깨져 보이는 문제를 수정했습니다.

### syn-1.0
<a name="CloudWatch_Synthetics_runtimeversion-1.0"></a>

첫 번째 Synthetics 런타임 버전은 `syn-1.0`입니다.

**주요 종속 항목**:
+ Lambda 런타임 Node.js 10.x
+ Puppeteer-core 버전 1.14.0
+ Puppeteer-core 1.14.0과 일치하는 Chromium 버전

# Python 및 Selenium Webdriver를 사용하는 런타임 버전
<a name="CloudWatch_Synthetics_Library_python_selenium"></a>

다음 단원에는 Python 및 Selenium Webdriver용 CloudWatch Synthetics 런타임 버전에 관한 정보가 포함되어 있습니다. Selenium은 오픈 소스 브라우저 자동화 도구입니다. Selenium에 대한 자세한 내용은 [www.selenium.dev/](https://www.selenium.dev)를 참조하세요.

Selenium 프레임워크에서 Synthetics 런타임이 지원하는 기능 및 방법은 [UI 카나리에만 적용되는 Python 및 Selenium 라이브러리 클래스 및 함수](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_Library_Python.html#CloudWatch_Synthetics_Library_Python_UIcanaries)와 [Selenium API 참조](https://www.selenium.dev/selenium/docs/api/py/api.html)를 참조하세요.

이러한 런타임 버전의 명명 규칙은 `syn-language -framework-majorversion. minorversion`입니다.

## syn-python-selenium-10.0
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-10.0"></a>

버전 10.0은 Python과 Selenium에 대한 최신 CloudWatch Synthetics 런타임입니다.

**주요 종속 항목**:
+ Python 3.11
+ Selenium 4.32.0
+ Chromium 버전 145.0.7632.77

**syn-python-selenium-10.0의 변경 사항 ** 
+ 보안 패치를 적용하고 브라우저 버전을 업데이트했습니다.

자세한 내용은 다음을 참조하세요.
+  [Selenium 변경 로그](https://www.selenium.dev/blog/2025/selenium-4-32-released) 
+  [Selenium 설명서](https://www.selenium.dev/selenium/docs/api/py/api.html) 

## Python 및 Selenium의 이전 런타임 버전
<a name="Previousversions-python-selenium"></a>

Python 및 Selenium의 다음과 같은 이전 런타임 버전은 여전히 지원됩니다.

### syn-python-selenium-9.0
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-9.0"></a>

**주요 종속 항목**:
+ Python 3.11
+ Selenium 4.32.0
+ Chromium 버전 143.0.7499.169

**syn-python-selenium-9.0의 변경 사항 ** 
+ 보안 패치를 적용하고 브라우저 버전을 업데이트했습니다.

자세한 내용은 다음을 참조하세요.
+  [Selenium 변경 로그](https://www.selenium.dev/blog/2025/selenium-4-32-released) 
+  [Selenium 설명서](https://www.selenium.dev/selenium/docs/api/py/api.html) 

### syn-python-selenium-8.0
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-8.0"></a>

버전 8.0은 Python과 Selenium에 대한 최신 CloudWatch Synthetics 런타임입니다.

**주요 종속 항목**:
+ Python 3.11
+ Selenium 4.32.0
+ Chromium 버전 142.0.7444.175

**syn-python-selenium-8.0의 변경 사항 ** 
+ 보안 패치를 적용하고 Selenium 및 브라우저 버전을 업데이트했습니다.
+ 실패한 HAR 네트워크 요청 로그 수준을 ERROR에서 INFO로 수정했습니다.

자세한 내용은 다음을 참조하세요.
+  [Selenium 변경 로그](https://www.selenium.dev/blog/2025/selenium-4-32-released) 
+  [Selenium 설명서](https://www.selenium.dev/selenium/docs/api/py/api.html) 

### syn-python-selenium-7.0
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-7.0"></a>

**주요 종속 항목**:
+ Python 3.11
+ Selenium 4.32.0
+ Chromium 버전 138.0.7204.168

 **syn-python-selenium-7.0의 변경 사항 ** 
+ 보안 패치를 적용하고 Selenium 및 브라우저 버전을 업데이트했습니다.

자세한 내용은 다음을 참조하세요.
+  [Selenium 변경 로그](https://www.selenium.dev/blog/2025/selenium-4-32-released) 
+  [Selenium 설명서](https://www.selenium.dev/selenium/docs/api/py/api.html) 

### syn-python-selenium-6.0
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-6.0"></a>

**주요 종속 항목**:
+ Python 3.11
+ Selenium 4.21.0
+ Chromium 버전 131.0.6778.264

 **syn-python-selenium-6.0의 변경 사항** 
+ Python 3.9에서 Python 3.11로 업그레이드합니다.

자세한 내용은 다음을 참조하세요.
+  [Selenium 변경 로그](https://www.selenium.dev/blog/2024/selenium-4-21-released/) 
+  [Selenium 설명서](https://www.selenium.dev/selenium/docs/api/py/api.html) 

### syn-python-selenium-5.1
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-5.1"></a>

**주요 종속 항목**:
+ Python 3.9
+ Selenium 4.21.0
+ Chromium 버전 131.0.6778.264

 **syn-python-selenium-5.1의 변경 사항** 
+ 지표 방출에 대한 사소한 업데이트.
+ 카나리에 대한 모의 실행을 지원하여 임시 실행을 허용하거나 안전한 카나리 업데이트를 수행할 수 있습니다.

### syn-python-selenium-5.0
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-5.0"></a>

**주요 종속 항목**:
+ Python 3.9
+ Selenium 4.21.0
+ Chromium 버전 131.0.6778.264

**syn-python-selenium-5.0의 변경 사항**:
+ 브라우저를 시작하지 못하면 자동으로 다시 시도합니다.

### syn-python-selenium-4.1
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-4.1"></a>

**주요 종속 항목**:
+ Python 3.9
+ Selenium 4.15.1
+ Chromium 버전 126.0.6478.126

**syn-python-selenium-4.1의 변경 사항**:
+ **보안 취약성 해결** - 이 런타임에는 [CVE-2024-39689](https://nvd.nist.gov/vuln/detail/CVE-2024-39689) 취약성을 해결하기 위한 업데이트가 있습니다.

### syn-python-selenium-4.0
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-4.0"></a>

**주요 종속 항목**:
+ Python 3.9
+ Selenium 4.15.1
+ Chromium 버전 126.0.6478.126

**syn-python-selenium-4.0의 변경 사항**:
+ HAR 파서 로깅의 오류에 대한 ****버그 수정입니다.

## Python 및 Selenium의 사용 중단된 런타임 버전
<a name="Deprecated-python-selenium"></a>

Python 및 Selenium의 다음과 같은 이전 런타임 버전은 사용 중단되었습니다. 런타임 사용 중단 날짜에 대한 내용은 [CloudWatch Synthetics 런타임 사용 중단 날짜](CloudWatch_Synthetics_Runtime_Support_Policy.md#runtime_deprecation_dates) 단원을 참조하세요.

### syn-python-selenium-3.0
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-3.0"></a>

**주요 종속 항목**:
+ Python 3.8
+ Selenium 4.15.1
+ Chromium 버전 121.0.6167.139

**syn-python-selenium-3.0의 변경 사항**:
+ **Chromium의 번들링된 라이브러리의 버전 업데이트** - Chromium 종속성이 새 버전으로 업데이트되었습니다.

### syn-python-selenium-2.1
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-2.1"></a>

**주요 종속 항목**:
+ Python 3.8
+ Selenium 4.15.1
+ Chromium 버전 111.0.5563.146

**syn-python-selenium-2.1의 변경 사항**:
+ **Chromium의 번들링된 라이브러리의 버전 업데이트** - Chromium 및 Selenium 종속성이 새 버전으로 업데이트되었습니다.

### syn-python-selenium-2.0
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-2.0"></a>

**주요 종속 항목**:
+ Python 3.8
+ Selenium 4.10.0
+ Chromium 버전 111.0.5563.146

**syn-python-selenium-2.0의 변경 사항**:
+ **종속성 업데이트** - Chromium 및 Selenium 종속성이 새 버전으로 업데이트되었습니다.

**syn-python-selenium-2.0의 버그 수정**:
+ **타임스탬프 추가** - canary 로그에 타임스탬프가 추가되었습니다.
+ **세션 재사용** - 이제 canary가 이전 canary 실행의 세션을 재사용할 수 없도록 버그가 수정되었습니다.

### syn-python-selenium-1.3
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-1.3"></a>

**주요 종속 항목**:
+ Python 3.8
+ Selenium 3.141.0
+ Chromium 버전 92.0.4512.0

**syn-python-selenium-1.3의 변경 사항**:
+ **보다 정확한 타임스탬프** - canary 실행의 시작 시간과 중지 시간이 이제 밀리초의 정밀도로 기록됩니다.

### syn-python-selenium-1.2
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-1.2"></a>

**주요 종속 항목**:
+ Python 3.8
+ Selenium 3.141.0
+ Chromium 버전 92.0.4512.0
+ **종속 항목 업데이트**— 이 런타임의 유일한 새로운 기능은 업데이트된 종속 항목입니다.

### syn-python-selenium-1.1
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-1.1"></a>

**주요 종속 항목**:
+ Python 3.8
+ Selenium 3.141.0
+ Chromium 버전 83.0.4103.0

**기능:**
+ **사용자 지정 핸들러 함수** - 이제 canary 스크립트에 사용자 지정 핸들러 함수를 사용할 수 있습니다. 이전 런타임의 경우 `.handler`를 포함할 스크립트 엔트리 포인트가 필요합니다.

  canary 스크립트를 임의의 폴더에 넣고 폴더 이름을 핸들러의 일부로 전달할 수도 있습니다. 예를 들어, `MyFolder/MyScriptFile.functionname`을 진입점으로 사용할 수 있습니다.
+ **지표 및 단계 실패 구성을 추가하기 위한 구성 옵션** - 이러한 옵션은 Node.js canary의 런타임에서 이미 사용할 수 있었습니다. 자세한 정보는 [SyntheticsConfiguration 클래스](CloudWatch_Synthetics_Canaries_Library_Python.md#CloudWatch_Synthetics_Library_SyntheticsConfiguration_Python)을 참조하세요.
+ **Chrome의 사용자 지정 인수** - 이제 시크릿 모드로 브라우저를 열거나 프록시 서버 구성을 전달할 수 있습니다. 자세한 내용은 [Chrome()](CloudWatch_Synthetics_Canaries_Library_Python.md#CloudWatch_Synthetics_Library_Python_Chrome) 섹션을 참조하세요.
+ **교차 리전 아티팩트 버킷** - canary는 다른 리전의 Amazon S3 버킷에 아티팩트를 저장할 수 있습니다.
+ **`index.py` 문제 수정을 포함한 버그 수정** - 이전 런타임에서는 ` index.py`로 이름이 지정된 canary 파일이 라이브러리 파일의 이름과 충돌하기 때문에 예외가 발생했습니다. 이제 이 문제가 해결됐습니다.

### syn-python-selenium-1.0
<a name="CloudWatch_Synthetics_runtimeversion-syn-python-selenium-1.0"></a>

**주요 종속 항목**:
+ Python 3.8
+ Selenium 3.141.0
+ Chromium 버전 83.0.4103.0

**기능:**
+ **Selenium 지원** - Selenium 테스트 프레임워크를 사용하여 canary 스크립트를 작성할 수 있습니다. 다른 곳에서 CloudWatch Synthetics로 Selenium 스크립트를 가져올 수 있으며 최소한의 변경으로도 스크립트가 AWS 서비스에서 작동합니다.

# Node.js를 사용하는 런타임 버전
<a name="CloudWatch_Synthetics_Library_Nodejs"></a>

다음 섹션에는 Node.js용 CloudWatch Synthetics 런타임 버전에 관한 정보가 포함되어 있습니다. 이 런타임에는 브라우저 또는 프레임워크가 포함되어 있지 않습니다.

이러한 런타임 버전의 명명 규칙은 `syn-language -majorversion.minorversion`입니다.

## syn-nodejs-4.1
<a name="CloudWatch_Synthetics_runtimeversion-syn-nodejs-4.1"></a>

**중요**  
Synthetics `syn-nodejs-3.1` 이상부터 Synthetics 런타임은 새 네임스페이스를 사용합니다. 새 네임스페이스를 사용하려면 카나리 스크립트를 마이그레이션하세요. 레거시 네임스페이스는 향후 릴리스에서 더 이상 사용되지 않습니다.  
@amzn/synthetics-core → @aws/synthetics-core

**주요 종속 항목**:
+ AWS Lambda 런타임 Node.js 22.x

 **syn-nodejs-4.1의 변경 사항** 
+ `fast-xml-parser`를 5.5.7로 업그레이드하고 다음 CVE 해결:
  + CVE-2026-25128
  + CVE-2026-25896
  + CVE-2026-26278
  + CVE-2026-27942
  + CVE-2026-33036

## Node.js의 이전 런타임 버전
<a name="Previousversions-nodejs"></a>

Node.js의 다음과 같은 이전 런타임 버전은 여전히 지원됩니다.

### syn-nodejs-4.0
<a name="CloudWatch_Synthetics_runtimeversion-syn-nodejs-4.0"></a>

**주요 종속 항목**:
+ AWS Lambda 런타임 Node.js 22.x

 **syn-nodejs-4.0의 변경 사항** 
+ 보안 패치를 적용했습니다.

### syn-nodejs-3.1
<a name="CloudWatch_Synthetics_runtimeversion-syn-nodejs-3.1"></a>

**중요**  
Synthetics `syn-nodejs-3.1` 이상부터 Synthetics 런타임은 새 네임스페이스를 사용합니다. 새 네임스페이스를 사용하려면 카나리 스크립트를 마이그레이션하세요. 레거시 네임스페이스는 향후 릴리스에서 더 이상 사용되지 않습니다.  
@amzn/synthetics-core → @aws/synthetics-core

**주요 종속 항목**:
+ AWS Lambda 런타임 Node.js 20.x

 **syn-nodejs-3.1의 변경 사항** 
+ Synthetics 런타임 네임스페이스 마이그레이션.
+ 유형 정의는 [npm 레지스트리](https://www.npmjs.com/package/@aws/synthetics-core)에서 사용할 수 있습니다. 유형 정의 패키지 버전이 카나리의 런타임 버전과 일치하는지 확인하세요.

### syn-nodejs-3.0
<a name="Synthetics_runtimeversion-syn-nodejs-3.0"></a>

**주요 종속 항목**:
+ AWS Lambda 런타임 Node.js 20.x

 **syn-nodejs-3.0의 변경 사항** 
+ 다중 검사 블루프린트에 대한 지원.

# 런타임 버전 지원 정책
<a name="CloudWatch_Synthetics_Runtime_Support_Policy"></a>

Synthetics 런타임 버전에는 유지 관리 및 보안 업데이트가 적용됩니다. 런타임 버전의 구성 요소가 더 이상 지원되지 않는 경우 해당 Synthetics 런타임 버전은 더 이상 사용되지 않습니다.

사용 중단된 런타임 버전을 사용하여 canary를 생성할 수 없습니다. 사용 중단된 런타임을 사용하는 canary는 계속 실행됩니다. 이러한 canary를 중지, 시작 및 삭제할 수 있습니다. 지원되는 런타임 버전을 사용하도록 canary를 업데이트함으로써 사용 중지된 런타임 버전을 사용하는 기존 canary를 업데이트할 수 있습니다.

CloudWatch Synthetics는 향후 60일 이내에 사용 중지될 예정인 런타임을 사용하는 canary가 있는 경우 이를 이메일로 알려줍니다. 최신 릴리스에 포함된 새로운 기능, 보안, 성능 향상의 이점을 활용하려면 canary를 지원되는 런타임 버전으로 마이그레이션하는 것이 좋습니다.

## CloudWatch Synthetics 런타임 사용 중단 날짜
<a name="runtime_deprecation_dates"></a>

다음 테이블에는 사용 중단된 각 CloudWatch Synthetics 런타임의 사용 중단 날짜가 나열되어 있습니다.


| 런타임 버전 | 사용 중단 날짜 | 
| --- | --- | 
|   `syn-python-selenium-5.1`   |  2026년 2월 3일  | 
|   `syn-python-selenium-5.0`   |  2026년 2월 3일  | 
|   `syn-python-selenium-4.1`   |  2026년 2월 3일  | 
|   `syn-python-selenium-4.0`   |  2026년 2월 3일  | 
|   `syn-nodejs-puppeteer-7.0`   |  2026년 1월 22일  | 
|   `syn-nodejs-puppeteer-6.2`   |  2026년 1월 22일  | 
|   `syn-nodejs-puppeteer-5.2`   |  2026년 1월 22일  | 
|   `syn-python-selenium-3.0`   |  2026년 1월 22일  | 
|   `syn-python-selenium-2.1`   |  2026년 1월 22일  | 
|   `syn-nodejs-puppeteer-6.1`   |  2024년 3월 8일  | 
|   `syn-nodejs-puppeteer-6.0`   |  2024년 3월 8일  | 
|   `syn-nodejs-puppeteer-5.1`   |  2024년 3월 8일  | 
|   `syn-nodejs-puppeteer-5.0`   |  2024년 3월 8일  | 
|   `syn-nodejs-puppeteer-4.0`   |  2024년 3월 8일  | 
|   `syn-nodejs-puppeteer-3.9`   |  2024년 1월 8일  | 
|   `syn-nodejs-puppeteer-3.8`   |  2024년 1월 8일  | 
|   `syn-python-selenium-2.0`   |  2024년 3월 8일  | 
|   `syn-python-selenium-1.3`   |  2024년 3월 8일  | 
|   `syn-python-selenium-1.2`   |  2024년 3월 8일  | 
|   `syn-python-selenium-1.1`   |  2024년 3월 8일  | 
|   `syn-python-selenium-1.0`   |  2024년 3월 8일  | 
|   `syn-nodejs-puppeteer-3.7`   |  2024년 1월 8일  | 
|   `syn-nodejs-puppeteer-3.6`   |  2024년 1월 8일  | 
|   `syn-nodejs-puppeteer-3.5`   |  2024년 1월 8일  | 
|   `syn-nodejs-puppeteer-3.4`   |  2022년 11월 13일  | 
|   `syn-nodejs-puppeteer-3.3`   |  2022년 11월 13일  | 
|   `syn-nodejs-puppeteer-3.2`   |  2022년 11월 13일  | 
|   `syn-nodejs-puppeteer-3.1`   |  2022년 11월 13일  | 
|   `syn-nodejs-puppeteer-3.0`   |  2022년 11월 13일  | 
|   `syn-nodejs-2.2`   |  2021년 5월 28일  | 
|   `syn-nodejs-2.1`   |  2021년 5월 28일  | 
|   `syn-nodejs-2.0`   |  2021년 5월 28일  | 
|   `syn-nodejs-2.0-beta`   |  2021년 2월 8일  | 
|   `syn-1.0`   |  2021년 5월 28일  | 

# 런타임 버전 업데이트
<a name="CloudWatch_Synthetics_Runtime_Version_Update"></a>

CloudWatch 콘솔, AWS CloudFormation, AWS CLI 또는 AWS SDK를 사용하여 canary의 런타임 버전을 업데이트할 수 있습니다. CloudWatch 콘솔을 사용할 경우 한 번에 최대 5개의 카나리를 업데이트할 수 있는데, 카나리 목록 페이지에서 카나리를 선택한 다음, **작업**, **런타임 업데이트**를 선택하면 됩니다.

런타임 업데이트를 커밋하기 전에 먼저 업데이트를 테스트하여 업데이트를 확인할 수 있습니다. 런타임 버전을 업데이트할 때 CloudWatch 콘솔에서 **모의 실행 시작** 또는 **나중에 검증 및 저장** 옵션을 선택하여 구성 변경 사항과 함께 원래 카나리의 모의 실행을 생성합니다. 모의 실행은 카나리를 업데이트하고 실행하여 런타임 업데이트가 카나리에 안전한지 확인합니다. 새 런타임 버전의 카나리를 확인한 후에는 카나리의 런타임 버전을 업데이트합니다. 자세한 내용은 [안전한 카나리 업데이트 수행](performing-safe-canary-upgrades.md) 섹션을 참조하세요.

또는 CloudWatch 콘솔을 사용하여 카나리를 복제하고 해당 런타임 버전을 업데이트하여 업데이트를 확인할 수 있습니다. 이렇게 하면 원래 canary의 복제인 또 다른 canary가 생성됩니다. 새 런타임 버전의 canary를 확인한 후에는 원래 canary의 런타임 버전을 업데이트하고 복제 canary를 삭제할 수 있습니다.

 또한 업그레이드 스크립트를 사용하여 여러 canary를 업데이트할 수도 있습니다. 자세한 내용은 [canary 런타임 업그레이드 스크립트](#CloudWatch_Synthetics_Canaries_upgrade_script) 단원을 참조하세요.

canary를 업그레이드했는데 canary가 실패한 경우 [실패한 canary 문제 해결](CloudWatch_Synthetics_Canaries_Troubleshoot.md) 단원을 참조하세요.

## canary 런타임 업그레이드 스크립트
<a name="CloudWatch_Synthetics_Canaries_upgrade_script"></a>

canary 스크립트를 지원되는 런타임 버전으로 업그레이드하려면 다음 스크립트를 사용합니다.

```
const AWS = require('aws-sdk');

// You need to configure your AWS credentials and Region.
//   https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-credentials-node.html
//   https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-region.html

const synthetics = new AWS.Synthetics();

const DEFAULT_OPTIONS = {
  /**
   * The number of canaries to upgrade during a single run of this script.
   */
  count: 10,
  /**
   * No canaries are upgraded unless force is specified.
   */
  force: false
};

/**
 * The number of milliseconds to sleep between GetCanary calls when
 * verifying that an update succeeded.
 */
const SLEEP_TIME = 5000;

(async () => {
  try {
    const options = getOptions();

    const versions = await getRuntimeVersions();
    const canaries = await getAllCanaries();
    const upgrades = canaries
      .filter(canary => !versions.isLatestVersion(canary.RuntimeVersion))
      .map(canary => {
        return {
          Name: canary.Name,
          FromVersion: canary.RuntimeVersion,
          ToVersion: versions.getLatestVersion(canary.RuntimeVersion)
        };
      });

    if (options.force) {
      const promises = [];

      for (const upgrade of upgrades.slice(0, options.count)) {
        const promise = upgradeCanary(upgrade);
        promises.push(promise);
        // Sleep for 100 milliseconds to avoid throttling.
        await usleep(100);
      }

      const succeeded = [];
      const failed = [];
      for (let i = 0; i < upgrades.slice(0, options.count).length; i++) {
        const upgrade = upgrades[i];
        const promise = promises[i];
        try {
          await promise;
          console.log(`The update of ${upgrade.Name} succeeded.`);
          succeeded.push(upgrade.Name);
        } catch (e) {
          console.log(`The update of ${upgrade.Name} failed with error: ${e}`);
          failed.push({
            Name: upgrade.Name,
            Reason: e
          });
        }
      }

      if (succeeded.length) {
        console.group('The following canaries were upgraded successfully.');
        for (const name of succeeded) {
          console.log(name);
        }
        console.groupEnd()
      } else {
        console.log('No canaries were upgraded successfully.');
      }

      if (failed.length) {
        console.group('The following canaries were not upgraded successfully.');
        for (const failure of failed) {
          console.log('\x1b[31m', `${failure.Name}: ${failure.Reason}`, '\x1b[0m');
        }
        console.groupEnd();
      }
    } else {
      console.log('Run with --force [--count <count>] to perform the first <count> upgrades shown. The default value of <count> is 10.')
      console.table(upgrades);
    }
  } catch (e) {
    console.error(e);
  }
})();

function getOptions() {
  const force = getFlag('--force', DEFAULT_OPTIONS.force);
  const count = getOption('--count', DEFAULT_OPTIONS.count);
  return { force, count };

  function getFlag(key, defaultValue) {
    return process.argv.includes(key) || defaultValue;
  }
  function getOption(key, defaultValue) {
    const index = process.argv.indexOf(key);
    if (index < 0) {
      return defaultValue;
    }
    const value = process.argv[index + 1];
    if (typeof value === 'undefined' || value.startsWith('-')) {
      throw `The ${key} option requires a value.`;
    }
    return value;
  }
}

function getAllCanaries() {
  return new Promise((resolve, reject) => {
    const canaries = [];

    synthetics.describeCanaries().eachPage((err, data) => {
      if (err) {
        reject(err);
      } else {
        if (data === null) {
          resolve(canaries);
        } else {
          canaries.push(...data.Canaries);
        }
      }
    });
  });
}

function getRuntimeVersions() {
  return new Promise((resolve, reject) => {
    const jsVersions = [];
    const pythonVersions = [];
    synthetics.describeRuntimeVersions().eachPage((err, data) => {
      if (err) {
        reject(err);
      } else {
        if (data === null) {
          jsVersions.sort((a, b) => a.ReleaseDate - b.ReleaseDate);
          pythonVersions.sort((a, b) => a.ReleaseDate - b.ReleaseDate);
          resolve({
            isLatestVersion(version) {
              const latest = this.getLatestVersion(version);
              return latest === version;
            },
            getLatestVersion(version) {
              if (jsVersions.some(v => v.VersionName === version)) {
                return jsVersions[jsVersions.length - 1].VersionName;
              } else if (pythonVersions.some(v => v.VersionName === version)) {
                return pythonVersions[pythonVersions.length - 1].VersionName;
              } else {
                throw Error(`Unknown version ${version}`);
              }
            }
          });
        } else {
          for (const version of data.RuntimeVersions) {
            if (version.VersionName === 'syn-1.0') {
              jsVersions.push(version);
            } else if (version.VersionName.startsWith('syn-nodejs-2.')) {
              jsVersions.push(version);
            } else if (version.VersionName.startsWith('syn-nodejs-puppeteer-')) {
              jsVersions.push(version);
            } else if (version.VersionName.startsWith('syn-python-selenium-')) {
              pythonVersions.push(version);
            } else {
              throw Error(`Unknown version ${version.VersionName}`);
            }
          }
        }
      }
    });
  });
}

async function upgradeCanary(upgrade) {
  console.log(`Upgrading canary ${upgrade.Name} from ${upgrade.FromVersion} to ${upgrade.ToVersion}`);
  await synthetics.updateCanary({ Name: upgrade.Name, RuntimeVersion: upgrade.ToVersion }).promise();
  while (true) {
    await usleep(SLEEP_TIME);
    console.log(`Getting the state of canary ${upgrade.Name}`);
    const response = await synthetics.getCanary({ Name: upgrade.Name }).promise();
    const state = response.Canary.Status.State;
    console.log(`The state of canary ${upgrade.Name} is ${state}`);
    if (state === 'ERROR' || response.Canary.Status.StateReason) {
      throw response.Canary.Status.StateReason;
    }
    if (state !== 'UPDATING') {
      return;
    }
  }
}

function usleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}
```