

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

# Menulis skrip canary Python
<a name="CloudWatch_Synthetics_Canaries_WritingCanary_Python"></a>

Skrip ini berhasil dijalani, dan mengembalikan rangkaian. Untuk melihat bentuk canary yang gagal, ubah fail = False ke fail = True

```
def basic_custom_script():
    # Insert your code here
    # Perform multi-step pass/fail check
    # Log decisions made and results to /tmp
    # Be sure to wait for all your code paths to complete 
    # before returning control back to Synthetics.
    # In that way, your canary will not finish and report success
    # before your code has finished executing
    fail = False
    if fail:
        raise Exception("Failed basicCanary check.")
    return "Successfully completed basicCanary checks."
def handler(event, context):
    return basic_custom_script()
```

## Mengemas file kenari Python Anda
<a name="CloudWatch_Synthetics_Canaries_WritingCanary_Python_package"></a>

Jika Anda memiliki lebih dari satu file .py atau skrip Anda memiliki dependensi, Anda dapat menggabungkan file itu semua ke dalam sebuah paket file ZIP tunggal. Jika Anda menggunakan runtime `syn-python-selenium-1.1`, file ZIP harus berisi file .py canary utama Anda di dalam folder `python`, seperti `python/my_canary_filename.py`. Jika Anda menggunakan ` syn-python-selenium-1.1` atau yang lebih baru, Anda dapat menggunakan folder yang berbeda secara opsional, seperti `python/myFolder/my_canary_filename.py`.

File ZIP ini harus memuat semua folder dan file yang diperlukan, tetapi file lain tidak perlu berada dalam folder `python`.

Pastikan untuk mengatur titik masuk skrip canary Anda agar ` my_canary_filename.functionName` cocok dengan nama file dan nama fungsi dari titik masuk skrip Anda. Jika Anda menggunakan runtime `syn-python-selenium-1.0`, `functionName` harus `handler`. Jika Anda menggunakan ` syn-python-selenium-1.1` atau yang lebih baru, pembatasan nama handler ini tidak berlaku, dan Anda juga dapat secara opsional menyimpan canary di folder terpisah seperti ` python/myFolder/my_canary_filename.py`. Jika Anda menyimpannya di folder terpisah, tentukan jalur itu di titik entri skrip Anda, seperti ` myFolder/my_canary_filename.functionName`. 

## Mengubah skrip Selenium yang sudah ada untuk menggunakan canary Synthetics
<a name="CloudWatch_Synthetics_Canaries_WritingCanary_Python_Selenium"></a>

Anda dapat dengan cepat memodifikasi skrip yang ada untuk Python dan Selenium untuk digunakan sebagai canary. Untuk informasi lebih lanjut tentang Selenium, lihat [www.selenium.dev/](https://www.selenium.dev/).

Untuk contoh ini, kita akan mulai dengan skrip Selenium berikut:

```
from selenium import webdriver

def basic_selenium_script():
    browser = webdriver.Chrome()
    browser.get('https://example.com')
    browser.save_screenshot('loaded.png')

basic_selenium_script()
```

Langkah konversinya adalah sebagai berikut.

**Untuk mengkonversi skrip Selenium yang akan digunakan sebagai canary**

1. Ubah pernyataan `import` untuk menggunakan Selenium dari modul ` aws_synthetics`:

   ```
   from aws_synthetics.selenium import synthetics_webdriver as webdriver
   ```

   Modul Selenium dari `aws_synthetics` memastikan bahwa kenari dapat memancarkan metrik dan log, menghasilkan file HAR, dan bekerja dengan fitur Synthetics lainnya. CloudWatch 

1. Buat fungsi handler dan panggil metode Selenium Anda. Penanggung jawab adalah fungsi titik masuk untuk skrip.

   Jika Anda menggunakan `syn-python-selenium-1.0`, fungsi handler harus diberi nama `handler`. Jika Anda menggunakan `syn-python-selenium-1.1` atau lebih baru, fungsi tersebut dapat memiliki nama apa pun, tetapi harus nama yang sama yang digunakan dalam skrip. Juga, jika Anda menggunakan `syn-python-selenium-1.1` atau yang lebih baru, Anda akan dapat menyimpan skrip Anda di bawah folder apa pun dan menentukan folder itu sebagai bagian dari nama handler.

   ```
   def handler(event, context):
       basic_selenium_script()
   ```

Skrip sekarang diperbarui menjadi kenari CloudWatch Synthetics. Berikut adalah skrip yang diperbarui:

`webdriver`Ini adalah contoh dari kelas [ SyntheticsWebDriver](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_Library_Python.html#CloudWatch_Synthetics_Library_Python_SyntheticsWebDriver)dan browser yang dikembalikan oleh `webdriver.Chrome()` adalah instance dari [ SyntheticsBrowser](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_Library_Python.html#CloudWatch_Synthetics_Library_Python_SyntheticsBrowser).

```
from aws_synthetics.selenium import synthetics_webdriver as webdriver

def basic_selenium_script():
    browser = webdriver.Chrome()
    browser.get('https://example.com')
    browser.save_screenshot('loaded.png')

def handler(event, context):
    basic_selenium_script()
```

## Mengubah skrip Puppeteer Synthetics yang ada untuk mengautentikasi sertifikat non-standar
<a name="Canaries_Non-Standard_Certificates"></a>

Salah satu kasus penggunaan penting untuk kenari Synthetics adalah bagi Anda untuk memantau titik akhir Anda sendiri. Jika Anda ingin memantau titik akhir yang tidak siap untuk lalu lintas eksternal, pemantauan ini terkadang dapat berarti bahwa Anda tidak memiliki sertifikat yang tepat yang ditandatangani oleh otoritas sertifikat pihak ketiga tepercaya.

Dua solusi yang mungkin untuk skenario ini adalah sebagai berikut:
+ Untuk mengautentikasi sertifikat klien, lihat [Cara memvalidasi autentikasi menggunakan Amazon CloudWatch Synthetics](https://aws.amazon.com/blogs/mt/how-to-validate-authentication-using-amazon-cloudwatch-synthetics-part-2/) — Bagian 2.
+ Untuk mengautentikasi sertifikat yang ditandatangani sendiri, lihat [Cara memvalidasi autentikasi dengan sertifikat yang ditandatangani](https://aws.amazon.com/blogs/mt/how-to-validate-authentication-with-self-signed-certificates-in-amazon-cloudwatch-synthetics/) sendiri di Amazon Synthetics CloudWatch

Anda tidak terbatas pada dua opsi ini ketika Anda menggunakan kenari CloudWatch Synthetics. Anda dapat memperluas fitur-fitur ini dan menambahkan logika bisnis Anda dengan memperluas kode canary.

**catatan**  
Synthetics canary yang berjalan pada runtime Python secara bawaan mengaktifkan ` --ignore-certificate-errors` flag, jadi kenari tersebut seharusnya tidak memiliki masalah dalam menjangkau situs dengan konfigurasi sertifikat non-standar.