可用于 Node.js 金丝雀脚本的库函数 - Amazon CloudWatch
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

可用于 Node.js 金丝雀脚本的库函数

本节列出了可用于 Node.js 金丝雀脚本的库函数。

适用于所有金丝雀的 Node.js 库类和函数

以下 CloudWatch Synthetics 库函数适用于所有 Canary。Node.js

Synthetics class

以下所有金丝雀的函数都在 Synthetics 类中。

添加错误(错 errorMessage,ex);

errorMessage描述错误,ex是遇到的异常

您可以使用addExecutionError来设置你的金丝雀的执行错误。它在不中断脚本执行的情况下使金丝雀失败。它也不会影响successPercent指标。

只有当错误对于指示金丝雀脚本的成功或失败并不重要时,才应将错误作为执行错误进行跟踪。

使用的一个示例addExecutionError如下所示。您正在监控终端节点的可用性,并在页面加载后截取屏幕截图。由于截取屏幕截图失败并不决定终端节点的可用性,因此您可以捕获截图时遇到的任何错误,并将其添加为执行错误。您的可用性指标仍将指示终端节点已启动并正在运行,但您的 Canary 状态将被标记为失败。以下示例代码块捕获这样的错误并将其添加为执行错误。

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

获取名称 ();

返回 Canary 的名称。

时间版本 ();

此函数在运行时版本中可用syn-nodejs-puppeteer-3.0和更高版本. 它返回金丝雀的 Synthetics 运行时版本。例如,返回值可能为syn-nodejs-puppeteer-3.0

getLogLevel();

检索 Synthetics 库的当前日志级别。可能的值包括:

  • 0— 调试调试

  • 1— 信息性消息

  • 2— 警告

  • 3— 错误

例如:

let logLevel = synthetics.getLogLevel();

setLogLevel();

设置 Synthetics 库的日志级别。可能的值包括:

  • 0— 调试调试

  • 1— 信息性消息

  • 2— 警告

  • 3— 错误

例如:

synthetics.setLogLevel(0);

Synthetics 配置类

仅在syn-nodejs-2.1运行时版本为或更高版本。

您可以使用 “Synthetics 配置” 类来配置 “合成” 库函数的行为。例如,您可以使用此类配置executeStep()函数来捕获屏幕截图。

您可以在全球级别设置 CloudWatch Synthetics 配置,这些配置应用于金丝雀的所有步骤。您还可以通过传递配置键/值对在步骤级别覆盖这些配置。

您可以在步骤级别传入选项。有关示例,请参阅。异步 executeStep(stepName 称,functionToExecute,[步骤配置]);执行 HttpStep(stepName 称、请求选项、[回调]、[步骤配置])

函数定义:

设置配置(选项)

options是一个对象,它是一组适用于您的金丝雀的可配置选项。以下各部分将介绍options

所有金丝雀的设置配置(选项)

对于金丝雀使用syn-nodejs-pupeteer-3.1或更高版本,(选项)对于 来说为设置配置可以包含以下布尔参数,这些参数确定了金丝雀发布的指标。这些选项中每个选项的默认值为true。开头的选项aggregated确定是否在没有CanaryName维度。您可以使用这些指标查看所有金丝雀的聚合结果。其他选项确定该指标是否使用CanaryName维度。您可以使用这些指标查看每个金丝雀的结果。

有关金丝雀发出的 CloudWatch 指标的列表,请参阅金丝雀发布的 CloudWatch 指标

  • failedCanaryMetric(布尔值)-是否发出Failed衡量指标(使用CanaryName此 Canary 的维度)。默认为 true

  • failedRequestsMetric(布尔值)-是否发出Failed requests衡量指标(使用CanaryName此 Canary 的维度)。默认为 true

  • _2xxMetric(布尔值)-是否发出2xx衡量指标(使用CanaryName此 Canary 的维度)。默认为 true

  • _4xxMetric(布尔值)-是否发出4xx衡量指标(使用CanaryName此 Canary 的维度)。默认为 true

  • _5xxMetric(布尔值)-是否发出5xx衡量指标(使用CanaryName此 Canary 的维度)。默认为 true

  • stepDurationMetric(布尔值)-是否发出Step duration衡量指标(使用CanaryName StepName此 Canary 的尺寸)。默认为 true

  • stepSuccessMetric(布尔值)-是否发出Step success衡量指标(使用CanaryName StepName此 Canary 的尺寸)。默认为 true

  • aggregatedFailedCanaryMetric(布尔值)-是否发出Failed量度(不带CanaryName此 Canary 的维度)。默认为 true

  • aggregatedFailedRequestsMetric(布尔值)-是否发出Failed Requests量度(不带CanaryName此 Canary 的维度)。默认为 true

  • aggregated2xxMetric(布尔值)-是否发出2xx量度(不带CanaryName此 Canary 的维度)。默认为 true

  • aggregated4xxMetric(布尔值)-是否发出4xx量度(不带CanaryName此 Canary 的维度)。默认为 true

  • aggregated5xxMetric(布尔值)-是否发出5xx量度(不带CanaryName此 Canary 的维度)。默认为 true

注意

这些区域有:DurationSuccessPercent指标始终针对每个金丝雀发出,无论是带有还是不带CanaryName指标。

启用或禁用指标的方法

禁用聚合请求度量 ()

禁用金丝雀发出没有发出的所有请求量度CanaryName维度。

禁用请求度量 ()

禁用所有请求量度,包括每金丝雀指标和跨所有金丝雀聚合的指标。

启用聚合请求度量 ()

使金丝雀能够发出没有发出的所有请求量度CanaryName维度。

启用请求度量 ()

启用所有请求指标,包括每金丝雀指标和跨所有金丝雀聚合的指标。

获取二次公制 ()

返回 Canary 是否在2xx指标CanaryName维度。

获得 4x 公制 ()

返回 Canary 是否在4xx指标CanaryName维度。

获得 5 个公制 ()

返回 Canary 是否在5xx指标CanaryName维度。

获取聚合 2XXX 度量 ()

返回 Canary 是否在2xx指标,没有维度。

获取聚合 4XXX 度量 ()

返回 Canary 是否在4xx指标,没有维度。

获取聚合失败的整体度量 ()

返回 Canary 是否在Failed指标,没有维度。

获取聚合失败请求检查 ()

返回 Canary 是否在Failed requests指标,没有维度。

获取聚合 5xxx 度量 ()

返回 Canary 是否在5xx指标,没有维度。

获取失败的整体度量 ()

返回 Canary 是否在Failed指标CanaryName维度。

获取失败请求检查 ()

返回 Canary 是否在Failed requests指标CanaryName维度。

获取步进持续时间度量 ()

返回 Canary 是否在Duration指标CanaryName此 Canary 的维度。

获取步骤成功度量 ()

返回 Canary 是否在StepSuccess指标CanaryName此 Canary 的维度。

具有 2 个公制(2 个公制)

接受一个布尔参数,该参数指定是否发出2xx指标CanaryName此 Canary 的维度。

采用 4 个公制(4 个公制)

接受一个布尔参数,该参数指定是否发出4xx指标CanaryName此 Canary 的维度。

采用 5x 公制(_5xxx 公制)

接受一个布尔参数,该参数指定是否发出5xx指标CanaryName此 Canary 的维度。

具有聚合的 2XXX 度量(聚合量为 2XXX 度量)

接受一个布尔参数,该参数指定是否发出2xx量度,没有此金丝雀的维度。

聚合量为 4xxx 度量(聚合量为 4xxx 度量值)

接受一个布尔参数,该参数指定是否发出4xx量度,没有此金丝雀的维度。

具有聚合 5xxx 度量(聚合 5xxx 度量)

接受一个布尔参数,该参数指定是否发出5xx量度,没有此金丝雀的维度。

具有聚合失败的整体度量(聚合失败的整体度量)

接受一个布尔参数,该参数指定是否发出Failed量度,没有此金丝雀的维度。

具有聚合故障请求扫描(聚合失败请求扫描)

接受一个布尔参数,该参数指定是否发出Failed requests量度,没有此金丝雀的维度。

无故障的运行度量(失败的常规度量)

接受一个布尔参数,该参数指定是否发出Failed指标CanaryName此 Canary 的维度。

无故障请求扫描(失败的请求扫描)

接受一个布尔参数,该参数指定是否发出Failed requests指标CanaryName此 Canary 的维度。

具有步进持续时间度量(步骤成功度)

接受一个布尔参数,该参数指定是否发出Duration指标CanaryName此 Canary 的维度。

具有成功度(步骤成功度)

接受一个布尔参数,该参数指定是否发出StepSuccess指标CanaryName此 Canary 的维度。

用于 UI 金丝雀的设置配置(选项)

对于 UI 金丝雀,设置配置可以包含以下布尔参数:

  • continueOnStepFailure(布尔值)— 是否在步骤失败后继续运行 Canary 脚本(这是指executeStep函数。如果任何步骤失败,则 Canary 运行仍将标记为失败。默认为 false

  • screenshotOnStepStart(布尔值)— 是否在开始步骤之前拍摄屏幕截图。

  • screenshotOnStepSuccess(布尔值)— 是否在成功完成步骤后拍摄屏幕截图。

  • screenshotOnStepFailure(布尔值)— 是否在步骤失败后拍摄屏幕截图。

启用或禁用屏幕截图的方法

禁用步骤屏幕截图 ()

禁用所有屏幕截图选项(屏幕快照步骤开始、屏幕快照成功和屏幕快照步骤失败)。

启用屏幕截图 ()

启用所有屏幕截图选项(屏幕快照步骤开始、屏幕快照成功和屏幕快照步骤失败)。默认情况下,所有这些方法都处于启用状态。

获取屏幕肖顿步骤失败 ()

返回金丝雀是否在步骤失败后拍摄屏幕截图。

获取屏幕肖顿步骤开始 ()

返回金丝雀在开始步骤之前是否拍摄屏幕截图。

获取屏幕肖顿成功 ()

返回金丝雀在成功完成步骤后是否拍摄屏幕截图。

屏幕快速启动(屏幕快照步骤开始)

接受布尔参数,该参数指示是否在开始步骤之前拍摄屏幕截图。

截屏成功(截屏成功)

接受布尔参数,该参数指示是否在成功完成步骤后拍摄屏幕截图。

屏幕逐步失败(屏幕快照步骤失败)

接受布尔参数,该参数指示是否在步骤失败后拍摄屏幕截图。

用户界面金丝雀

首先,导入合成依赖关系并获取配置。

// Import Synthetics dependency const synthetics = require('Synthetics'); // Get Synthetics configuration const synConfig = synthetics.getConfiguration();

然后,通过使用以下选项之一调用 setConfig 方法来设置每个选项的配置。

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

Or

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

要禁用所有屏幕截图,请使用禁用步骤屏幕截图 () 功能,如本示例所示。

synConfig.disableStepScreenshots();

您可以在代码中的任何位置启用和禁用屏幕截图。例如,要仅禁用一个步骤的屏幕截图,请在运行该步骤之前禁用屏幕截图,然后在步骤后启用它们。

用于 API 金丝雀的设置配置(选项)

对于 API 金丝雀,设置配置可以包含以下布尔参数:

  • continueOnHttpStepFailure(布尔值)-是否在 HTTP 步骤失败后继续运行金丝雀脚本(这是指执行函数。如果任何步骤失败,则 Canary 运行仍将标记为失败。默认为 true

  • includeRequestHeaders(布尔值)— 是否在报告中包含请求标头。默认为 false

  • includeResponseHeaders(布尔值)— 是否在报告中包含响应标头。默认为 false

  • restrictedHeaders(数组)— 要忽略的标头值列表(如果包含标头)。这适用于请求和响应标头。例如,您可以通过传递包括请求美容器作为true限制的标头作为['Authorization']

  • includeRequestBody(布尔值)— 是否在报告中包含请求正文。默认为 false

  • includeResponseBody(布尔值) — 是否在报告中包含响应正文。默认为 false

API 金丝雀的函数

  • withIncludeRequestHeaders(包括请求审阅者)

  • withIncludeResponseHeaders(包括请求审阅者)

  • withRestrictedHeaders(受限标头)

  • withIncludeRequestBody(包括请求正文)

  • withIncludeResponseBody(包括响应正文)

  • enableReportingOptions() — 启用所有报告选项 —包括请求美容器包含响应标头包含请求正文, 和包含响应正文, .

  • disableReportingOptions() — 禁用所有报告选项 —包括请求美容器包含响应标头包含请求正文, 和包含响应正文, .

Synthetics Logger

SyntheticsLogger 将日志写入控制台和同一日志级别的本地日志文件。仅当日志级别与所调用的日志函数所需的日志记录级别相同或比其级别低时,此日志文件才会写入到这两个位置。

本地日志文件中的日志记录语句前缀为 “DEBUG: ”、“INFO:” 等,以便与所调用的函数的日志级别相匹配。

如果您希望在与 Synthetics Canary 日志记录相同的日志级别运行 Synthetics 库,可以使用 SyntheticsLogger。

如果要创建上传到 S3 结果位置的日志文件,无需使用 SyntheticsLogger。您可以在 /tmp 文件夹中创建不同的日志文件。在 /tmp 文件夹下创建的任何文件都会作为构件上传到 S3 中的结果位置。

要使用 Synthetics 库日志记录程序,请执行以下操作:

const log = require('SyntheticsLogger');

有用的函数定义:

日志调试 (messageexe);

参数:message 是要记录的消息。ex 是要记录的异常(如果有)。

例如:

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

日志。错误 (messageexe);

参数:message 是要记录的消息。ex 是要记录的异常(如果有)。

例如:

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

日志信息 (messageexe);

参数:message 是要记录的消息。ex 是要记录的异常(如果有)。

例如:

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

log.log (messageexe);

这是 log.info 的一个别名。

参数:message 是要记录的消息。ex 是要记录的异常(如果有)。

例如:

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

日志。警告 (messageexe);

参数:message 是要记录的消息。ex 是要记录的异常(如果有)。

例如:

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

Node.js 库类和函数仅适用于 UI Canary

以下 CloudWatch Synthetics 库函数适用于 Node.js 仅适用于 UI Canary。

Synthetics class

以下函数位于 Synthetics 类中。

async addUserAgent(page, userAgentString);

此函数可将 userAgentString 附加到指定页面的 User-Agent 标头。

例如:

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

结果是页面的 User-Agent 标头被设置为 browsers-user-agent-header-valueMyApp-1.0

异步 executeStep(stepName 称,functionToExecute,[步骤配置]);

执行提供的步骤,并使用开始/通过/失败日志记录、开始/通过/失败屏幕截图,以及通过/失败和持续时间指标对其进行包装。

注意

如果您正在使用syn-nodejs-2.1或更高版本的运行时,您可以配置是否以及何时拍摄屏幕截图。有关更多信息,请参阅Synthetics 配置类

这些区域有:executeStep函数还执行以下操作:

  • 记录步骤开始。

  • 获取名为 <stepName>-starting 的屏幕截图。

  • 启动计时器。

  • 执行提供的函数。

  • 如果函数正常返回,则计为通过。如果函数引发异常,则计为失败。

  • 结束计时器。

  • 记录步骤是通过还是失败

  • 获取名为 <stepName>-succeeded<stepName>-failed 的屏幕截图。

  • 发出 stepName SuccessPercent 指标,100 表示通过,0 表示失败。

  • 发出 stepName Duration 指标,指标的值基于步骤开始和结束时间。

  • 最后,返回 functionToExecute 返回的内容或重新抛出 functionToExecute 抛出的内容。

如果金丝雀使用syn-nodejs-2.0运行时或更高版本,此函数还将步骤执行摘要添加到 Canary 的报表中。摘要包括有关每个步骤的详细信息,例如开始时间、结束时间、状态 (PASED/FAIL)、失败原因(如果失败)以及每个步骤执行过程中捕获的屏幕截图。

例如:

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

响应:

返回 functionToExecute 返回的内容。

使用同步节点 2.2 进行更新

从开始syn-nodejs-2.2,您可以选择通过步骤配置来覆盖步骤级别的 CloudWatch Synthetics 配置。有关您可以传递到的选项列表executeStep,请参阅Synthetics 配置类

以下示例将覆盖默认的false的配置continueOnStepFailuretrue并指定何时拍摄屏幕。

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

获取默认启动选项 ();

这些区域有:getDefaultLaunchOptions()函数返回 CloudWatch Synthetics 器使用的浏览器启动选项。有关更多信息,请参阅 。木偶。启动([选项])

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

getPage();

返回当前打开的页面作为 Puppeteer 对象。有关更多信息,请参阅 Puppeteer API v1.14.0

例如:

let page = synthetics.getPage();

响应:

在当前浏览器会话中打开的页面(Puppeteer 对象)。

getRequestResponseLogHelper();

将此函数用作生成器模式,用于调整请求和响应日志记录标记。

例如:

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

响应:

{RequestResponseLogHelper}

启动(选项)

此函数的选项仅在syn-nodejs-2.1运行时版本为或更高版本。

此函数仅适用于 UI Canary。它关闭现有浏览器并启动一个新的浏览器。

注意

在开始运行脚本之前,CloudWatch Synthetics 器始终启动浏览器。除非您想使用自定义选项启动新浏览器,否则不需要调用启动 ()。

(选项)是在浏览器上设置的一组可配置的选项。有关更多信息,请参阅 。木偶。启动([选项])

如果没有任何选项调用此函数,ConverSynthetics 会启动带有默认参数的浏览器,executablePath, 和defaultViewport。CloudWatch Synthetics 器中的默认视区是 1920 年到 1080 年。

您可以覆盖 CloudWatch Synthetics 元件使用的启动参数,并在启动浏览器时传递其他参数。例如,以下代码段启动具有默认参数和默认可执行文件路径的浏览器,但视口为 800 x 600。

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

以下示例代码添加了一个新的ignoreHTTPSErrors参数添加到 CloudWatch Synthetics 器启动参数:

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

您可以通过添加--disable-web-security标志添加到 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 类

处理精细配置,以及创建请求和响应负载的字符串表示。

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

例如:

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

响应:

{RequestResponseLogHelper}

setRequestResponseLogHelper();

将此函数用作成生器模式,用于设置请求和响应日志记录标记。

例如:

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

响应:

{RequestResponseLogHelper}

异 takeScreenshot (名称, 后缀);

使用名称和后缀(可选)拍摄当前页面的屏幕截图 (.PNG)。

例如:

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

此示例捕获并上传名为01-navigateToUrl-loaded.png添加到 Canary 的 S3 存储桶。

您可以为特定金丝雀步骤拍摄截图,方法是传递stepName作为第一个参数。屏幕截图链接到报表中的金丝雀步骤,以帮助您在调试时跟踪每个步骤。

CloudWatch Synthetics 金丝雀会在开始步骤之前自动拍摄尖锐镜头(executeStep函数)和步骤完成后(除非您将金丝雀配置为禁用屏幕截图)。您可以通过将步骤名称传入takeScreesnotfunction.

下面的示例使用signupForm作为stepName。屏幕截图将被命名为02-signupForm-address,并将链接到名为signupForm在金丝雀报告中。

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

失效链接检查器报告类

此类提供了添加合成链接的方法。它仅在使用syn-nodejs-2.0-beta版本的运行时或更高版本。

使用BrokenLinkCheckerReport,请在脚本中包括以下行:

const BrokenLinkCheckerReport = require('BrokenLinkCheckerReport'); const brokenLinkCheckerReport = new BrokenLinkCheckerReport();

有用的函数定义:

附加链接 (合成链接,已断开)

syntheticsLink是一个SyntheticsLink对象,表示链接。此函数根据状态代码添加链接。默认情况下,如果状态代码不可用或状态代码为 400 或更高,则会将链接视为断开。您可以通过传入可选参数来覆盖此默认行为isBrokenLink的值为true或者false

此函数没有返回值。

获取链接 ()

此函数返回SyntheticsLink包含在断开的链接检查器报告中的对象。

获取总损坏链接 ()

此函数返回一个表示断开链接总数的数字。

获取总体墨迹检查 ()

此函数返回一个数字,表示报告中包含的链接总数。

如何使用 CrokenLink 检查器报告

下面的 Canary 脚本代码段演示了导航到链接并将其添加到断开链接检查器报告的示例。

  1. 导入SyntheticsLinkBrokenLinkCheckerReport, 和Synthetics

    const BrokenLinkCheckerReport = require('BrokenLinkCheckerReport'); const SyntheticsLink = require('SyntheticsLink'); // Synthetics dependency const synthetics = require('Synthetics');
  2. 要添加指向报表的链接,请创建BrokenLinkCheckerReport

    let brokenLinkCheckerReport = new BrokenLinkCheckerReport();
  3. 导航到 URL 并将其添加到断开的链接检查器报告中。

    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);
  4. 将报告添加到 Synthetics。这会创建一个名为BrokenLinkCheckerReport.json在 S3 存储桶中为每次 Canary 运行。您可以在控制台中查看每个金丝雀运行的链接报告以及屏幕截图、日志和 HAR 文件。

    await synthetics.addReport(brokenLinkCheckerReport);

此类提供了包装信息的方法。它仅在使用syn-nodejs-2.0-beta版本的运行时或更高版本。

使用SyntheticsLink,请在脚本中包括以下行:

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

此函数返回syntheticsLinkObject

有用的函数定义:

使用 URL (url

url是 URL 字符串。此函数返回syntheticsLinkObject

带文本 (text

text是一个表示锚点文本的字符串。此函数返回syntheticsLinkObject。它会添加与链接对应的锚点文本。

与父母关系 (父母图尔

parentUrl是一个表示父(源页面)URL 的字符串。此函数返回syntheticsLinkObject

具有状态代码 (statusCode

statusCode是一个表示状态代码的字符串。此函数返回syntheticsLinkObject

无故障原因 (FailureReason

failureReason是表示失败原因的字符串。此函数返回syntheticsLinkObject

添加屏幕画廊 (屏幕幕幕幕

screenshotResult是一个对象。这是一个ScreenshotResult由 Synthetics 函数返回的takeScreenshot。对象包括以下内容:

  • fileName— 表示screenshotFileName

  • pageUrl(可选)

  • error(可选)

仅适用于 API 金丝雀的 Node.js 库类和函数

以下 CloudWatch Synthetics 库函数适用于 Node.js 仅适用于 API Canary。

执行 HttpStep(stepName 称、请求选项、[回调]、[步骤配置])

作为一个步骤执行提供的 HTTP 请求,并发布SuccessPercent(通过/失败)和Duration指标。

执行在引擎盖下使用 HTTP 或 HTTPS 本机函数,具体取决于请求中指定的协议。

此函数还将步骤执行摘要添加到金丝雀的报告中。摘要包括有关每个 HTTP 请求的详细信息,如下所示:

  • 开始时间

  • End Time

  • 状态(传送/失败)

  • 失败原因,如果失败

  • HTTP 调用详细信息,如请求/响应标头、正文、状态代码、状态消息和性能计时。

Parameters

StepName (字符串

指定步骤的名称。此名称也用于发布此步骤的 CloudWatch 指标。

请求选项 (对象或字符串

此参数的值可以是 URL、URL 字符串或对象。如果它是一个对象,则它必须是一组可配置的选项才能发出 HTTP 请求。它支持http.请求(选项 [,回调])Node.js 文档中。

除了这些 Node.js 选项之外,请求选项支持附加参数body。您可以将body参数将数据作为请求主体传递。

回调 (响应

(可选)这是与 HTTP 响应一起调用的用户函数。响应的类型为类:HTTP。正在收到消息

StepConfig (对象

(可选)使用此参数可以在此步骤中使用不同的配置覆盖全局合成配置。

使用执行 HttpStep 的示例

以下一系列示例相互依存,以说明此选项的各种用途。

这第一个示例配置请求参数。您可以将 URL 作为请求选项

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

或者你可以传递一组选项:

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

下一个示例创建一个接受响应的回调函数。默认情况下,如果您未指定回调,CloudWatch Synthetics 会验证状态是否介于 200 和 299 之间(含)。

// 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(); }); }); };

下一个示例为此步骤创建一个配置,该配置将覆盖全局 CloudWatch Synthetics 配置。本示例中的步骤配置允许报告中的请求标头、响应标头、请求正文(发布数据)和响应正文,并限制 “X-Amz-SecurityToken” 和 “授权” 标头值。默认情况下,出于安全原因,报告中不包括这些值。如果您选择将其包含在 S3 存储桶中,则数据仅存储在 S3 存储桶中。

// 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 };

这最后一个例子将您的请求传递给执行并命名步骤。

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

通过这组示例,CloudWatch Synthetics 会添加报告中每个步骤的详细信息,并使用stepName

您将看到successPercentduration的指标Verify GET products API一步。您可以通过监控 API 调用步骤的指标来监控 API 性能。

有关使用这些函数的完整脚本示例,请参阅多步 API 金丝雀