EXECUTE JOB SERVICE¶
注釈
この操作は現在、 Snowflake’s Support Policy and Service Level Agreement に規定されたService Levelセットの対象外です。
Snowpark Container Servicesサービスをジョブとして実行します。
CREATE SERVICE を使用して作成されたサービスは長時間実行されるため、不要になった場合は明示的に停止する必要があります。一方、 EXECUTE JOB SERVICE を使用して作成されるジョブは、ストアドプロシージャと同様、コードが終了すると終了するサービスです。すべてのコンテナーが終了すると、ジョブは完了です。
By default, the job runs synchronously; the EXECUTE JOB SERVICE command finishes only after all containers exit.
また、オプションのパラメーター ASYNC を指定することで、ジョブサービスを非同期に実行することもできます。この場合、ジョブを実行している間、コマンドは即座に返されます。DESCRIBE SERVICE コマンドを使用してジョブの完了をポーリングし、 SYSTEM$WAIT_FOR_SERVICES 関数を呼び出してジョブの完了を待つことができます。
After a job service completes, Snowflake automatically cleans up the resources allocated to the job service to help reduce costs. You can still access job metadata for up to 14 days by using the DESCRIBE SERVICE and SHOW SERVICES commands. After 14 days, Snowflake automatically deletes the job.
ジョブが終了したとき、そのコンピュートプールノードで他のジョブやサービスが実行されていなければ、Snowflakeはそのノードをアイドル状態であるとみなし、再利用する可能性があります。その場合、 SYSTEM$GET_SERVICE_LOGS はジョブコンテナーからローカルコンテナーログを返しません。コンテナーログをイベントテーブルに永続化することを検討してください。詳細については、 コンテナログの公開とアクセス をご参照ください。
コマンドパラメーターは特定の順序で指定する必要があることに注意してください。詳細については、 使用上の注意 をご参照ください。
- こちらもご参照ください。
構文¶
EXECUTE JOB SERVICE
IN COMPUTE POOL <compute_pool_name>
{
fromSpecification
| fromSpecificationTemplate
}
[ NAME = [<db>.<schema>.]<name> ]
[ ASYNC = { TRUE | FALSE } ]
[ REPLICAS = = <num> ]
[ QUERY_WAREHOUSE = <warehouse_name> ]
[ COMMENT = '<string_literal>']
[ EXTERNAL_ACCESS_INTEGRATIONS = ( <EAI_name> [ , ... ] ) ]
条件:
fromSpecification ::= { FROM @<stage> SPECIFICATION_FILE = '<yaml_file_stage_path>' | FROM SPECIFICATION <specification_text> }fromSpecificationTemplate ::= { FROM @<stage> SPECIFICATION_TEMPLATE_FILE = '<yaml_file_stage_path>' | FROM SPECIFICATION_TEMPLATE <specification_text> } USING ( <key> => <value> [ , <key> => <value> [ , ... ] ] )
必須パラメーター¶
IN COMPUTE POOL compute_pool_nameサービスを実行するアカウントのコンピュートプール名を指定します。
FROM stage仕様ファイルが保管されているSnowflake内部ステージを指定します。例えば、
@tutorial_stageです。SPECIFICATION_FILE = 'yaml_file_stage_path'ステージ上の サービス仕様 ファイルへのパスを指定します。例えば、
'some-dir/echo_spec.yaml'です。SPECIFICATION_TEMPLATE_FILE = 'yaml_file_stage_path'ステージ上の サービス仕様 テンプレートファイルへのパスを指定します。たとえば、
'some-dir/echo_template_spec.yaml'です。SPECIFICATION_TEMPLATE_FILEを指定する場合は、USINGパラメーターが必要です。FROM SPECIFICATION specification_textFROM SPECIFICATION_TEMPLATE specification_textサービス仕様 を指定します。ドル記号のペア (
$$)を使用して、仕様文字列の最初と最後を区切ることができます。SPECIFICATION_TEMPLATEを指定する場合は、USINGパラメーターが必要です。
オプションのパラメーター¶
NAME = [db.schema.]nameジョブなどを実行するサービスの名前(つまり、識別子)。サービスが作成されるスキーマで一意にする必要があります。
特殊文字や大文字小文字を区別するための引用符付きの名前はサポートされていません。同じ制約は、サービスを作成するデータベース名やスキーマ名にも適用されます。つまり、引用符のないデータベース名とスキーマ名は、サービスを作成する場合に有効です。
Default: If not specified, Snowflake generates a name for the service in a format
JOB_<query_job_uuid>.ASYNC = { TRUE | FALSE }ジョブを非同期に実行するかどうかを指定します。
デフォルト: FALSE
REPLICAS = num実行するジョブのレプリカの数を指定します。詳細については、 ジョブサービスの複数のレプリカの実行(バッチジョブ) をご参照ください。
デフォルト:1。
QUERY_WAREHOUSE = warehouse_nameサービスコンテナがクエリを実行するためにSnowflakeに接続するけれども、使用するウェアハウスを明示的に指定しない場合に使用するウェアハウス。このパラメーターはNative Appsのオブジェクトリファレンスもサポートします。詳細については、 コンシューマーから参照およびオブジェクトレベル権限をリクエストする をご参照ください。
デフォルト: なし。
EXTERNAL_ACCESS_INTEGRATIONS = ( EAI_name [ , ... ] )ジョブに外部サイトへのアクセスを許可する 外部アクセス統合 の名前を指定します。このリストの名前は大文字と小文字を区別します。デフォルトでは、アプリケーションコンテナーはインターネットにアクセスする権限を持っていません。ジョブが外部サイトにアクセスできるようにするには、外部アクセス統合(EAI)を作成し、その統合を使用するようにジョブを構成します。詳細については、 ネットワークエグレスの構成 をご参照ください。
COMMENT = 'string_literal'サービスのコメントを指定します。
デフォルト: 値なし
TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )タグ の名前とタグ文字列の値を指定します。
タグ値は常に文字列であり、タグ値の最大文字数は256です。
ステートメントでのタグの指定に関する情報については、 タグの割り当て をご参照ください。
USING ( key => value [ , key => value [ , ... ] ] )仕様テンプレートの展開をパラメーター化する値を提供できるようにします。
USINGは、仕様テンプレート(FROM SPECIFICATION_TEMPLATE_FILEまたはFROM SPECIFICATION_TEMPLATE)を使用する場合に必要です。キーと値のペアはコンマ区切りのリストを形成する必要があります。条件:
keyはテンプレート変数の名前です。テンプレート変数名は、オプションで二重引用符(")で囲むことができます。valueはテンプレートの変数に割り当てる値です。文字列値は'または$$で囲む必要があります。仕様テンプレート引数値は、英数字か有効な JSON にする必要があります。
アクセス制御の要件¶
この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。
権限 |
オブジェクト |
注意 |
|---|---|---|
CREATE SERVICE |
スキーマ |
|
USAGE |
コンピューティングプール |
|
READ |
ステージ |
これは仕様が保管されるステージです。 |
READ |
イメージリポジトリ |
仕様によって参照されるイメージのリポジトリ。 |
スキーマ内のオブジェクトに対して操作を実行するには、親データベースとスキーマに対する USAGE 権限が必要です。スキーマに対する 任意の権限を付与されたロールは、そのロールがスキーマを解決できることに注意してください。たとえば、スキーマに対するCREATE権限を付与されたロールは、そのスキーマにオブジェクトを作成できますが、そのスキーマに対するUSAGE*も*付与されている必要はありません。
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
EXECUTE JOB SERVICE の呼び出し時には、パラメーターを次の順序で提供する必要があります。コンピューティングプール、次にその他のプロパティ、最後にサービス仕様(ステージ上の仕様ファイル名またはインライン仕様のいずれかを使用)の順に指定します。
メタデータについて:
注意
Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。
例¶
非同期でジョブを実行する¶
Snowpark Container Servicesジョブサービスを非同期で実行します。
EXECUTE JOB SERVICE
IN COMPUTE POOL tutorial_compute_pool
NAME = tutorial_db.data_schema.example_job
ASYNC = TRUE
FROM @tutorial_stage
FROM SPECIFICATION $$
<job specification>
$$;
ブロックストレージをマウントした状態でジョブを実行する¶
仕様で構成されたブロックストレージでジョブサービスを実行します。
EXECUTE JOB SERVICE
IN COMPUTE POOL tutorial_compute_pool
NAME=tutorial_job_service
FROM SPECIFICATION $$
spec:
container:
- name: main
image: /tutorial_db/data_schema/tutorial_repository/my_job_image:latest
volumeMounts:
- name: block-vol1
mountPath: /opt/block/path
volumes:
- name: block-vol1
source: block
size: 10Gi
blockConfig:
iops: 4000
throughput: 200
$$;
このコマンドでは、オプションのパラメーター(ASYNC)は指定されません。そのため、Snowflakeはコマンドを同期的に実行します。
バッチジョブの実行¶
REPLICAS パラメーターを指定して、ジョブサービスのインスタンスを3つ実行します。
EXECUTE JOB SERVICE
IN COMPUTE POOL my_pool
NAME = tutorial_2_job_service
REPLICAS = 3
FROM SPECIFICATION $$
spec:
containers:
- name: main
image: my_repo/my_job_image:latest
$$;
各ジョブサービスレプリカのステータスを検索する SHOW SERVICE INSTANCES IN SERVICE コマンドを使用します。
SHOW SERVICE INSTANCES IN SERVICE tutorial_2_job_service;
出力例:
+---------------+-------------+------------------------+----------------+-------------+-----------+------------------------------------------------------------------+----------------------+----------------------+--------------+
| database_name | schema_name | service_name | service_status | instance_id | status | spec_digest | creation_time | start_time | ip_address |
|---------------+-------------+------------------------+----------------+-------------+-----------+------------------------------------------------------------------+----------------------+----------------------+--------------|
| TUTORIAL_DB | DATA_SCHEMA | TUTORIAL_2_JOB_SERVICE | DONE | 0 | SUCCEEDED | 80b42d8e1ec39dbaa7e2b9b6591e4b0cc11f74304703f56b50e1dfc10f421ac5 | 2025-08-07T00:44:49Z | 2025-08-07T00:44:49Z | 10.244.0.11 |
| TUTORIAL_DB | DATA_SCHEMA | TUTORIAL_2_JOB_SERVICE | DONE | 1 | SUCCEEDED | 80b42d8e1ec39dbaa7e2b9b6591e4b0cc11f74304703f56b50e1dfc10f421ac5 | 2025-08-07T00:44:49Z | 2025-08-07T00:44:57Z | 10.244.0.12 |
| TUTORIAL_DB | DATA_SCHEMA | TUTORIAL_2_JOB_SERVICE | DONE | 2 | SUCCEEDED | 80b42d8e1ec39dbaa7e2b9b6591e4b0cc11f74304703f56b50e1dfc10f421ac5 | 2025-08-07T00:44:49Z | 2025-08-07T00:44:49Z | 10.244.0.203 |
+---------------+-------------+------------------------+----------------+-------------+-----------+------------------------------------------------------------------+----------------------+----------------------+--------------+
出力では、instance_id 列および status 列にはレプリカ番号とそのステータスが表示されます。