メインコンテンツまでスキップ

Serverlessジョブの環境変数を構成する

環境変数は、Serverless Lakeflow Jobsタスク内のアプリケーションコードに対して、デプロイメント固有の構成を提供します。ジョブ上で名前付き環境変数のエントリを定義し、それを必要とする各タスクに対してエントリを選択します。ベータ期間中は、Jobs APIを通じて環境変数を構成します。

備考

ベータ版

この機能はベータ版です。使用するには、ワークスペース管理者は、 プレビュー ページから Lakeflow Jobsの環境変数 を有効にする必要があります。Databricksのプレビューを管理するを参照してください。

このページでは、Serverless ジョブの環境変数について説明します。Serverless コンピュートはinitスクリプトをサポートしていません。もしワークロードがクラシックコンピュートで動作しているなら、「 環境変数をinitスクリプトで設定・使用」を参照してください。

環境変数の仕組み

環境変数のエントリはジョブレベルで定義されます。各エントリは一意のキーを持ち、インライン変数を含み、すべてのServerlessタスクタイプに対応します。入力キーには、文字、数字、ハイフン、アンダースコアのみを含めることができます。各インライン変数名は文字またはアンダースコアで始まらなければならず、文字、数字、アンダースコアのみを含めてはいけません。

各タスクは environment_variables_key を使用して環境変数のエントリを 1 つ選択し、そのエントリの変数のみを受け取ります。エントリが結合されることはなく、あるエントリが別のエントリから継承することもありません。environment_variables_key を省略したタスクには、環境変数は渡されません。

環境変数は、タスクプロセスで実行されるアプリケーションコードでのみ使用できます。これらはSparkの実行ロジックでは使用できません。

要件

  • ワークスペース管理者が、 プレビュー ページから Lakeflow Jobsの環境変数 を有効にしました。Databricksのプレビューを管理するを参照してください。
  • Serverless環境バージョン5以降で実行されるタスク。

制限事項

ユーザー定義関数(UDF)は環境変数を読み取ることができません。なぜならUDFはタスクプロセスではなくSpark実行ロジック上で動作するためです。

以下の制限が適用されます。

構成

上限

ジョブごとの環境変数のエントリ

10

エントリーキー

1~100文字。一致する必要があります ^[\w\-_]+$

エントリごとのインライン変数

100

インライン変数名

1~256文字。一致する必要があります ^[A-Za-z_][A-Za-z0-9_]*$

インライン変数の値

512 文字

構成

上限

ジョブごとの環境変数のエントリ

10

エントリーキー

1~100文字。一致する必要があります ^[\w\-_]+$

エントリごとのインライン変数

100

インライン変数名

1~256文字。一致する必要があります ^[A-Za-z_][A-Za-z0-9_]*$

インライン変数の値

512 文字

Jobs API を使用して環境変数を設定

POST /api/2.2/jobs/create リクエストの environment_variables フィールドを使用して、環境変数のエントリを定義します。エントリを使用する各タスクで environment_variables_key を設定します。

次の例では、ノートブックタスクとJARタスクに対して個別の環境変数エントリを定義しています。各タスクはenvironment_variables_keyを使用してエントリを選択します。また、すべてのServerless タスクタイプで同じ方法でエントリを使用できます:

JSON
{
"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",
"variables": {
"APP_ENV": "production",
"REGION": "us-west-2"
}
},
{
"environment_variables_key": "summary_vars",
"variables": {
"APP_ENV": "production",
"LOG_LEVEL": "INFO",
"LOG_FILE": "service.log"
}
}
]
}

ジョブの更新ジョブの全設定の上書き、および1回限りのランの送信の各操作を使用して、環境変数のエントリを構成することもできます。

アプリケーションコードでの環境変数の読み取り

アプリケーションコードは、プロセス環境から構成された変数を読み取ります。

Python
import os

app_environment = os.environ["APP_ENV"]
region = os.environ["REGION"]

その他のリソース