Azure Databricks自动在应用运行时环境中设置某些环境变量。 这些变量提供有关应用和工作区的基本信息,默认情况下可供所有 Databricks 应用访问。 有关默认变量的列表,请参阅 Databricks Apps 环境。
如果您的应用需要其他环境变量,请在 app.yaml 配置文件的 env 部分中定义它们。 每个变量都需要一个名称和一个值。 变量可以使用硬编码值或引用外部源。
例如:
env:
- name: LOG_LEVEL
value: 'debug'
仅当它们跨环境静态、非敏感且一致时,才对值进行硬编码。 示例包括 value: "true" 功能切换、 value: "us-west" 固定区域或 value: "UTC" 默认时区。
重要
若要使应用安全且可移植,切勿直接在应用配置中引用密钥或其他敏感值。 例如,避免在环境变量的字段中嵌入机密值或直接在源代码中嵌入机密值 value 。 请改用该 valueFrom 字段来安全引用资源块中定义的机密和其他托管资源。 这可确保在运行时从Azure Databricks检索机密,并且永远不会在配置文件中以纯文本形式公开。
使用环境变量访问资源
如果您定义了应用资源(例如 SQL 仓库或机密),请在文件的env部分中,使用app.yaml字段引用这些资源。 这会将应用中的环境变量连接到在其中 resources定义的资源密钥。
示例 app.yaml 代码片段:
env:
- name: WAREHOUSE_ID
valueFrom: sql_warehouse
- name: SECRET_KEY
valueFrom: secret
然后,在应用代码中,以环境变量的形式访问它们:
Python
import os
warehouse_id = os.getenv("WAREHOUSE_ID")
secret_value = os.getenv("SECRET_KEY")
JavaScript
const warehouseId = process.env.WAREHOUSE_ID;
const secretValue = process.env.SECRET_KEY;
valueFrom 参考
下表显示了 valueFrom 对应每种资源类型的值:
| 资源类型 | 已解析的值 | 示例 |
|---|---|---|
| Databricks 应用 | 应用名称 | my-app |
| Genie 空间 | 空间 ID | 01ef1fa2b3c45678 |
| Lakebase 自动缩放数据库 | 终结点路径 | projects/my-project/branches/main/endpoints/ep123 |
| Lakebase 预配置数据库 | 主机 | postgres-host.example.com |
| Lakeflow 作业 | 职位编号 | 123456789 |
| MLflow 试验 | 实验标识 | 456789012 |
| 模型服务终结点 | 终结点名称 | my-serving-endpoint |
| 机密 | 解密的机密值 | (机密值) |
| SQL 仓库 | 仓库标识 | a1b2c3d4e5f67890 |
| Unity 目录连接 | 连接名称 | my_connection |
| Unity 目录表 | 表全名 | catalog.schema.table |
| Unity 目录卷 | 卷路径 | /Volumes/catalog/schema/volume |
| 用户定义的函数 | 函数全名 | catalog.schema.my_function |
| 矢量搜索索引 | 索引全名 | catalog.schema.my_index |
后续步骤
- 将资源添加到 Databricks 应用
- 使用
app.yaml配置 Databricks 应用执行app.yaml - Databricks 应用环境