

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Fungsi perpustakaan tersedia untuk skrip kenari Node.js menggunakan Puppeteer
<a name="CloudWatch_Synthetics_Canaries_Library_Nodejs"></a>

Bagian ini menjelaskan fungsi perpustakaan yang tersedia untuk skrip canary Node.js.

**Topics**
+ [Kelas dan fungsi pustaka Node.js yang berlaku untuk semua canary](#CloudWatch_Synthetics_Library_allcanaries)
+ [Kelas dan fungsi pustaka Node.js yang hanya berlaku untuk canary UI](#CloudWatch_Synthetics_Library_UIcanaries)
+ [Kelas dan fungsi pustaka Node.js yang hanya berlaku untuk canary API](#CloudWatch_Synthetics_Library_APIcanaries)

## Kelas dan fungsi pustaka Node.js yang berlaku untuk semua canary
<a name="CloudWatch_Synthetics_Library_allcanaries"></a>

Fungsi pustaka CloudWatch Synthetics berikut untuk Node.js berguna untuk semua kenari.

**Topics**
+ [Kelas Synthetics](#CloudWatch_Synthetics_Library_Synthetics_Class_all)
+ [SyntheticsConfiguration kelas](#CloudWatch_Synthetics_Library_SyntheticsConfiguration)
+ [Logger Synthetic](#CloudWatch_Synthetics_Library_SyntheticsLogger)
+ [SyntheticsLogHelper kelas](#CloudWatch_Synthetics_Library_SyntheticsLogHelper)

### Kelas Synthetics
<a name="CloudWatch_Synthetics_Library_Synthetics_Class_all"></a>

Fungsi berikut untuk semua canary berada di kelas Synthetics.

**Topics**
+ [addExecutionError(ErrorMessage, ex);](#CloudWatch_Synthetics_Library_addExecutionError)
+ [getCanaryName();](#CloudWatch_Synthetics_Library_getCanaryName)
+ [getCanaryArn();](#CloudWatch_Synthetics_Library_getCanaryARN)
+ [getCanaryUserAgentString();](#CloudWatch_Synthetics_Library_getCanaryUserAgentString)
+ [getRuntimeVersion();](#CloudWatch_Synthetics_Library_getRuntimeVersion)
+ [getLogLevel();](#CloudWatch_Synthetics_Library_getLogLevel)
+ [setLogLevel();](#CloudWatch_Synthetics_Library_setLogLevel)

#### addExecutionError(ErrorMessage, ex);
<a name="CloudWatch_Synthetics_Library_addExecutionError"></a>

`errorMessage` menjelaskan kesalahan dan `ex` adalah pengecualian yang ditemui

Anda dapat menggunakan `addExecutionError` untuk mengatur kesalahan eksekusi bagi canary Anda. Itu menggagalkan canary tanpa mengganggu eksekusi skrip. Itu juga tidak memengaruhi metrik `successPercent` Anda.

Anda harus melacak kesalahan sebagai kesalahan eksekusi hanya jika kesalahan itu tidak penting untuk menunjukkan keberhasilan atau kegagalan skrip canary Anda.

Contoh penggunaan `addExecutionError` adalah sebagai berikut. Anda memantau ketersediaan titik akhir Anda dan mengambil tangkapan layar setelah halaman dimuat. Karena kegagalan mengambil tangkapan layar tidak menentukan ketersediaan titik akhir, Anda dapat menangkap kesalahan apa pun yang dihadapi saat mengambil tangkapan layar dan menambahkannya sebagai kesalahan eksekusi. Metrik ketersediaan Anda masih akan menunjukkan bahwa titik akhir telah aktif dan berjalan, namun status canary Anda akan ditandai sebagai gagal. Blok kode sampel berikut menangkap kesalahan tersebut dan menambahkannya sebagai kesalahan eksekusi.

```
try {
    await synthetics.takeScreenshot(stepName, "loaded");
} catch(ex) {
    synthetics.addExecutionError('Unable to take screenshot ', ex);
}
```

#### getCanaryName();
<a name="CloudWatch_Synthetics_Library_getCanaryName"></a>

Mengembalikan nama dari canary.

#### getCanaryArn();
<a name="CloudWatch_Synthetics_Library_getCanaryARN"></a>

Mengembalikan ARN dari canary.

#### getCanaryUserAgentString();
<a name="CloudWatch_Synthetics_Library_getCanaryUserAgentString"></a>

Mengembalikan agen pengguna kustom dari canary.

#### getRuntimeVersion();
<a name="CloudWatch_Synthetics_Library_getRuntimeVersion"></a>

Fungsi ini tersedia dalam versi runtime `syn-nodejs-puppeteer-3.0` dan yang lebih baru. Fungsi ini mengembalikan versi runtime Synthetics dari canary. Misalnya,nilai yang dikembalikan bisa menjadi `syn-nodejs-puppeteer-3.0`.

#### getLogLevel();
<a name="CloudWatch_Synthetics_Library_getLogLevel"></a>

Mengambil level log saat ini untuk pustaka Synthetics. Nilai yang mungkin adalah sebagai berikut:
+ `0` – Debug
+ `1` – Info
+ `2` – Peringatan
+ `3` – Kesalahan

Contoh:

```
let logLevel = synthetics.getLogLevel();
```

#### setLogLevel();
<a name="CloudWatch_Synthetics_Library_setLogLevel"></a>

Mengatur tingkat log untuk pustaka Sintetis. Nilai yang mungkin adalah sebagai berikut:
+ `0` – Debug
+ `1` – Info
+ `2` – Peringatan
+ `3` – Kesalahan

Contoh:

```
synthetics.setLogLevel(0);
```

### SyntheticsConfiguration kelas
<a name="CloudWatch_Synthetics_Library_SyntheticsConfiguration"></a>

Kelas ini hanya tersedia di versi runtime `syn-nodejs-2.1` atau lebih baru.

Anda dapat menggunakan `SyntheticsConfiguration` kelas untuk mengonfigurasi perilaku fungsi pustaka Sintetis. Misalnya, Anda dapat menggunakan kelas ini untuk mengonfigurasi fungsi `executeStep()` untuk tidak menangkap tangkapan layar.

Anda dapat mengatur konfigurasi CloudWatch Synthetics di tingkat global, yang diterapkan ke semua langkah kenari. Anda juga dapat mengganti konfigurasi ini pada tingkat langkah dengan meneruskan kunci konfigurasi dan pasangan nilai.

Anda dapat memberikan opsi di tingkat langkah. Sebagai contoh, silakan lihat [async executeStep (StepName,, [StepConfig]); functionToExecute](#CloudWatch_Synthetics_Library_executeStep) dan [executeHttpStep(StepName, requestOptions, [callback], [stepConfig])](#CloudWatch_Synthetics_Library_executeHttpStep)

**Topics**
+ [setConfig(options)](#CloudWatch_Synthetics_Library_setConfig)
+ [Pemantauan visual](#CloudWatch_Synthetics_Library_SyntheticsLogger_VisualTesting)

#### setConfig(options)
<a name="CloudWatch_Synthetics_Library_setConfig"></a>

` {{options}} ` adalah sebuah objek, yang merupakan kumpulan opsi yang dapat dikonfigurasi untuk canary Anda. Bagian berikut menjelaskan bidang-bidang yang memungkinkan dalam ` {{options}} `.

##### setConfig(options) untuk semua canary
<a name="CloudWatch_Synthetics_Library_setConfigall"></a>

Untuk kenari yang menggunakan `syn-nodejs-puppeteer-3.2` atau yang lebih baru, **(opsi)** untuk **SetConfig** dapat menyertakan parameter berikut:
+ `includeRequestHeaders` (boolean)— Apakah akan menyertakan header permintaan dalam laporan. Nilai default-nya `false`.
+ `includeResponseHeaders` (boolean)— Apakah akan menyertakan header respons dalam laporan tersebut. Nilai default-nya `false`.
+ `restrictedHeaders` (array)— Sebuah daf.ar nilai header untuk diabaikan, jika header disertakan. Ini berlaku untuk header permintaan dan respons. Misalnya, Anda dapat menyembunyikan kredensyal Anda dengan meneruskan ** includeRequestHeaders**as `true` dan **RestrictedHeaders** as. `['Authorization']` 
+ `includeRequestBody` (boolean)— Apakah akan menyertakan bodi permintaan dalam laporan. Nilai default-nya `false`.
+ `includeResponseBody` (boolean)— Apakah akan menyertakan bodi respons dalam laporan. Nilai default-nya `false`.
**penting**  
Jika Anda mengaktifkan salah satu `includeResponseBody` atau` logResponseBody`, objek data tidak dikembalikan dalam respons dari beberapa APIs, seperti klien aws-sdk v3. Ini karena keterbatasan Node.js dan jenis objek respons yang digunakan.

 **setConfig (opsi) mengenai metrik CloudWatch ** 

Untuk kenari yang menggunakan `syn-nodejs-puppeteer-3.1` atau yang lebih baru, **(opsi)** untuk **SetConfig** dapat menyertakan parameter Boolean berikut yang menentukan metrik mana yang diterbitkan oleh kenari. Bawaan untuk masing-masing opsi ini adalah `true`. Pilihan yang dimulai dengan `aggregated` menentukan apakah metrik dipancarkan tanpa dimensi ` CanaryName`. Anda dapat menggunakan metrik ini untuk melihat hasil gabungan untuk semua canary Anda. Pilihan lain menentukan apakah metrik dipancarkan dengan dimensi `CanaryName`. Anda dapat menggunakan metrik ini untuk melihat hasil untuk setiap canary individu.

Untuk daftar CloudWatch metrik yang dipancarkan oleh burung kenari, lihat. [CloudWatch metrik yang diterbitkan oleh kenari](CloudWatch_Synthetics_Canaries_metrics.md)
+ `failedCanaryMetric` (boolean)— Apakah akan memancarkan metrik ` Failed` (dengan dimensi `CanaryName`) untuk canary ini. Nilai default-nya `true`.
+ `failedRequestsMetric` (boolean)— Apakah akan memancarkan metrik `Failed requests` (dengan dimensi `CanaryName`) untuk canary ini. Nilai default-nya `true`.
+ `_2xxMetric` (boolean)— Apakah akan memancarkan metrik `2xx` (dengan dimensi `CanaryName`) untuk canary ini. Nilai default-nya `true`.
+ `_4xxMetric` (boolean)— Apakah akan memancarkan metrik `4xx` (dengan dimensi `CanaryName`) untuk canary ini. Nilai default-nya `true`.
+ `_5xxMetric` (boolean)— Apakah akan memancarkan metrik `5xx` (dengan dimensi `CanaryName`) untuk canary ini. Nilai default-nya `true`.
+ `stepDurationMetric` (boolean)— Apakah akan memancarkan metrik `Step duration` (dengan dimensi `CanaryName` `StepName`) untuk canary ini. Nilai default-nya `true`.
+ `stepSuccessMetric` (boolean)— Apakah akan memancarkan metrik `Step success` (dengan dimensi `CanaryName` `StepName`) untuk canary ini. Nilai default-nya `true`.
+ `aggregatedFailedCanaryMetric` (boolean)— Apakah akan memancarkan metrik `Failed` (tanpa dimensi `CanaryName`) untuk canary ini. Bawaannya adalah `true`.
+ `aggregatedFailedRequestsMetric` (boolean)— Apakah akan memancarkan metrik `Failed Requests` (tanpa dimensi `CanaryName`) untuk canary ini. Bawaannya adalah `true`.
+ `aggregated2xxMetric` (boolean)— Apakah akan memancarkan metrik ` 2xx` (tanpa dimensi `CanaryName`) untuk canary ini. Bawaannya adalah `true`.
+ `aggregated4xxMetric` (boolean)— Apakah akan memancarkan metrik ` 4xx` (tanpa dimensi `CanaryName`) untuk canary ini. Bawaannya adalah `true`.
+ `aggregated5xxMetric` (boolean)— Apakah akan memancarkan metrik ` 5xx` (tanpa dimensi `CanaryName`) untuk canary ini. Bawaannya adalah `true`.
+ `visualMonitoringSuccessPercentMetric` (boolean)— Apakah akan memancarkan metrik `visualMonitoringSuccessPercent` untuk canary ini. Bawaannya adalah `true`.
+ `visualMonitoringTotalComparisonsMetric` (boolean)— Apakah akan memancarkan metrik `visualMonitoringTotalComparisons` untuk canary ini. Bawaannya adalah `false`.
+ `includeUrlPassword` (boolean)— Apakah akan menyertakan kata sandi yang muncul di URL. Secara default, kata sandi yang muncul URLs disunting dari log dan laporan, untuk mencegah pengungkapan data sensitif. Bawaannya adalah `false`.
+ `restrictedUrlParameters` (array)— Daftar jalur URL atau parameter kueri untuk disunting. Ini berlaku untuk URLs muncul di log, laporan, dan kesalahan. Parameter tersebut tidak peka terhadap huruf besar/kecil. Anda dapat meneruskan tanda bintang (\*) sebagai nilai untuk menyunting semua jalur URL dan nilai parameter kueri. Default-nya adalah array kosong.
+ `logRequest` (boolean)— Apakah akan mencatat setiap permintaan di log canary. Untuk canary UI, ini mencatat setiap permintaan yang dikirim oleh browser. Nilai default-nya `true`.
+ `logResponse` (boolean)— Apakah akan mencatat setiap respons di log canary. Untuk canary UI, ini membuat log terhadap setiap respons yang diterima oleh browser. Bawaannya adalah `true`.
+ `logRequestBody` (boolean)— Apakah akan mencatat bodi permintaan bersama dengan permintaan di log canary. Konfigurasi ini hanya berlaku jika `logRequest` merupakan `true`. Default-nya adalah `false` .
+ `logResponseBody` (boolean)— Apakah akan mencatat bodi respons bersama dengan respons di log canary. Konfigurasi ini hanya berlaku jika `logResponse` merupakan `true`. Nilai default-nya ` false`.
**penting**  
Jika Anda mengaktifkan salah satu `includeResponseBody` atau` logResponseBody`, objek data tidak dikembalikan dalam respons dari beberapa APIs, seperti klien aws-sdk v3. Ini karena keterbatasan Node.js dan jenis objek respons yang digunakan.
+ `logRequestHeaders` (boolean)— Apakah akan mencatat header permintaan bersama dengan permintaan di log canary. Konfigurasi ini hanya berlaku jika `logRequest` merupakan `true`. Nilai default-nya ` false`.

  Perhatikan bahwa `includeRequestHeaders` memungkinkan header dalam artefak.
+ `logResponseHeaders` (boolean)— Apakah akan mencatat header respons bersama dengan respons di log canary. Konfigurasi ini hanya berlaku jika `logResponse` merupakan `true`. Nilai default-nya ` false`.

  Perhatikan bahwa `includeResponseHeaders` memungkinkan header dalam artefak.

**catatan**  
Metrik `Duration` dan `SuccessPercent` selalu dipancarkan untuk setiap canary, baik dengan dan tanpa metrik `CanaryName`.

##### Metode untuk mengaktifkan atau menonaktifkan metrik
<a name="CloudWatch_Synthetics_Library_setConfig_metrics"></a>

 **disableAggregatedRequestMetrik ()** 

Menonaktifkan canary dari memancarkan semua metrik permintaan yang dipancarkan tanpa dimensi `CanaryName`.

 **disableRequestMetrics()** 

Menonaktifkan semua metrik permintaan, termasuk metrik per canary dan metrik yang dikumpulkan di semua canary.

 **disableStepMetrics()** 

Menonaktifkan semua metrik langkah, termasuk metrik langkah sukses dan metrik durasi langkah.

 **enableAggregatedRequestMetrik ()** 

Mengaktifkan canary untuk memancarkan semua metrik permintaan yang dipancarkan tanpa dimensi ` CanaryName`.

 **enableRequestMetrics()** 

Mengaktifkan semua metrik permintaan, termasuk metrik per canary dan metrik yang dikumpulkan di semua canary.

 **enableStepMetrics()** 

Mengaktifkan semua metrik langkah, termasuk metrik keberhasilan langkah dan metrik durasi langkah.

 **get2xxMetric()** 

Mengembalikan apakah canary memancarkan metrik `2xx` dengan dimensi ` CanaryName`.

 **get4xxMetric()** 

Mengembalikan apakah canary memancarkan metrik `4xx` dengan dimensi ` CanaryName`.

 **get5xxMetric()** 

Mengembalikan apakah canary memancarkan metrik `5xx` dengan dimensi ` CanaryName`.

 **getAggregated2xxMetric()** 

Mengembalikan apakah canary memancarkan metrik `2xx` tanpa dimensi.

 **getAggregated4xxMetric()** 

Mengembalikan apakah canary memancarkan metrik `4xx` tanpa dimensi.

 **getAggregatedFailedCanaryMetric()** 

Mengembalikan apakah canary memancarkan metrik `Failed` tanpa dimensi.

 **getAggregatedFailedRequestsMetric()** 

Mengembalikan apakah canary memancarkan metrik `Failed requests` tanpa dimensi.

 **getAggregated5xxMetric()** 

Mengembalikan apakah canary memancarkan metrik `5xx` tanpa dimensi.

 **getFailedCanaryMetrik ()** 

Mengembalikan apakah canary memancarkan metrik `Failed` dengan dimensi ` CanaryName`.

 **getFailedRequestsMetrik ()** 

Mengembalikan apakah canary memancarkan metrik `Failed requests` dengan dimensi `CanaryName`.

 **getStepDurationMetrik ()** 

Mengembalikan apakah canary memancarkan metrik `Duration` dengan dimensi ` CanaryName` untuk canary ini.

 **getStepSuccessMetrik ()** 

Mengembalikan apakah canary memancarkan metrik `StepSuccess` dengan dimensi ` CanaryName` untuk canary ini.

 **with2xxMetric(\_2xxMetric)** 

Menerima argumen Boolean, yang menentukan apakah akan memancarkan metrik `2xx` dengan dimensi `CanaryName` untuk canary ini.

 **with4xxMetric(\_4xxMetric)** 

Menerima argumen Boolean, yang menentukan apakah akan memancarkan metrik `4xx` dengan dimensi `CanaryName` untuk canary ini.

 **with5xxMetric(\_5xxMetric)** 

Menerima argumen Boolean, yang menentukan apakah akan memancarkan metrik `5xx` dengan dimensi `CanaryName` untuk canary ini.

 **withAggregated2xxMetric(aggregated2xxMetric)** 

Menerima argumen Boolean, yang menentukan apakah akan memancarkan metrik `2xx` tanpa dimensi untuk canary ini.

 **withAggregated4xxMetric(aggregated4xxMetric)** 

Menerima argumen Boolean, yang menentukan apakah akan memancarkan metrik `4xx` tanpa dimensi untuk canary ini.

 **withAggregated5xxMetric(aggregated5xxMetric)** 

Menerima argumen Boolean, yang menentukan apakah akan memancarkan metrik `5xx` tanpa dimensi untuk canary ini.

 ** withAggregatedFailedCanaryMetric(aggregatedFailedCanaryMetrik)** 

Menerima argumen Boolean, yang menentukan apakah akan memancarkan metrik `Failed` tanpa dimensi untuk canary ini.

 ** withAggregatedFailedRequestsMetric(aggregatedFailedRequestsMetrik)** 

Menerima argumen Boolean, yang menentukan apakah akan memancarkan metrik `Failed requests` tanpa dimensi untuk canary ini.

 **withFailedCanaryMetrik (failedCanaryMetric)** 

Menerima argumen Boolean, yang menentukan apakah akan memancarkan metrik `Failed` dengan dimensi `CanaryName` untuk canary ini.

 **withFailedRequestsMetrik (failedRequestsMetric)** 

Menerima argumen Boolean, yang menentukan apakah akan memancarkan metrik `Failed requests` dengan dimensi `CanaryName` untuk canary ini.

 **withStepDurationMetrik (stepDurationMetric)** 

Menerima argumen Boolean, yang menentukan apakah akan memancarkan metrik `Duration` dengan dimensi `CanaryName` untuk canary ini.

 **withStepSuccessMetrik (stepSuccessMetric)** 

Menerima argumen Boolean, yang menentukan apakah akan memancarkan metrik ` StepSuccess` dengan dimensi `CanaryName` untuk canary ini.

##### Metode untuk mengaktifkan atau menonaktifkan fitur lainnya
<a name="CloudWatch_Synthetics_Library_setConfig_methods"></a>

 **withHarFile()** 

Menerima argumen Boolean, yang menentukan apakah akan membuat file HAR untuk canary ini.

 **withStepsReport()** 

Menerima argumen Boolean, yang menentukan apakah akan melaporkan ringkasan eksekusi langkah untuk canary ini.

 **withIncludeUrlKata Sandi ()** 

Menerima argumen Boolean, yang menentukan apakah akan menyertakan kata sandi yang muncul URLs di log dan laporan.

 **withRestrictedUrlParameter ()** 

Menerima array jalur URL atau parameter kueri untuk disunting. Ini berlaku untuk URLs muncul di log, laporan, dan kesalahan. Anda dapat meneruskan tanda bintang (\*) sebagai nilai untuk menyunting semua jalur URL dan nilai parameter kueri

 **withLogRequest()** 

Menerima argumen Boolean, yang menentukan apakah akan membuat log setiap permintaan di log canary.

 **withLogResponse()** 

Menerima argumen Boolean, yang menentukan apakah akan membuat log setiap respons di log canary.

 **withLogRequestTubuh ()** 

Menerima argumen Boolean, yang menentukan apakah akan membuat log setiap bodi permintaan di log canary.

 **withLogResponseTubuh ()** 

Menerima argumen Boolean, yang menentukan apakah akan mencatat setiap bodi respons di log canary.

 **withLogRequestHeader ()** 

Menerima argumen Boolean, yang menentukan apakah akan mencatat setiap header permintaan di log canary.

 **withLogResponseHeader ()** 

Menerima argumen Boolean, yang menentukan apakah akan mencatat setiap header respons di log canary.

 **getHarFile()** 

Mengembalikan apakah canary membuat file HAR.

 **getStepsReport()** 

Mengembalikan apakah canary melaporkan ringkasan eksekusi langkah.

 **getIncludeUrlKata Sandi ()** 

Mengembalikan apakah kenari menyertakan kata sandi yang muncul URLs di log dan laporan.

 **getRestrictedUrlParameter ()** 

Mengembalikan apakah canary menyunting jalur URL atau parameter kueri.

 **getLogRequest()** 

Mengembalikan apakah canary mencatat setiap permintaan di log canary.

 **getLogResponse()** 

Mengembalikan apakah canary mencatat setiap respons di log canary.

 **getLogRequestTubuh ()** 

Mengembalikan apakah canary mencatat setiap badan permintaan di log canary.

 **getLogResponseTubuh ()** 

Mengembalikan apakah canary mencatat setiap bodi respons di log canary.

 **getLogRequestHeader ()** 

Mengembalikan apakah canary mencatat setiap header permintaan di log canary.

 **getLogResponseHeader ()** 

Mengembalikan apakah canary mencatat setiap header respons di log canary.

 **Fungsi untuk semua canary** 
+ `withIncludeRequestHeaders`(includeRequestHeaders)
+ `withIncludeResponseHeaders`(includeResponseHeaders)
+ `withRestrictedHeaders`(restrictedHeaders)
+ `withIncludeRequestBody`(includeRequestBody)
+ `withIncludeResponseBody`(includeResponseBody)
+ `enableReportingOptions`() - Mengaktifkan semua opsi pelaporan-- **includeRequestHeaders** includeResponseHeaders****,, **includeRequestBody**, dan **includeResponseBody**,.
+ `disableReportingOptions`() — Menonaktifkan semua opsi pelaporan-- **includeRequestHeaders**, ** includeResponseHeaders**, **includeRequestBody**, dan **includeResponseBody**,.

##### setConfig(options) untuk canary UI
<a name="CloudWatch_Synthetics_Library_setConfigUI"></a>

Untuk canary UI, **setConfig** dapat mencakup parameter Boolean berikut.
+ `continueOnStepFailure`**(boolean) - Apakah akan melanjutkan menjalankan skrip canary setelah langkah gagal (ini mengacu pada fungsi executeStep).** Jika ada langkah yang gagal, proses canary akan tetap ditandai sebagai gagal. Bawaannya adalah `false`.
+ `harFile` (boolean)— Apakah akan membuat file HAR. Bawaannya adalah `True`.
+ `screenshotOnStepStart` (boolean)— Apakah mengambil tangkapan layar sebelum memulai langkah.
+ `screenshotOnStepSuccess` (boolean)— Apakah mengambil tangkapan layar setelah menyelesaikan langkah yang berhasil.
+ `screenshotOnStepFailure` (boolean)— Apakah mengambil tangkapan layar setelah langkah gagal.

##### Metode untuk mengaktifkan atau menonaktifkan tangkapan layar
<a name="CloudWatch_Synthetics_Library_setConfig_screenshots"></a>

 **disableStepScreenshots()** 

Menonaktifkan semua opsi tangkapan layar (screenshotOnStepMulai, screenshotOnStep Sukses, dan screenshotOnStep Kegagalan).

 **enableStepScreenshots()** 

Mengaktifkan semua opsi tangkapan layar (screenshotOnStepMulai, screenshotOnStep Sukses, dan screenshotOnStep Kegagalan). Secara bawaan, semua metode ini diaktifkan.

 **getScreenshotOnStepFailure()** 

Mengembalikan apakah canary mengambil tangkapan layar setelah langkah gagal.

 **getScreenshotOnStepStart()** 

Mengembalikan apakah canary mengambil tangkapan layar sebelum memulai langkah.

 **getScreenshotOnStepSuccess()** 

Mengembalikan apakah canary mengambil tangkapan layar setelah menyelesaikan satu langkah dengan sukses.

 **withScreenshotOnStepStart(screenshotOnStepMulai)** 

Menerima argumen Boolean, yang menunjukkan apakah akan mengambil tangkapan layar sebelum memulai sebuah langkah.

 **withScreenshotOnStepSuccess(screenshotOnStepSukses)** 

Menerima argumen Boolean, yang menunjukkan apakah akan mengambil tangkapan layar setelah menyelesaikan langkah dengan sukses.

 **withScreenshotOnStepFailure(screenshotOnStepKegagalan)** 

Menerima argumen Boolean, yang menunjukkan apakah akan mengambil tangkapan layar setelah langkah gagal.

 **Penggunaan di canary UI** 

Pertama, impor dependensi synthetics dan ambil konfigurasinya.

```
// Import Synthetics dependency
const synthetics = require('@aws/synthetics-puppeteer');

// Get Synthetics configuration
const synConfig = synthetics.getConfiguration();
```

Lalu, atur konfigurasi untuk setiap pilihan dengan memanggil metode setConfig menggunakan salah satu pilihan berikut.

```
// Set configuration values
    synConfig.setConfig({
        screenshotOnStepStart: true, 
        screenshotOnStepSuccess: false,
        screenshotOnStepFailure: false
    });
```

Atau

```
synConfig.withScreenshotOnStepStart(false).withScreenshotOnStepSuccess(true).withScreenshotOnStepFailure(true)
```

Untuk menonaktifkan semua tangkapan layar, gunakan `disableStepScreenshots()` fungsi seperti pada contoh ini.

```
synConfig.disableStepScreenshots();
```

Anda dapat mengaktifkan dan menonaktifkan tangkapan layar kapan saja di kode tersebut. Misalnya, untuk menonaktifkan tangkapan layar hanya untuk satu langkah, nonaktifkan sebelum menjalankan langkah tersebut dan kemudian aktifkan setelah langkah.

##### setConfig(options) untuk canary API
<a name="CloudWatch_Synthetics_Library_setConfigAPI"></a>

Untuk canary API, **setConfig** dapat mencakup parameter Boolean berikut:
+ `continueOnHttpStepFailure`(boolean) - Apakah akan melanjutkan menjalankan skrip kenari setelah langkah HTTP gagal (ini mengacu pada **executeHttpStep**fungsi). Jika ada langkah yang gagal, proses canary akan tetap ditandai sebagai gagal. Bawaannya adalah `true`.

#### Pemantauan visual
<a name="CloudWatch_Synthetics_Library_SyntheticsLogger_VisualTesting"></a>

Pemantauan visual membandingkan tangkapan layar yang diambil selama berjalannya canary dengan tangkapan layar yang diambil selama berjalannya canary dasar. Jika perbedaan antara kedua tangkapan layar berada di luar persentase ambang batas, canary gagal dan Anda dapat melihat area dengan perbedaan warna yang disorot dalam laporan lari canary. Pemantauan visual didukung di kenari yang menjalankan **syn-puppeteer-node-3.2** dan yang lebih baru. Saat ini tidak didukung di canary yang menjalankan Python dan Selenium.

Untuk mengaktifkan pemantauan visual, tambahkan baris kode berikut ke skrip canary. Untuk detail selengkapnya, silakan lihat [SyntheticsConfiguration kelas](#CloudWatch_Synthetics_Library_SyntheticsConfiguration).

```
syntheticsConfiguration.withVisualCompareWithBaseRun(true);
```

Pertama kali canary berjalan dengan sukses setelah baris ini ditambahkan ke skrip, ia menggunakan tangkapan layar yang diambil selama proses itu sebagai dasar untuk perbandingan. Setelah kenari pertama dijalankan, Anda dapat menggunakan CloudWatch konsol untuk mengedit kenari untuk melakukan salah satu hal berikut:
+ Tetapkan putaran canary berikutnya sebagai dasar baru.
+ Gambar batas pada tangkapan layar dasar saat ini untuk menunjuk area tangkapan layar untuk diabaikan selama perbandingan visual.
+ Hapus tangkapan layar agar tidak digunakan untuk pemantauan visual.

Untuk informasi selengkapnya tentang menggunakan CloudWatch konsol untuk mengedit kenari, lihat[Mengedit atau menghapus canary](synthetics_canaries_deletion.md).

 **Opsi lain untuk pemantauan visual** 

 **SyntheticsConfiguration. withVisualVarianceThresholdPercentage(DiinginkanPersentase**) 

Tetapkan persentase yang dapat diterima untuk varians tangkapan layar dalam perbandingan visual.

 **SyntheticsConfiguration. withVisualVarianceHighlightHexColor(” \#fafa00 “)** 

Atur warna sorotan yang menunjuk area varians saat Anda melihat laporan canary run yang menggunakan pemantauan visual.

 **SyntheticsConfiguration. withFailCanaryRunOnVisualVariance(FailCanary**) 

Atur apakah canary gagal atau tidak ketika ada perbedaan visual yang lebih dari ambang batas. Default-nya adalah menggagalkan canary.

### Logger Synthetic
<a name="CloudWatch_Synthetics_Library_SyntheticsLogger"></a>

SyntheticsLogger menulis log keluar ke konsol dan ke file log lokal pada tingkat log yang sama. File log ini ditulis ke kedua lokasi hanya jika tingkat log berada pada atau di bawah tingkat log yang diinginkan dari fungsi log yang dipanggil tersebut.

Pernyataan pembuatan log di file log lokal diawali dengan "DEBUG: ", "INFO: ", dan seterusnya untuk mencocokkan tingkat log dari fungsi yang dipanggil tersebut.

Anda dapat menggunakan SyntheticsLogger, dengan asumsi Anda ingin menjalankan Synthetics Library pada tingkat log yang sama dengan logging canary Synthetics Anda.

Menggunakan tidak SyntheticsLogger diperlukan untuk membuat file log yang diunggah ke lokasi hasil S3 Anda. Sebagai penggantinya, Anda dapat membuat file log lain di ` /tmp` folder. File apa pun yang dibuat di bawah `/tmp` folder diunggah ke lokasi hasil dalam S3 sebagai artefak. 

Untuk menggunakan pencatat Pustaka Synthetics:

```
const log = require('@aws/synthetics-logger');
```

 Definisi fungsi yang berguna:

 **log.debug ({{message}},); {{ex}}** 

Parameter: {{message}} adalah pesan untuk log. {{ ex}}adalah pengecualian, jika ada, untuk log.

Contoh:

```
log.debug("Starting step - login.");
```

 **log.error ({{message}},{{ex}});** 

Parameter: {{message}} adalah pesan untuk log. {{ ex}}adalah pengecualian, jika ada, untuk log.

Contoh:

```
try {
  await login();
catch (ex) {
  log.error("Error encountered in step - login.", ex);
}
```

 **log.info ({{message}},{{ex}});** 

Parameter: {{message}} adalah pesan untuk log. {{ ex}}adalah pengecualian, jika ada, untuk log.

Contoh:

```
log.info("Successfully completed step - login.");
```

 **log.log ({{message}},{{ex}});** 

Ini adalah nama lain untuk `log.info`. 

Parameter: {{message}} adalah pesan untuk log. {{ ex}}adalah pengecualian, jika ada, untuk log.

Contoh:

```
 log.log("Successfully completed step - login.");
```

 **log.warn ({{message}},{{ex}});** 

Parameter: {{message}} adalah pesan untuk log. {{ ex}}adalah pengecualian, jika ada, untuk log.

Contoh:

```
log.warn("Exception encountered trying to publish CloudWatch Metric.", ex);
```

### SyntheticsLogHelper kelas
<a name="CloudWatch_Synthetics_Library_SyntheticsLogHelper"></a>

Kelas `SyntheticsLogHelper` tersedia di runtime ` syn-nodejs-puppeteer-3.2` dan runtime yang lebih baru. Ini sudah diinisialisasi di perpustakaan CloudWatch Synthetics dan dikonfigurasi dengan konfigurasi Synthetics. Anda dapat menambahkan ini sebagai Dependensi dalam skrip Anda. Kelas ini memungkinkan Anda untuk membersihkan URLs, header, dan pesan kesalahan untuk menyunting informasi sensitif.

**catatan**  
Synthetics membersihkan semua URLs dan pesan kesalahan yang dicatatnya sebelum memasukkannya ke dalam log, laporan, file HAR, dan kesalahan canary run berdasarkan pengaturan konfigurasi Synthetics. `restrictedUrlParameters` Anda harus menggunakan ` getSanitizedUrl` atau `getSanitizedErrorMessage` hanya jika Anda login URLs atau kesalahan dalam skrip Anda. Synthetics tidak menyimpan artefak canary kecuali kesalahan canary yang dilemparkan oleh skrip tersebut. Artefak Canary run disimpan di akun pelanggan Anda. Untuk informasi selengkapnya, lihat [Pertimbangan keamanan untuk canary Synthetics](servicelens_canaries_security.md).

**Topics**
+ [getSanitizedUrl(url, StepConfig = nol)](#CloudWatch_Synthetics_Library_getSanitizedUrl)
+ [getSanitizedErrorPesan](#CloudWatch_Synthetics_Library_getSanitizedErrorMessage)
+ [getSanitizedHeaders(header, StepConfig = null)](#CloudWatch_Synthetics_Library_getSanitizedHeaders)

#### getSanitizedUrl(url, StepConfig = nol)
<a name="CloudWatch_Synthetics_Library_getSanitizedUrl"></a>

Fungsi ini tersedia di `syn-nodejs-puppeteer-3.2` dan nanti. Ia mengembalikan string url sanitasi berdasarkan konfigurasi. Anda dapat memilih untuk menyunting parameter URL sensitif seperti kata sandi dan access\_token dengan menyetel properti `restrictedUrlParameters`. Secara default, kata sandi di URLs disunting. Anda dapat mengaktifkan kata sandi URL jika diperlukan dengan menyetel `includeUrlPassword` ke true. 

Fungsi ini memunculkan kesalahan jika URL yang dilewatkan bukan sebuah URL yang valid.

 **Parameter ** 
+ {{url}}adalah string dan merupakan URL untuk membersihkan.
+  {{stepConfig}}(Opsional) mengganti konfigurasi Synthetics global untuk fungsi ini. Jika `stepConfig` tidak diteruskan, konfigurasi global digunakan untuk membersihkan URL.

 **Contoh ** 

Contoh ini menggunakan URL sampel berikut: ` https://example.com/learn/home?access_token=12345&token_type=Bearer&expires_in=1200`. Dalam contoh ini, `access_token` berisi informasi sensitif Anda yang tidak boleh dibuat log. Perhatikan bahwa layanan Synthetics tidak menyimpan artefak canary run. Artefak seperti log, tangkapan layar, dan laporan semuanya disimpan dalam bucket Amazon S3 di akun pelanggan Anda.

Langkah pertama adalah mengatur konfigurasi Synthetics.

```
// Import Synthetics dependency
const synthetics = require('@aws/synthetics-puppeteer');

// Import Synthetics logger for logging url
const log = require('@aws/synthetics-logger');

// Get Synthetics configuration
const synConfig = synthetics.getConfiguration();

// Set restricted parameters
synConfig.setConfig({
   restrictedUrlParameters: ['access_token'];
});
// Import SyntheticsLogHelper dependency
const syntheticsLogHelper = require('@aws/synthetics-log-helper');

const sanitizedUrl = syntheticsLogHelper.getSanitizedUrl('{{URL}}');



const urlConfig = {
   restrictedUrlParameters = ['*']
};
const sanitizedUrl = syntheticsLogHelper.getSanitizedUrl('{{URL}}', urlConfig);
logger.info('My example url is: ' + sanitizedUrl);
```

Berikutnya, bersihkan dan log URL

```
// Import SyntheticsLogHelper dependency
const syntheticsLogHelper = require('@aws/synthetics-log-helper');

const sanitizedUrl = syntheticsLogHelper.getSanitizedUrl('https://example.com/learn/home?access_token=12345&token_type=Bearer&expires_in=1200');
```

Ini mencatat yang berikut ini di log canary Anda.

```
My example url is: https://example.com/learn/home?access_token=REDACTED&token_type=Bearer&expires_in=1200
```

Anda dapat mengganti konfigurasi Synthetics untuk URL dengan meneruskan parameter opsional yang berisi opsi konfigurasi Synthetics, seperti pada contoh berikut.

```
const urlConfig = {
   restrictedUrlParameters = ['*']
};
const sanitizedUrl = syntheticsLogHelper.getSanitizedUrl('https://example.com/learn/home?access_token=12345&token_type=Bearer&expires_in=1200', urlConfig);
logger.info('My example url is: ' + sanitizedUrl);
```

Contoh sebelumnya menyunting semua parameter kueri, dan dibuat log sebagai berikut:

```
My example url is: https://example.com/learn/home?access_token=REDACTED&token_type=REDACTED&expires_in=REDACTED
```

#### getSanitizedErrorPesan
<a name="CloudWatch_Synthetics_Library_getSanitizedErrorMessage"></a>

Fungsi ini tersedia di `syn-nodejs-puppeteer-3.2` dan nanti. Ia mengembalikan string kesalahan yang disanitasi dengan membersihkan setiap hadiah URLs berdasarkan konfigurasi Synthetics. Anda dapat memilih untuk mengganti konfigurasi Synthetics global ketika Anda memanggil fungsi ini dengan meneruskan parameter `stepConfig` opsional. 

 **Parameter ** 
+ {{error}}adalah kesalahan untuk membersihkan. Ini bisa berupa objek Kesalahan atau string.
+  {{stepConfig}}(Opsional) mengganti konfigurasi Synthetics global untuk fungsi ini. Jika `stepConfig` tidak diteruskan, konfigurasi global digunakan untuk membersihkan URL.

 **Contoh ** 

Contoh ini menggunakan kesalahan berikut: ` Failed to load url: https://example.com/learn/home?access_token=12345&token_type=Bearer&expires_in=1200`

Langkah pertama adalah mengatur konfigurasi Synthetics.

```
// Import Synthetics dependency
const synthetics = require('@aws/synthetics-puppeteer');

// Import Synthetics logger for logging url
const log = require('@aws/synthetics-logger');

// Get Synthetics configuration
const synConfig = synthetics.getConfiguration();

// Set restricted parameters
synConfig.setConfig({
   restrictedUrlParameters: ['access_token'];
});
```

Berikutnya, bersihkan dan buat log pesan kesalahan

```
// Import SyntheticsLogHelper dependency
const syntheticsLogHelper = require('@aws/synthetics-log-helper');

try {
   // Your code which can throw an error containing url which your script logs
} catch (error) {
    const sanitizedErrorMessage = syntheticsLogHelper.getSanitizedErrorMessage(errorMessage);
    logger.info(sanitizedErrorMessage);
}
```

Ini mencatat yang berikut ini di log canary Anda.

```
Failed to load url: https://example.com/learn/home?access_token=REDACTED&token_type=Bearer&expires_in=1200
```

#### getSanitizedHeaders(header, StepConfig = null)
<a name="CloudWatch_Synthetics_Library_getSanitizedHeaders"></a>

Fungsi ini tersedia di `syn-nodejs-puppeteer-3.2` dan nanti. Ini mengembalikan header yang dibersihkan berdasarkan properti `restrictedHeaders` dari ` syntheticsConfiguration`. Header yang ditentukan dalam `restrictedHeaders` properti disunting dari log, file HAR, dan laporan. 

 **Parameter ** 
+ {{headers}}adalah objek yang berisi header untuk membersihkan.
+ {{stepConfig}}(Opsional) mengganti konfigurasi Synthetics global untuk fungsi ini. Jika `stepConfig` tidak diteruskan, konfigurasi global digunakan untuk membersihkan header.

## Kelas dan fungsi pustaka Node.js yang hanya berlaku untuk canary UI
<a name="CloudWatch_Synthetics_Library_UIcanaries"></a>

Fungsi pustaka CloudWatch Synthetics berikut untuk Node.js hanya berguna untuk kenari UI.

**Topics**
+ [Kelas Synthetics](#CloudWatch_Synthetics_Library_Synthetics_Class)
+ [BrokenLinkCheckerReport kelas](#CloudWatch_Synthetics_Library_BrokenLinkCheckerReport)
+ [SyntheticsLink kelas](#CloudWatch_Synthetics_Library_SyntheticsLink)

### Kelas Synthetics
<a name="CloudWatch_Synthetics_Library_Synthetics_Class"></a>

Fungsi-fungsi berikut berada dalam kelas Synthetics.

**Topics**
+ [async addUserAgent (halaman, userAgentString);](#CloudWatch_Synthetics_Library_addUserAgent)
+ [async executeStep (StepName,, [StepConfig]); functionToExecute](#CloudWatch_Synthetics_Library_executeStep)
+ [getDefaultLaunchPilihan ();](#CloudWatch_Synthetics_Library_getDefaultLaunchOptions)
+ [getPage();](#CloudWatch_Synthetics_Library_getPage)
+ [getRequestResponseLogHelper();](#CloudWatch_Synthetics_Library_getRequestResponseLogHelper)
+ [launch(options)](#CloudWatch_Synthetics_Library_LaunchOptions)
+ [RequestResponseLogHelper kelas](#CloudWatch_Synthetics_Library_RequestResponseLogHelper)
+ [setRequestResponseLogHelper();](#CloudWatch_Synthetics_Library_setRequestResponseLogHelper)
+ [async takeScreenshot(name, suffix);](#CloudWatch_Synthetics_Library_takeScreenshot)

#### async addUserAgent (halaman, userAgentString);
<a name="CloudWatch_Synthetics_Library_addUserAgent"></a>

Fungsi ini ditambahkan {{userAgentString}} ke header user-agent halaman yang ditentukan.

Contoh:

```
await synthetics.addUserAgent(page, "MyApp-1.0");
```

Hasil di header pengguna-agen halaman yang diatur untuk `{{ browsers-user-agent-header-value}}MyApp-1.0`

#### async executeStep (StepName,, [StepConfig]); functionToExecute
<a name="CloudWatch_Synthetics_Library_executeStep"></a>

Menjalankan langkah yang disediakan, membungkusnya dengan start/pass/fail logging, start/pass/fail screenshots, and pass/fail dan metrik durasi.

**catatan**  
Jika Anda menggunakan runtime `syn-nodejs-2.1` atau runtime yang lebih baru, Anda dapat mengonfigurasi apakah dan kapan tangkapan layar diambil. Untuk informasi selengkapnya, lihat [SyntheticsConfiguration kelas](#CloudWatch_Synthetics_Library_SyntheticsConfiguration).

Fungsi `executeStep` juga melakukan hal berikut:
+ Membuat log bahwa langkah tersebut dimulai.
+ Mengambil tangkapan layar yang bernama `<stepName>-starting`.
+ Memulai pengatur waktu.
+ Menjalankan fungsi yang disediakan.
+ Jika fungsi kembali secara normal, ini dihitung sebagai lulus. Jika fungsi tersebut throw, maka ini dihitung sebagai gagal.
+ Mengakhiri pengatur waktu.
+ Mencatat log jika langkah berhasil atau gagal
+ Mengambil tangkapan layar yang bernama `<stepName>-succeeded` atau ` <stepName>-failed`.
+ Memancarkan metrik `stepName` `SuccessPercent`, 100 untuk lulus atau 0 untuk gagal.
+ Memancarkan metrik `stepName` `Duration`, dengan nilai didasarkan pada mulai melangkah dan waktu selesai.
+ Akhirnya, mengembalikan apa yang dikembalikan oleh `functionToExecute` atau melempar kembali apa yang dilempar oleh `functionToExecute`.

Jika canary menggunakan runtime `syn-nodejs-2.0` atau lebih baru, fungsi ini juga menambahkan ringkasan pelaksanaan langkah ke laporan canary. Ringkasan mencakup detail tentang setiap langkah, seperti waktu mulai, waktu akhir, status (LULUS/GAGAL), alasan kegagalan (jika gagal), dan tangkapan layar yang diambil selama pelaksanaan setiap langkah.

Contoh:

```
await synthetics.executeStep('navigateToUrl', async function (timeoutInMillis = 30000) {
           await page.goto(url, {waitUntil: ['load', 'networkidle0'], timeout: timeoutInMillis});});
```

Respons:

Mengembalikan apa yang `functionToExecute` kembalikan.

 **Pembaruan dengan syn-nodejs-2.2** 

Dimulai dengan`syn-nodejs-2.2`, Anda dapat secara opsional meneruskan konfigurasi langkah untuk mengganti konfigurasi CloudWatch Synthetics pada tingkat langkah. Untuk daftar opsi yang dapat Anda teruskan ke `executeStep`, silakan lihat [SyntheticsConfiguration kelas](#CloudWatch_Synthetics_Library_SyntheticsConfiguration).

Contoh berikut menimpa konfigurasi `false` default untuk ` continueOnStepFailure` hingga `true` dan menentukan kapan harus mengambil tangkapan layar.

```
var stepConfig = {
    'continueOnStepFailure': true,
    'screenshotOnStepStart': false,
    'screenshotOnStepSuccess': true,
    'screenshotOnStepFailure': false
}

await executeStep('Navigate to amazon', async function (timeoutInMillis = 30000) {
      await page.goto(url, {waitUntil: ['load', 'networkidle0'], timeout: timeoutInMillis});
 }, stepConfig);
```

#### getDefaultLaunchPilihan ();
<a name="CloudWatch_Synthetics_Library_getDefaultLaunchOptions"></a>

`getDefaultLaunchOptions()`Fungsi mengembalikan opsi peluncuran browser yang digunakan oleh CloudWatch Synthetics. Untuk informasi selengkapnya, silakan lihat [Jenis opsi peluncuran](https://pptr.dev/browsers-api/browsers.launchoptions/) 

```
// This function returns default launch options used by Synthetics.
const defaultOptions = await synthetics.getDefaultLaunchOptions();
```

#### getPage();
<a name="CloudWatch_Synthetics_Library_getPage"></a>

Mengembalikan halaman terbuka saat ini sebagai objek Puppeteer. Untuk informasi selengkapnya, silakan lihat [API Puppeteer v1.14.0](https://github.com/puppeteer/puppeteer/blob/v1.14.0/docs/api.md).

Contoh:

```
let page = await synthetics.getPage();
```

Respons:

Halaman (objek Puppeteer) yang saat ini terbuka di sesi browser saat ini.

#### getRequestResponseLogHelper();
<a name="CloudWatch_Synthetics_Library_getRequestResponseLogHelper"></a>

**penting**  
Pada canary yang menggunakan `syn-nodejs-puppeteer-3.2` runtime atau yang lebih baru, fungsi ini tidak digunakan lagi bersama dengan kelas `RequestResponseLogHelper`. Setiap penggunaan fungsi ini menyebabkan peringatan muncul di log canary Anda. Fungsi ini akan dihapus di versi runtime yang akan datang. Jika Anda menggunakan fungsi ini, gunakan [RequestResponseLogHelper kelas](#CloudWatch_Synthetics_Library_RequestResponseLogHelper) sebagai gantinya. 

Gunakan fungsi ini sebagai pola pembangun untuk mengubah bendera pembuatan log permintaan dan respons.

Contoh:

```
synthetics.setRequestResponseLogHelper(getRequestResponseLogHelper().withLogRequestHeaders(false));;
```

Respons:

```
{RequestResponseLogHelper}
```

#### launch(options)
<a name="CloudWatch_Synthetics_Library_LaunchOptions"></a>

Opsi untuk fungsi ini hanya tersedia di versi runtime `syn-nodejs-2.1` atau lebih baru.

Fungsi ini hanya digunakan untuk canary UI. Hal ini menutup browser yang sudah ada dan meluncurkan browser baru.

**catatan**  
CloudWatch Synthetics selalu meluncurkan browser sebelum mulai menjalankan skrip Anda. Anda tidak perlu memanggil launch() kecuali ingin meluncurkan browser baru dengan pilihan-pilihan kustom.

(options) adalah serangkaian pilihan yang dapat dikonfigurasi untuk diatur di browser. Untuk informasi selengkapnya, [Ketik opsi peluncuran](https://pptr.dev/browsers-api/browsers.launchoptions/).

Jika Anda memanggil fungsi ini tanpa opsi, Synthetics meluncurkan browser dengan argumen default, `executablePath`, dan `defaultViewport`. Tampilan default di CloudWatch Synthetics adalah 1920 x 1080.

Anda dapat mengganti parameter peluncuran yang digunakan oleh CloudWatch Synthetics dan meneruskan parameter tambahan saat meluncurkan browser. Misalnya, snippet kode berikut meluncurkan browser dengan argumen default dan jalur yang dapat dieksekusi secara default, tetapi dengan viewport berukuran 800 x 600.

```
await synthetics.launch({
        defaultViewport: { 
            "deviceScaleFactor": 1, 
            "width": 800,
            "height": 600 
    }});
```

Kode contoh berikut menambahkan `ignoreHTTPSErrors` parameter baru ke parameter peluncuran CloudWatch Synthetics:

```
await synthetics.launch({
        ignoreHTTPSErrors: true
 });
```

Anda dapat menonaktifkan keamanan web dengan menambahkan `--disable-web-security` flag ke args dalam parameter peluncuran CloudWatch Synthetics:

```
// This function adds the --disable-web-security flag to the launch parameters
const defaultOptions = await synthetics.getDefaultLaunchOptions();
const launchArgs = [...defaultOptions.args, '--disable-web-security'];
await synthetics.launch({
     args: launchArgs
  });
```

#### RequestResponseLogHelper kelas
<a name="CloudWatch_Synthetics_Library_RequestResponseLogHelper"></a>

**penting**  
Pada canary yang menggunakan runtime `syn-nodejs-puppeteer-3.2` atau yang lebih baru, kelas ini tidak digunakan lagi. Setiap penggunaan kelas ini menyebabkan peringatan muncul di log canary Anda. Fungsi ini akan dihapus di versi runtime yang akan datang. Jika Anda menggunakan fungsi ini, gunakan [RequestResponseLogHelper kelas](#CloudWatch_Synthetics_Library_RequestResponseLogHelper) sebagai gantinya.

Menangani konfigurasi halus dan pembuatan representasi string atas muatan permintaan dan respons. 

```
class RequestResponseLogHelper {
 
    constructor () {
        this.request = {url: true, resourceType: false, method: false, headers: false, postData: false};
        this.response = {status: true, statusText: true, url: true, remoteAddress: false, headers: false};
    }
 
    withLogRequestUrl(logRequestUrl);
    
    withLogRequestResourceType(logRequestResourceType);
    
    withLogRequestMethod(logRequestMethod);
    
    withLogRequestHeaders(logRequestHeaders);
    
    withLogRequestPostData(logRequestPostData);

        
    withLogResponseStatus(logResponseStatus);
    
    withLogResponseStatusText(logResponseStatusText);
   
    withLogResponseUrl(logResponseUrl);
 
    withLogResponseRemoteAddress(logResponseRemoteAddress);
    
    withLogResponseHeaders(logResponseHeaders);
```

Contoh:

```
synthetics.setRequestResponseLogHelper(getRequestResponseLogHelper()
.withLogRequestPostData(true)
.withLogRequestHeaders(true)
.withLogResponseHeaders(true));
```

Jawaban:

```
{RequestResponseLogHelper}
```

#### setRequestResponseLogHelper();
<a name="CloudWatch_Synthetics_Library_setRequestResponseLogHelper"></a>

**penting**  
Pada canary yang menggunakan `syn-nodejs-puppeteer-3.2` runtime atau yang lebih baru, fungsi ini tidak digunakan lagi bersama dengan kelas `RequestResponseLogHelper`. Setiap penggunaan fungsi ini menyebabkan peringatan muncul di log canary Anda. Fungsi ini akan dihapus di versi runtime yang akan datang. Jika Anda menggunakan fungsi ini, gunakan [RequestResponseLogHelper kelas](#CloudWatch_Synthetics_Library_RequestResponseLogHelper) sebagai gantinya. 

Gunakan fungsi ini sebagai pola pembangun untuk mengatur bendera pembuatan log permintaan dan respons.

Contoh:

```
synthetics.setRequestResponseLogHelper().withLogRequestHeaders(true).withLogResponseHeaders(true);
```

Respons:

```
{RequestResponseLogHelper}
```

#### async takeScreenshot(name, suffix);
<a name="CloudWatch_Synthetics_Library_takeScreenshot"></a>

Mengambil tangkapan layar (.PNG) halaman saat ini dengan nama dan akhiran (opsional).

Contoh:

```
await synthetics.takeScreenshot("navigateToUrl", "loaded")
```

Contoh ini menangkap dan mengunggah tangkapan layar yang dinamai ` 01-navigateToUrl-loaded.png` ke bucket S3 canary.

Anda dapat mengambil tangkapan layar untuk langkah canary tertentu dengan meneruskan ` stepName` sebagai parameter pertama. Tangkapan layar ditautkan ke langkah canary dalam laporan Anda, untuk membantu Anda melacak setiap langkah saat melakukan debug.

CloudWatch Synthetics canaries secara otomatis mengambil tangkapan layar sebelum memulai langkah (`executeStep`fungsi) dan setelah langkah selesai (kecuali jika Anda mengonfigurasi kenari untuk menonaktifkan tangkapan layar). Anda dapat mengambil lebih banyak tangkapan layar dengan meneruskan nama langkah di fungsi `takeScreenshot`.

Contoh berikut mengambil tangkapan layar dengan `signupForm` sebagai nilai dari `stepName`. Tangkapan layar akan dinamai ` 02-signupForm-address` dan akan ditautkan dengan langkah yang dinamai ` signupForm` dalam laporan canary.

```
await synthetics.takeScreenshot('signupForm', 'address')
```

### BrokenLinkCheckerReport kelas
<a name="CloudWatch_Synthetics_Library_BrokenLinkCheckerReport"></a>

Kelas ini menyediakan metode untuk menambahkan tautan synthetics. Dukungannya hanya pada canary yang menggunakan versi `syn-nodejs-2.0-beta` runtime atau lebih baru. 

Untuk menggunakan `BrokenLinkCheckerReport`, sertakan baris berikut dalam skrip:

```
const BrokenLinkCheckerReport = require('@aws/synthetics-broken-link-checker-report');
            
const brokenLinkCheckerReport = new BrokenLinkCheckerReport();
```

 Definisi fungsi yang berguna:

 **addLink ({{syntheticsLink}}, IsBroken)** 

` {{syntheticsLink}} ` adalah objek ` SyntheticsLink` yang mewakili suatu tautan. Fungsi ini menambahkan tautan sesuai dengan kode status. Secara bawaan, ini menganggap tautan rusak jika kode status tidak tersedia atau kode status 400 atau lebih tinggi. Anda dapat mengganti perilaku bawaan ini dengan memasukkan parameter `isBrokenLink` opsional dengan nilai `true` atau `false`.

Fungsi ini tidak memiliki nilai balik.

 **getLinks()** 

Fungsi ini mengembalikan susunan objek `SyntheticsLink` yang disertakan dalam laporan pemeriksa tautan yang rusak.

 **getTotalBrokenTautan ()** 

Fungsi ini mengembalikan angka yang mewakili total tautan yang rusak.

 **getTotalLinksDiperiksa ()** 

Fungsi ini mengembalikan angka yang mewakili total tautan yang disertakan dalam laporan.

 **Cara menggunakan BrokenLinkCheckerReport** 

Snippet kode skrip canary berikut menunjukkan contoh navigasi ke tautan dan menambahkannya ke laporan pemeriksa tautan yang rusak.

1. Impor `SyntheticsLink`, `BrokenLinkCheckerReport`, dan ` Synthetics`.

   ```
   const BrokenLinkCheckerReport = require('@aws/synthetics-broken-link-checker-report');
   const SyntheticsLink = require('@aws/synthetics-link');
   
   // Synthetics dependency
   const synthetics = require('@aws/synthetics-puppeteer');
   ```

1. Untuk menambahkan tautan ke laporan, buat instans ` BrokenLinkCheckerReport`.

   ```
   let brokenLinkCheckerReport = new BrokenLinkCheckerReport();
   ```

1. Navigasi ke URL dan tambahkan ke laporan pemeriksa tautan yang rusak.

   ```
   let url = "https://amazon.com";
   
   let syntheticsLink = new SyntheticsLink(url);
   
   // Navigate to the url.
   let page = await synthetics.getPage();
   
   // Create a new instance of Synthetics Link
   let link = new SyntheticsLink(url)
   
   try {
       const response = await page.goto(url, {waitUntil: 'domcontentloaded', timeout: 30000});
   } catch (ex) {
       // Add failure reason if navigation fails.
       link.withFailureReason(ex);
   }
   
   if (response) {
       // Capture screenshot of destination page
       let screenshotResult = await synthetics.takeScreenshot('amazon-home', 'loaded');
      
       // Add screenshot result to synthetics link
       link.addScreenshotResult(screenshotResult);
   
       // Add status code and status description to the link
       link.withStatusCode(response.status()).withStatusText(response.statusText())
   }
   
   // Add link to broken link checker report.
   brokenLinkCheckerReport.addLink(link);
   ```

1. Tambahkan laporan ke Synthetics. Hal ini membuat file JSON yang diberi nama ` BrokenLinkCheckerReport.json` dalam bucket S3 Anda untuk setiap operasi canary. Anda dapat melihat laporan tautan di konsol untuk setiap operasi canary berikut tangkapan layar, log, dan file HAR.

   ```
   await synthetics.addReport(brokenLinkCheckerReport);
   ```

### SyntheticsLink kelas
<a name="CloudWatch_Synthetics_Library_SyntheticsLink"></a>

Kelas ini menyediakan metode untuk merangkum informasi. Dukungannya hanya pada canary yang menggunakan versi `syn-nodejs-2.0-beta` runtime atau lebih baru. 

Untuk menggunakan `SyntheticsLink`, sertakan baris berikut dalam skrip:

```
const SyntheticsLink = require('@aws/synthetics-link');

const syntheticsLink = new SyntheticsLink("https://www.amazon.com");
```

Fungsi ini mengembalikan `syntheticsLink{{Object}}`

Definisi fungsi yang berguna:

 **denganURL () {{url}}** 

` {{url}} ` adalah sebuah string URL. Fungsi ini mengembalikan `syntheticsLink{{Object}}`

 **withText () {{text}}** 

` {{text}} ` adalah sebuah string yang mewakili teks jangkar. Fungsi ini mengembalikan `syntheticsLink{{Object}}`. Ini menambahkan teks jangkar yang sesuai dengan tautan.

 **withParentUrl({{parentUrl}})** 

` {{parentUrl}} ` adalah sebuah string yang mewakili URL induk (halaman sumber). Fungsi ini mengembalikan `syntheticsLink{{ Object}}`

 **withStatusCode({{statusCode}})** 

` {{statusCode}} ` adalah sebuah string yang mewakili kode status. Fungsi ini mengembalikan `syntheticsLink{{Object}}`

 **withFailureReason({{failureReason}})** 

` {{failureReason}} ` adalah sebuah string yang mewakili alasan kegagalan. Fungsi ini mengembalikan `syntheticsLink{{ Object}}`

 **addScreenshotResult({{screenshotResult}})** 

` {{screenshotResult}} ` adalah sebuah objek. Ini adalah instans `ScreenshotResult` yang dikembalikan oleh fungsi Synthetics `takeScreenshot`. Objek tersebut meliputi hal berikut:
+ `fileName`— Sebuah string yang mewakili ` screenshotFileName`
+ `pageUrl` (opsional)
+ `error` (opsional)

## Kelas dan fungsi pustaka Node.js yang hanya berlaku untuk canary API
<a name="CloudWatch_Synthetics_Library_APIcanaries"></a>

Fungsi pustaka CloudWatch Synthetics berikut untuk Node.js hanya berguna untuk kenari API.

**Topics**
+ [executeHttpStep(StepName, requestOptions, [callback], [stepConfig])](#CloudWatch_Synthetics_Library_executeHttpStep)

### executeHttpStep(StepName, requestOptions, [callback], [stepConfig])
<a name="CloudWatch_Synthetics_Library_executeHttpStep"></a>

Mengeksekusi permintaan HTTP yang disediakan sebagai langkah, dan menerbitkan `SuccessPercent` (lulus/gagal) dan metrik `Duration`.

**executeHttpStep**menggunakan fungsi asli HTTP atau HTTPS di bawah tenda, tergantung pada protokol yang ditentukan dalam permintaan.

Fungsi ini juga menambahkan ringkasan pelaksanaan langkah ke laporan canary. Ringkasan mencakup detail tentang setiap permintaan HTTP, seperti berikut ini:
+ Waktu mulai
+ Waktu akhir
+ Status (LULUS/GAGAL)
+ Alasan kegagalan, jika gagal
+ Detail panggilan HTTP seperti request/response header, body, kode status, pesan status, dan timing kinerja. 

**Topics**
+ [Parameter](#CloudWatch_Synthetics_Library_executeHttpStep_parameters)
+ [Contoh penggunaan executeHttpStep](#CloudWatch_Synthetics_Library_executeHttpStep_examples)

#### Parameter
<a name="CloudWatch_Synthetics_Library_executeHttpStep_parameters"></a>

 **StepName () {{String}}** 

Menentukan nama dari langkah tersebut. Nama ini juga digunakan untuk menerbitkan CloudWatch metrik untuk langkah ini.

 **requestOptions () {{Object or String}}** 

Nilai parameter ini dapat berupa URL, string URL, atau sebuah objek. Jika itu adalah objek, maka itu harus berupa serangkaian opsi yang dapat dikonfigurasi untuk membuat permintaan HTTP. Ini mendukung semua opsi di [http.request(options[, callback])](https://nodejs.org/api/http.html#http_http_request_options_callback) dalam dokumentasi Node.js.

Selain opsi Node.js ini, **requestOptions** mendukung parameter tambahan `body`. Anda dapat menggunakan parameter `body` untuk meneruskan data sebagai bodi permintaan.

 **panggilan balik () {{response}}** 

(Opsional) Ini adalah fungsi pengguna yang diinvokasi dengan respons HTTP. Responsnya adalah dari tipe [Class: http. IncomingMessage](https://nodejs.org/api/http.html#http_class_http_incomingmessage).

 **StepConfig () {{object}}** 

(Opsional) Gunakan parameter ini untuk mengganti konfigurasi synthetics global dengan konfigurasi yang berbeda untuk langkah ini.

#### Contoh penggunaan executeHttpStep
<a name="CloudWatch_Synthetics_Library_executeHttpStep_examples"></a>

Rangkaian contoh berikut membangun satu sama lain untuk menggambarkan berbagai penggunaan opsi ini.

Contoh pertama ini mengonfigurasi parameter permintaan. Anda dapat meneruskan URL sebagai **requestOptions**:

```
let requestOptions = 'https://www.amazon.com';
```

Atau Anda dapat meneruskan satu set opsi:

```
let requestOptions = {
        'hostname': 'myproductsEndpoint.com',
        'method': 'GET',
        'path': '/test/product/validProductName',
        'port': 443,
        'protocol': 'https:'
    };
```

Contoh berikutnya menciptakan fungsi callback yang menerima respons. Secara default, jika Anda tidak menentukan **callback**, CloudWatch Synthetics memvalidasi bahwa statusnya antara 200 dan 299 inklusif.

```
// Handle validation for positive scenario
    const callback = async function(res) {
        return new Promise((resolve, reject) => {
            if (res.statusCode < 200 || res.statusCode > 299) {
                throw res.statusCode + ' ' + res.statusMessage;
            }
     
            let responseBody = '';
            res.on('data', (d) => {
                responseBody += d;
            });
     
            res.on('end', () => {
                // Add validation on 'responseBody' here if required. For ex, your status code is 200 but data might be empty
                resolve();
            });
        });
    };
```

Contoh berikutnya membuat konfigurasi untuk langkah ini yang mengesampingkan konfigurasi Synthetics global CloudWatch . Konfigurasi langkah dalam contoh ini memungkinkan header permintaan, header respons, bodi permintaan (data posting), dan bodi respons dalam laporan Anda dan membatasi nilai header 'X-Amz-Security-Token' dan 'Authorization'. Secara bawaan, nilai-nilai ini tidak termasuk dalam laporan untuk alasan keamanan. Jika Anda memilih untuk memasukkannya, data hanya disimpan dalam bucket S3 Anda.

```
// By default headers, post data, and response body are not included in the report for security reasons. 
// Change the configuration at global level or add as step configuration for individual steps
let stepConfig = {
    includeRequestHeaders: true, 
    includeResponseHeaders: true,
    restrictedHeaders: ['X-Amz-Security-Token', 'Authorization'], // Restricted header values do not appear in report generated.
    includeRequestBody: true,
    includeResponseBody: true
};
```

Contoh terakhir ini meneruskan permintaan Anda ke **executeHttpStep**dan memberi nama langkahnya.

```
await synthetics.executeHttpStep('Verify GET products API', requestOptions, callback, stepConfig);
```

**Dengan kumpulan contoh ini, CloudWatch Synthetics menambahkan detail dari setiap langkah dalam laporan Anda dan menghasilkan metrik untuk setiap langkah menggunakan StepName.**

 Anda akan melihat metrik `successPercent` dan `duration` untuk langkah `Verify GET products API`. Anda dapat memantau performa API Anda dengan memantau metrik untuk langkah panggilan API Anda. 

Untuk sampel skrip lengkap yang menggunakan fungsi-fungsi ini, silakan lihat [Canary API multi-langkah](CloudWatch_Synthetics_Canaries_Samples.md#CloudWatch_Synthetics_Canaries_Samples_APIsteps).