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

编写 Python 金丝雀脚本

此脚本将成功通过一次运行,并返回一个字符串。要查看失败的金丝雀示例,请将 fail = False 更改为 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()

将 Python 金丝雀文件打包

如果您有多个 .py 文件或脚本具有依赖项,则您可以将它们捆绑到单个 ZIP 格式文件中。如果您使用 syn-python-selenium-1.1 运行时,此 ZIP 格式文件必须将主金丝雀 .py 文件包含在 python 文件夹中,例如 python/my_canary_filename.py。如果您使用 syn-python-selenium-1.1 或之后版本,您可以选择使用其他文件夹,例如 python/myFolder/my_canary_filename.py

此 ZIP 格式文件应包含所有必要的文件夹和文件,但其他文件不需要位于 python 文件夹中。

请务必将您的金丝雀脚本入口点设置为 my_canary_filename.functionName,以匹配脚本入口点的文件名和函数名称。如果您使用 syn-python-selenium-1.0 运行时,则 functionName 必须是 handler。如果您使用 syn-python-selenium-1.1 或之后版本,该处理程序名称限制不适用,您也可以选择将金丝雀存储在单独的文件夹中,例如 python/myFolder/my_canary_filename.py。如果将其存储在单独的文件夹中,请在脚本入口点中指定该路径,例如 myFolder/my_canary_filename.functionName

更改现有 Puppeteer 脚本以使用 Synthetics 金丝雀

您可以快速修改用于 Python 和 Selenium 的现有脚本以用作金丝雀。有关 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 脚本以用作金丝雀
  1. 更改 import 语句以使用 aws_synthetics 模块中的 Selenium:

    from aws_synthetics.selenium import synthetics_webdriver as webdriver

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

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

    如果您使用 syn-python-selenium-1.0,处理程序函数必须命名为 handler。如果您使用 syn-python-selenium-1.1 或之后版本,函数可以有任何名称,但必须与脚本中使用的名称相同。此外,如果您使用 syn-python-selenium-1.1 或之后版本,您可以将脚本存储在任何文件夹下,并将该文件夹指定为处理程序名称的一部分。

    def handler(event, context): basic_selenium_script()

脚本现已更新为 CloudWatch Synthetics 金丝雀。更新的脚本如下:

webdriverSyntheticsWebDriver 类的实例,而由 webdriver.Chrome() 返回的浏览器则是 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()

更改现有的 Puppeteer Synthetics 脚本以验证非标准证书

Synthetics Canary 的一个重要用例是让您监测自己的端点。如果您想监测尚未准备好接收外部流量的端点,这种监测有时可能意味着您尚未拥有由可信的第三方证书颁发机构签署的正确证书。

对于这种情况,有如下两种可能的解决方案:

使用 CloudWatch Synthetics Canary 时,您的选择并不局限于以上两种。您可以通过扩展 Canary 代码来扩展这些功能并添加业务逻辑。

注意

在 Python 运行时上运行的 Synthetics Canary 本身就启用了 --ignore-certificate-errors 标志,因此这些 Canary 在访问具有非标准证书配置的网站时,不应出现任何问题。