EXECUTE JOB SERVICE

注釈

この操作は現在、 Snowflake’s Support Policy and Service Level Agreement に規定されたService Levelセットの対象外です。

Snowpark Container Servicesサービスをジョブとして実行します。

CREATE SERVICE を使用して作成されたサービスは長時間実行されるため、不要になった場合は明示的に停止する必要があります。一方、 EXECUTE JOB SERVICE を使用して作成されるジョブは、ストアドプロシージャと同様、コードが終了すると終了するサービスです。すべてのコンテナーが終了すると、ジョブは完了です。

デフォルトでは、ジョブは同期的に実行されます。EXECUTE JOB SERVICE コマンドが終了するのは、すべてのコンテナーが終了した後です。ジョブの完了後、Snowflakeは必要なクリーンアップを自動的に実行します。ただし、Snowflakeは実行後のジョブサービスのモニターとデバッグができるようにジョブを短期間保持するため、このクリーンアップはすぐには実行されません。

また、オプションのパラメーター ASYNC を指定することで、ジョブサービスを非同期に実行することもできます。この場合、ジョブを実行している間、コマンドは即座に返されます。DESCRIBE SERVICE コマンドを使用してジョブの完了をポーリングし、 SYSTEM$WAIT_FOR_SERVICES 関数を呼び出してジョブの完了を待つことができます。

非同期ジョブの場合、Snowflakeは完了後7日後に自動クリーンアップを実行します。

ジョブが終了したとき、そのコンピュートプールノードで他のジョブやサービスが実行されていなければ、Snowflakeはそのノードをアイドル状態であるとみなし、再利用する可能性があります。その場合、 SYSTEM$GET_SERVICE_LOGS はジョブコンテナーからローカルコンテナーログを返しません。コンテナーログをイベントテーブルに永続化することを検討してください。詳細については、 コンテナログの公開とアクセス をご参照ください。

コマンドパラメーターは特定の順序で指定する必要があることに注意してください。詳細については、 使用上の注意 をご参照ください。

こちらもご参照ください。

SYSTEM$GET_SERVICE_STATUS --- 非推奨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> [ , ... ] ) ]
  [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
Copy

条件:

fromSpecification ::=
  {
    FROM @<stage> SPECIFICATION_FILE = '<yaml_file_stage_path>'
    | FROM SPECIFICATION <specification_text>
  }
Copy
fromSpecificationTemplate ::=
  {
    FROM @<stage> SPECIFICATION_TEMPLATE_FILE = '<yaml_file_stage_path>'
    | FROM SPECIFICATION_TEMPLATE <specification_text>
  }
  USING ( <key> => <value> [ , <key> => <value> [ , ... ] ]  )
Copy

必須パラメーター

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_text

サービス仕様 を指定します。ドル記号のペア$$)を使用して、仕様文字列の最初と最後を区切ることができます。

FROM SPECIFICATION_TEMPLATE specification_text

サービス仕様 を指定します。ドル記号のペア$$)を使用して、仕様文字列の最初と最後を区切ることができます。SPECIFICATION_TEMPLATE を指定する場合は、 USING パラメーターが必要です。

NAME = [db.schema.]name

ジョブなどを実行するサービスの名前(つまり、識別子)。サービスが作成されるスキーマで一意にする必要があります。

特殊文字や大文字小文字を区別するための引用符付きの名前はサポートされていません。同じ制約は、サービスを作成するデータベース名やスキーマ名にも適用されます。つまり、引用符のないデータベース名とスキーマ名は、サービスを作成する場合に有効です。

オプションのパラメーター

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>
  $$;
Copy

ブロックストレージをマウントした状態でジョブを実行する

仕様で構成されたブロックストレージでジョブサービスを実行します。

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
  $$;
Copy

このコマンドでは、オプションのパラメーター(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
$$;
Copy

各ジョブサービスレプリカのステータスを検索する SHOW SERVICE INSTANCES IN SERVICE コマンドを使用します。

SHOW SERVICE INSTANCES IN SERVICE tutorial_2_job_service;
Copy

出力例:

+---------------+-------------+------------------------+----------------+-------------+-----------+------------------------------------------------------------------+----------------------+----------------------+--------------+
| 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 列にはレプリカ番号とそのステータスが表示されます。