正在加载

使用参数和密钥

Elastic Stack Serverless

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

有关安全敏感用例的更多信息,请参阅使用密钥和敏感值

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

注意

如果您正在使用 Synthetics 项目创建和管理 synthetic monitors,您还可以通过标准的 node process.env 全局对象使用常规环境变量。

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

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

从 Synthetics UI 中的任何页面

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

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

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

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

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

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

npx @elastic/synthetics . --params '{"my_url": "http://localhost:8080"}'

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

对于 Synthetics 项目中的轻量级监视器,请将参数名称包装在 ${} 中(例如,${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)
  })
})
  1. 如果您正在使用 TypeScript,请将 params.my_url 替换为 params.my_url as string

要在 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 lightweight monitor created in the Synthetics UI

您的 synthetic scripts 可能需要使用密码或其他敏感密钥,这些密钥在运行时之前是未知的。

警告

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

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

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

export default {
  params: {
    my_url: process.env.MY_URL
  }
};
© . All rights reserved.