使用参数和密钥编辑

参数允许您在合成监测器中使用动态定义的值。例如,您可能希望使用只有管理合成监测器的团队才知道密码的特定演示帐户来测试生产网站。

有关安全敏感用例的更多信息,请参阅有关敏感值的文档

定义参数编辑

可以通过以下任何方法声明参数值

如果您正在使用项目创建和管理合成监测器,则还可以通过标准节点 process.env 全局对象使用常规环境变量。

配置文件中的值按以下顺序读取

  1. Kibana 中的全局参数:首先读取 Kibana 中设置的“全局参数”。
  2. 配置文件:然后将“全局参数”与配置文件中定义的任何参数合并。如果在 Kibana 配置文件中都定义了一个参数,则将使用配置文件中的值。
  3. CLI:然后将配置文件中定义的参数与传递给 CLI --params 参数的任何参数合并。如果在配置文件 使用 CLI 参数定义了一个参数,则将使用使用 CLI 定义的值。使用 CLI 运行脚本时,Kibana 定义的“全局参数”对测试没有影响,因为它无法访问 Kibana。

Kibana 中的全局参数编辑

在 Synthetics 应用程序中

  1. 转到设置
  2. 转到全局参数选项卡。
  3. 定义参数。
Global parameters tab on the Synthetics Settings page in Kibana

项目配置文件编辑

使用 synthetics.config.jssynthetics.config.ts 文件定义测试所需的变量。此文件应放在 synthetics 项目的根目录中。

export default (env) => {
  let my_url = "https://127.0.0.1:8080";
  if (env === "production") {
    my_url = "https://elastic.github.io/synthetics-demo/"
  }
  return {
    params: {
      my_url,
    },
  };
};

上面的示例使用 env 变量,它对应于 NODE_ENV 环境变量的值。

CLI 参数编辑

要在在命令行上运行 npx @elastic/synthetics 时设置参数,请使用 --params-p 标志。提供的映射将合并到 synthetics.config.{js,ts} 文件中定义的任何现有变量之上。

例如,要覆盖 my_url 参数,您将运行

npx @elastic/synthetics . --params '{"my_url": "https://127.0.0.1:8080"}'

使用参数编辑

您可以在项目或 Kibana 中的 Synthetics UI 中创建的轻量级监测器和浏览器监测器中使用参数。

在项目中编辑

对于项目中的轻量级监测器,将参数名称括在 ${} 中(例如,${my_url})。

- type: http
  name: Todos Lightweight
  id: todos-lightweight
  urls: ["${my_url}"]
  schedule: '@every 1m'

在浏览器监测器中,可以通过 journeybeforebeforeAllafterafterAll 回调函数的参数中可用的 params 属性来引用参数。

在参数名称前添加 params.(例如,params.my_url

beforeAll(({params}) => {
  console.log(`Visiting ${params.my_url}`)
})

journey("My Journey", ({ page, params }) => {
  step('launch app', async () => {
    await page.goto(params.my_url) 
  })
})

如果您使用的是 TypeScript,请将 params.my_url 替换为 params.my_url as string

在 UI 中编辑

要在 Synthetics UI 中创建的轻量级监测器中使用参数,请将参数名称括在 ${} 中(例如,${my_url})。

Use a param in a lightweight monitor created in the Synthetics UI

要在 Synthetics UI 中创建的浏览器监测器中使用参数,请在参数名称前添加 params.(例如,params.my_url)。

Use a param in a browser monitor created in the Synthetics UI

使用密钥和敏感值编辑

您的 synthetics 脚本可能需要使用在运行时之前未知的密码或其他敏感密钥。

管理员和其他对 Synthetics 应用程序具有 all 权限的用户可以查看纯文本格式的参数。另请注意,synthetics 脚本在访问这些值方面没有任何限制,恶意脚本作者可能会编写一个 synthetics 旅程,在运行时泄露 params 和其他数据。不要任何 synthetics 工具中使用真正敏感的密码(例如,管理员密码或真实的信用卡)。相反,请设置受限的演示帐户或功能受限的虚假信用卡。如果您想限制对参数的访问,请确保不应该访问这些值的用户对 Synthetics 应用程序没有 all 权限,并且使用这些值的任何脚本都不会在网络请求或屏幕截图中泄露它们。

如果您正在使用项目管理监测器,则可以在 synthetics.config.tssynthetics.config.js 文件中使用环境变量。

下面的示例使用 process.env.MY_URL 来引用在环境中定义的名为 MY_URL 的变量,并将其值分配给一个参数。然后,该参数可以在项目中管理的轻量级监测器和浏览器监测器中使用

export default {
  params: {
    my_url: process.env.MY_URL
  }
};