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

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

使用 Canary 蓝图

本节提供有关每种 Canary 蓝图的详细信息以及每种蓝图最适合的任务。为以下 Canary 类型提供了蓝图:

  • 检测信号显示器

  • API Canary

  • 失效链接检查器

  • Canary Recorder

  • GUI 工作流程

当您使用蓝图创建 Canary 时,在CloudWatch控制台中填写字段时,页面的 Script editor (脚本编辑器) 区域会将您正在创建的 Canary 显示为 Node.js 脚本。您还可以在此区域编辑 Canary 以进一步定制。

检测信号监控

检测信号脚本加载指定的 URL 并存储页面的屏幕截图和 HTTP 存档文件(HAR 文件)。它们还存储访问的 的日志URLs。

您可以使用 HAR 文件查看有关网页性能的详细数据。您可以分析 Web 请求列表并捕获性能问题,例如某个项的加载时间。

API Canary

API Canary 可以测试 REST API 的基本读写函数。REST 表示表示状态转移,是开发人员在创建 API 时遵循的一组规则。其中一条规则规定,指向特定 URL 的链接应返回一段数据。

Canary 可与任何 配合使用APIs并测试所有类型的功能。每个 Canary 可以进行多个 API 调用。

在使用运行时版本 syn-nodejs-2.2 或更高版本的 Canary 中,API Canary 蓝图支持作为 APIs HTTP 步骤监控您的 的多步骤 Canary。您可以在单个 Canary APIs 中测试多个 。每个步骤都是一个单独的请求,可以访问不同的 URL,使用不同的标头,并对是否捕获标头和响应正文使用不同的规则。如果不捕获标头和响应正文,您可以防止记录敏感数据。

API Canary 中的每个请求都包含以下信息:

  • 终端节点,即您请求的 URL。

  • 方法,这是发送到服务器的请求的类型。REST APIs 支持 GET(读取)、POST(写入)、PUT(更新)、PATCH(更新)和 DELETE(删除)操作。

  • 标头,用于向客户端和服务器提供信息。它们用于身份验证和提供有关正文内容的信息。有关有效标头的列表,请参阅 HTTP 标头。

  • 数据(或正文)包含要发送到服务器的信息。这仅用于 POST、PUT、PATCH 或 DELETE 请求。

  • 您请求的 URL。

API Canary 蓝图支持 GET 和 POST 方法。使用此蓝图时,您必须指定标头。例如,您可以将 Authorization 指定为,并将必要的授权数据指定为该键的值

如果您要测试 POST 请求,还可以在 Data (数据) 字段中指定要发布的内容。

与 集成 API 网关

API 蓝图与 集成Amazon API Gateway。这使您能够从与 Canary 相同的API 网关账户和区域中选择 AWS API 和阶段,或者从 上传 Swagger 模板API 网关以进行跨账户和跨区域 API 监控。然后,您可以在 控制台中选择其余详细信息以创建 Canary,而不是从头开始输入它们。有关 API 网关 的更多信息,请参阅什么是 Amazon API Gateway?

无效链接检查器使用 document.getElementsByTagName('a'),收集您正在测试的 URL 中的所有链接。它仅测试指定数量的链接,URL 本身计为第一个链接。例如,如果要检查包含五个链接的页面上的所有链接,则必须指定 Canary 跟踪六个链接。

使用syn-nodejs-2.0-beta运行时或更高版本创建的链接检查程序 Canary 中断支持以下附加功能:

  • 提供报告,其中包括已检查的链接、状态代码、失败原因(如果有)以及源和目标页面屏幕截图。

  • 查看 Canary 结果时,您可以进行筛选以仅查看失效的链接,然后根据失败原因修复链接。

  • 此版本捕获每个链接的注释源页面屏幕截图,并突出显示找到链接的锚点。隐藏的组件没有注释。

  • 您可以将此版本配置为捕获源和目标页面(或仅源页面,或仅目标页面)的屏幕截图。

  • 此版本修复了早期版本中的一个问题,即,Canary 脚本在第一个失效链接后停止,即使第一页中抓取了更多链接也是如此。

如果要更新使用 的现有 Canary syn-1.0 以使用新运行时,您必须删除并重新创建 Canary。只是将现有 Canary 更新为新运行时不会使这些功能可用。

失效的链接检查程序 Canary 检测到以下类型的链接错误:

  • 404 未找到页面

  • 主机名无效

  • 错误的 URL。例如,URL 缺少括号,包含多余的斜杠,或者协议错误。

  • 无效的 HTTP 响应代码

  • 主机服务器返回没有内容和没有响应代码的空响应。

  • HTTP 请求在 Canary 运行期间持续超时。

  • 主机持续丢弃连接,因为它配置错误或太忙。

Canary 记录器

借助 Canary 记录器蓝图,您可以使用 CloudWatch Synthetics Recorder 在网站上记录您的单击和键入操作,并自动生成 Node.js 脚本,该脚本可用于创建遵循相同步骤的 Canary。CloudWatch Synthetics Recorder 是由 Amazon 提供的 Google Chrome 扩展。

积分:CloudWatchSynthetics 记录器基于无管控记录器

有关更多信息,请参阅使用适用于 Google Chrome 的 CloudWatch Synthetics 记录器.

GUI 工作流程生成器

GUI 工作流生成器蓝图验证是否可以在您的网页上执行操作。例如,如果您有一个带有登录表单的网页,则 Canary 可以填充用户和密码字段并提交表单以验证该网页是否正常工作。

当您使用蓝图创建此类型的 Canary 时,您可以指定您希望 Canary 在网页上执行的操作。您可以使用的操作如下:

  • 单击— 选择您要指定的元素,然后模拟用户单击或选择该元素的行为。

    要在 Node.js 脚本中指定 元素,请使用 [id=]a[class=]

    要在 Python 脚本中指定 元素,请使用 xpath //*[@id=]//*[@class=]

  • 验证选择器— 验证网页上是否存在指定的元素。此测试对于验证之前的操作是否导致使用正确的元素填充页面非常有用。

    要在 Node.js 脚本中指定要验证的元素,请使用 [id=]a[class=]

    要在 Python 脚本中指定要验证的元素,请使用 xpath //*[@id=]//*[class=]

  • 验证文本 — 验证指定的字符串是否包含在目标元素中。此测试对于验证之前的操作是否导致显示正确的文本非常有用。

    要在 Node.js 脚本中指定 元素,请使用类似于 的格式div[@id=]//h1,因为此操作使用 Puppeteer 中的 waitForXPath 函数。

    要在 Python 脚本中指定 元素,请使用 xpath 格式,例如 //*[@id=] 或 //*[@class=],因为此操作使用 Selenium 中的 implicitly_wait 函数。

  • 输入文本 — 在目标元素中写入指定的文本。

    要在 Node.js 脚本中指定要验证的元素,请使用 [id=]a[class=]

    要在 Python 脚本中指定要验证的元素,请使用 xpath //*[@id=]//*[@class=]

  • 单击并导航 — 在选择指定的元素之后,等待整个页面加载。当您需要重新加载页面时,这非常有用。

    要在 Node.js 脚本中指定 元素,请使用 [id=]a[class=]

    要在 Python 脚本中指定 元素,请使用 xpath //*[@id=]//*[@class=]

例如,以下蓝图使用 Node.js。它单击指定 URL firstButton 上的 ,验证显示具有预期文本的预期选择器Test_Customer,将名称输入到 Name (名称) 字段中,单击 Login (登录) 按钮,然后通过检查下一页上的 Welcome text (欢迎文本) 来验证登录是否成功。


              控制台中的创建 Canary 页面,其中填充了 GUI 工作流蓝图的字段。

使用以下运行时的 GUI 工作流程 Canary 还提供了为每个 Canary 运行执行的步骤摘要。您可以使用与每个步骤关联的屏幕截图和错误消息来查找失败的根本原因。

  • syn-nodejs-2.0 或更高版本

  • syn-python-selenium-1.0 或更高版本