环境变量与 Secret 变量
在创建或配置算力容器(任务、Jupyter 工作空间)时,可以在「环境变量」区域为执行注入一组 变量名称 / 变量值 形式的环境变量,用于控制容器的行为,例如传入第三方服务的 Token、模型仓库地址等。
每个环境变量都有一个类型,分为明文与 Secret 两种,由变量右侧是否勾选「Secret」决定。两种类型的区别如下:
| 明文变量 | Secret 变量 | |
|---|---|---|
| 存储方式 | 明文保存 | 保存后无法再读取明文 |
| 页面展示 | 明文显示 | 全程脱敏显示(如 hf••••23) |
| 注入方式 | 注入为环境变量,并写入 openbayes_params.json | 仅作为环境变量注入,不写入 openbayes_params.json |
因此,密钥、Token 等不希望被他人读到的内容应设为 Secret 类型;而像超参数这类需要被程序读取或记录的内容用明文类型即可。关于 openbayes_params.json 与明文参数如何被程序读取,参见 parameters。
配置环境变量
在容器的创建 / 配置页面找到「环境变量」区域:
- 点击「添加环境变量」,填写「变量名称」和「变量值」;
- 选择变量类型:默认为明文类型;如果是密钥、Token 等敏感信息,勾选其右侧的「Secret」将其设为 Secret 类型;
- 可以添加多个变量,提交后随容器一同保存。
Secret 变量的脱敏与读取
Secret 变量一旦保存,平台不再以明文返回它的值。有编辑权限的成员在页面各处只会看到脱敏后的占位内容:
- 脱敏后只保留头尾各 2 个字符,中间以
••••代替(如hf••••23); - 当原值长度不足 8 位时整体以
••••••显示,不泄露真实长度。
没有编辑权限的成员则完全读取不到该值,接口直接返回 null。
脱敏值仅用于展示,不是变量的真实值。容器运行时注入的始终是当初保存的原始值。
重启与克隆时的 Secret 处置
是否沿用原 Secret 的真实值,取决于这次操作是重启同一个执行,还是创建一个新的执行。
重启工作空间
对已关闭的工作空间再次启动(「快速启动」或「修改配置并启动」,参见 Jupyter 工作空间的重启)属于同一个执行的延续,会沿用上一次保存的 Secret 真实值,无需重新输入:
- 快速启动:直接沿用上一次的全部配置,Secret 的真实值由平台在服务端自动回填。
- 修改配置并启动:Secret 以脱敏、只读的形式列出并默认沿用。如需更换,点击该变量的「替换」输入新值,点击「取消替换」可恢复为沿用原值。
克隆 / 新建执行
以下操作都会生成一个全新的执行,因此不会带过来原 Secret 的真实值:
- 从公共教程、公共资源克隆;
- 克隆他人的配置并启动、从自动建模克隆;
- 从某次执行「继续执行 / 自此克隆」创建新执行。
这些情况下,克隆者本就无法读取原 Secret 的明文,平台也不会把它带到新执行中。页面会保留变量名并提示「原 Secret 值无法保留,请输入新值」,你需要为每个 Secret 变量填写自己的值,或删除不需要的变量后再启动。明文变量则会照常带入新执行。
修改变量类型
变量的类型可以在明文与 Secret 之间切换:
- 明文改为 Secret:勾选「Secret」即可,已填写的值会作为该 Secret 的值保存。
- Secret 改为明文:取消勾选「Secret」。由于已保存的 Secret 原值无法再读取,切换后原值会被丢弃,需要重新填写该变量的值(页面会先弹窗确认)。
限制
OPENBAYES_(不区分大小写)为平台保留前缀,不可用作自定义环境变量的名称。