编写 Python Canary 脚本 - Amazon CloudWatch
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

编写 Python Canary 脚本

此脚本将成功通过一次运行,并返回一个字符串。要查看失败的 Canary 是什么样子,请更改 fail = False to 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()

如果您有多个 .py 文件,或者您的脚本具有依赖项,则可以将它们打包到单个 ZIP 文件中。ZIP 文件必须在python文件夹中包含您的主 Canary .py 文件,例如 python/my_canary_filename.py。此 ZIP 文件应包含所有必需的文件夹和文件,但其他文件不需要位于 python 文件夹中。

请务必将 Canary 的脚本入口点设置为 my_canary_filename.handler ,以匹配脚本入口点的文件名。

更改现有 Selenium 脚本以使用 Synthetics Canary

您可以快速修改现有脚本,以便将 Python 和 Selenium 用作 Canary。有关 Selenium 的更多信息,请参阅 www.selenium.dev/

在本示例中,我们将从以下 Selenium 脚本开始:

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

转换步骤如下所示。

将 Selenium 脚本转换为用作 Canary

  1. 更改 import 语句以使用 aws_synthetics 模块中的 Selenium:

    from aws_synthetics.selenium import synthetics_webdriver as webdriver

    中的 Selenium 模块aws_synthetics可确保 Canary 可以发出指标和日志、生成 HAR 文件以及使用其他 CloudWatch Synthetics 功能。

  2. 创建处理程序函数并调用 Selenium 方法。处理程序是脚本的入口点函数。

    def handler(event, context): basic_selenium_script()

脚本现已更新为 CloudWatch Synthetics Canary。更新的脚本如下:

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()