使用参数和密钥
Elastic Stack Serverless
参数允许您在 synthetic monitors 中使用动态定义的值。例如,您可能希望使用特定的演示帐户测试生产网站,该帐户的密码只有管理 synthetic monitors 的团队知道。
有关安全敏感用例的更多信息,请参阅使用密钥和敏感值。
可以通过以下任何方法声明参数值
- 在 Observability 项目中的 Synthetics 设置页面的全局参数选项卡中。
- 在配置文件中声明参数的默认值。
- 传递
--params
CLI 参数。
如果您正在使用 Synthetics 项目创建和管理 synthetic monitors,您还可以通过标准的 node process.env
全局对象使用常规环境变量。
配置文件中的值按以下顺序读取
- Observability 项目中的全局参数:首先读取使用 UI 设置的全局参数。
- 配置文件:然后将全局参数与配置文件中定义的任何参数合并。 如果在 Observability UI 和 Synthetics 项目配置文件中都定义了参数,则将使用配置文件中的值。
- CLI:然后将配置文件中定义的参数与传递给 CLI
--params
参数的任何参数合并。 如果在 Synthetics 项目配置文件 和 使用 CLI 参数中都定义了参数,则将使用使用 CLI 定义的值。 使用 CLI 运行脚本时,在 Kibana 或 Observability Serverless 项目中定义的全局参数对测试没有影响,因为它无法访问 Kibana 或 Observability 项目。
从 Synthetics UI 中的任何页面
- 转到 设置。
- 转到 全局参数 选项卡。
- 定义参数。

使用 synthetics.config.js
或 synthetics.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'
在浏览器监视器中,可以通过 journey
、before
、beforeAll
、after
或 afterAll
回调函数的参数中可用的 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
。
要在 Synthetics UI 中创建的轻量级监视器中使用参数,请将参数名称包装在 ${}
中(例如,${my_url}
)。

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

您的 synthetic scripts 可能需要使用密码或其他敏感密钥,这些密钥在运行时之前是未知的。
管理员和其他对 Synthetics 应用程序具有 all
权限的用户可以以纯文本形式查看参数。 另请注意,synthetic scripts 对访问这些值没有任何限制,恶意脚本作者可能会编写一个 synthetic journey,在运行时提取 params
和其他数据。 不要在任何 synthetic 工具中使用真正敏感的密码(例如,管理员密码或真实的信用卡)。 而是设置有限的演示帐户,或具有有限功能的虚假信用卡。 如果您想限制对参数的访问,请确保不应访问这些值的用户没有对 Synthetics 应用程序的 all
权限,并且任何使用这些值的脚本都不会在网络请求或屏幕截图中泄露它们。
如果您正在使用 Synthetics 项目管理监视器,则可以在 synthetics.config.ts
或 synthetics.config.js
文件中使用环境变量。
下面的示例使用 process.env.MY_URL
引用环境中定义的名为 MY_URL
的变量,并将其值分配给参数。 然后可以在 Synthetics 项目中管理的轻量级和浏览器监视器中使用该参数
export default {
params: {
my_url: process.env.MY_URL
}
};