Serverlessジョブの環境変数を構成する
環境変数は、Serverless Lakeflow Jobsのタスク内のアプリケーションコードにデプロイメント固有の構成を提供します。ジョブに名前付き環境変数エントリを定義し、それを必要とする各タスクのエントリを選択します。
ベータ版
この機能はベータ版です。使用するには、ワークスペース管理者は、 プレビュー ページから Lakeflow Jobsの環境変数 を有効にする必要があります。Databricksのプレビューを管理するを参照してください。
このページでは、Serverless ジョブの環境変数について説明します。Serverless コンピュートはinitスクリプトをサポートしていません。もしワークロードがクラシックコンピュートで動作しているなら、「 環境変数をinitスクリプトで設定・使用」を参照してください。
環境変数の仕組み
環境変数 entries are defined at the ジョブ level.Each entry has a unique key and contains inline variables, paths to .env files, or both.An entry works with all Serverless タスク types.An entry key can contain only letters, numbers, hyphens, and underscores.Each inline variable name must start with a letter or underscore and can contain only letters, numbers, and underscores.
各タスクは environment_variables_key を使用して環境変数のエントリを 1 つ選択し、そのエントリの変数のみを受け取ります。エントリが結合されることはなく、あるエントリが別のエントリから継承することもありません。environment_variables_key を省略したタスクには、環境変数は渡されません。
環境変数は、タスクプロセスで実行されるアプリケーションコードでのみ使用できます。これらはSparkの実行ロジックでは使用できません。
要件
- ワークスペース管理者が、 プレビュー ページから Lakeflow Jobsの環境変数 を有効にしました。Databricksのプレビューを管理するを参照してください。
- Serverless環境バージョン5以降で実行されるタスク。
.envファイルの場合、ジョブの 実行者 ID に各ファイルへの読み取りアクセス権が必要です。
制限事項
ユーザー定義関数(UDF)は環境変数を読み取ることができません。なぜならUDFはタスクプロセスではなくSpark実行ロジック上で動作するためです。
以下の制限が適用されます。
構成 | 上限 |
|---|---|
ジョブごとの環境変数のエントリ | 10 |
エントリーキー | 1~100文字。一致する必要があります |
エントリごとのインライン変数 | 20 |
インライン変数名 | 1~256文字。一致する必要があります |
インライン変数の値 | 512 文字 |
| 5 |
ファイルパス | 1,024文字 |
ファイルサイズ | 32 KiB(32,768 バイト) |
ファイルの行サイズ | 1 KiB(1,024 バイト、UTF-8 バイトで測定) |
.envファイルを使用します
環境変数は、ワークスペース ファイル(/Workspace/...)または Unity Catalog ボリューム(/Volumes/...)内のファイルから読み込むことができます。UI のエントリの Files リスト、または Jobs API の spec.files 配列にファイルパスを追加します。ファイルは、ジョブを作成または更新するときではなく、タスクの開始時に読み込まれます。
Serverless ジョブの場合、Databricks は独自の .env ファイル形式を使用します。次のルールが適用されます。
- 先行する空白文字または
=の前のスペースなしで、各変数をKEY=VALUEとして 1 行に 1 つ定義します。 - 変数名は、ASCII 文字またはアンダースコアで始まる必要があります。残りの文字には、ASCII 文字、数字、またはアンダースコアを使用できます。
- 最初の
=以降のすべて(スペースや追加の=文字を含む)が値になります。空の値が許可されます。値にはUnicodeテキストを含めることができます。UTF-8エンコーディングを使用してファイルを保存します。 - 空行および空白のみの行は無視されます。コメントを追加するには、行の先頭文字として
#を入力します。
たとえば、execution.env ファイルには次の内容を含めることができます:
# Application configuration
APP_ENV=production
REGION=us-west-2
GREETING=こんにちは
OPTIONAL_VALUE=
この形式では、quotation marks、エスケープ シーケンス、インライン コメント、または ${OTHER_VARIABLE} などの変数参照は解釈されません。これらの文字は値の一部として残ります。たとえば、APP_ENV="production" の値には引用符が含まれます。export のプレフィックスが無効です。
変数に複数の定義がある場合:
- ファイル内では、最後の定義が優先されます。
- ファイル全体を通して、後からリストされるファイルの値は、前にリストされたファイルの値よりも優先されます。
- インライン変数はファイルからの値をオーバーライドします。
たとえば、ファイルで LOG_LEVEL=DEBUG が定義されており、エントリでもインライン変数 LOG_LEVEL=INFO が定義されている場合、タスクは LOG_LEVEL=INFO を受け取ります。
ファイルに無効な行が含まれている場合、またはファイルや行のサイズ制限を超えている場合、タスクは失敗します。
UI で環境変数を構成する
ジョブの Tasks tabで、タスクを選択します。[ 環境変数 ] を使用して、production などの環境変数エントリを選択または作成します。

[環境変数の構成] に名前を入力します。必要に応じて、 [Variables] の下にキーと値のペアを追加し、 [Files] の下に.envファイルへのパスを追加するか、両方を追加します。両方のセクションを空のままにすることもできます。 [保存] をクリックします。

Jobs API を使用して環境変数を設定
POST /api/2.2/jobs/create リクエストの environment_variables フィールドを使用して、環境変数のエントリを定義します。エントリを使用する各タスクで environment_variables_key を設定します。
次の例では、ノートブック タスクと JAR タスクの個別の環境変数エントリを定義しています。各エントリでは、インライン値に spec.variables を使用し、ファイル パスに spec.files を使用します。各タスクは environment_variables_key を使用してエントリを選択し、どの Serverless タスクタイプでも同様の方法でエントリを使用できます。
{
"name": "serverless-environment-variables-example",
"tasks": [
{
"task_key": "process_orders",
"notebook_task": {
"notebook_path": "/Workspace/Shared/process-orders"
},
"environment_key": "default",
"environment_variables_key": "production"
},
{
"task_key": "summarize",
"spark_jar_task": {
"main_class_name": "com.company.main"
},
"environment_key": "summary_env",
"environment_variables_key": "summary_vars"
}
],
"environments": [
{
"environment_key": "default",
"spec": {
"environment_version": "5",
"dependencies": []
}
},
{
"environment_key": "summary_env",
"spec": {
"environment_version": "5",
"java_dependencies": ["/Volumes/company/default/prod/summarize.jar"]
}
}
],
"environment_variables": [
{
"environment_variables_key": "production",
"spec": {
"variables": {
"APP_ENV": "production",
"REGION": "us-west-2"
},
"files": ["/Volumes/company/default/prod/execution.env", "/Volumes/company/default/prod/format.env"]
}
},
{
"environment_variables_key": "summary_vars",
"spec": {
"variables": {
"APP_ENV": "production",
"LOG_LEVEL": "INFO",
"LOG_FILE": "service.log"
},
"files": ["/Volumes/company/default/prod/format.env"]
}
}
]
}
ジョブの更新、ジョブの全設定の上書き、および1回限りのランの送信の各操作を使用して、環境変数のエントリを構成することもできます。
アプリケーションコードでの環境変数の読み取り
アプリケーションコードは、プロセス環境から構成された変数を読み取ります。
- Python
- Scala
import os
app_environment = os.environ["APP_ENV"]
region = os.environ["REGION"]
val appEnvironment = sys.env("APP_ENV")
val region = sys.env("REGION")