ジョブの実行

ジョブを作成したら、ジョブの定義に基づいてジョブを実行できます。また、オーバーライドするプロパティーを指定してジョブを実行することもできます。 ジョブの実行は、コンソールでも CLI でも行えます。

ジョブが実行されるたびに、イメージにタグが指定されていない限り、参照されているコンテナー・イメージの最新バージョンがジョブ実行に使用されます。 イメージにタグが指定されている場合、タグ付けされたイメージがジョブ実行に使用されます。

実行依頼されたバッチ・ジョブは、可能な限り並列実行されます。 実行依頼されたジョブの数またはサイズが、構成されている割り当て量制限 (実行インスタンスの最大数など) を超えた場合、Code Engine は、十分な量のジョブが終了するまで、ジョブをキューに入れてジョブの実行を遅らせます。 バッチ・ジョブの詳細については、 バッチ・ジョブのワークロード を参照してください。 メモリーや CPU など、ジョブの割り当て量と制限について詳しくは、Code Engine の制限と割り当て量を参照してください。

サブスクリプションによって作成されたジョブの実行は、10分後に削除されます。 サブスクリプションについて詳しくは、サブスクリプション入門を参照してください。

完了したジョブは、1週間後に自動的に削除されます。

コンソールでのジョブの実行

ジョブを作成するときには、そのジョブを即時に実行できます。 ただし、ジョブの実行依頼や再実行依頼はいつでも行うことができます。 また、以前に作成したジョブの実行依頼や再実行依頼を行うこともできます。

  1. 「ジョブ」ページに移動します。

    1. Code Engine プロジェクトページ 」から、自分のプロジェクト名をクリックします。
    2. [ジョブ] をクリックし、[ ジョブ ] タブをクリックします。
    3. 実行したいジョブの名前をクリックしてください。
  2. **「ジョブの実行依頼」**をクリックして、「ジョブの実行依頼」ダイアログを開きます。 インスタンス、CPU、メモリー、ジョブ再試行回数、ジョブ・タイムアウトなどのデフォルト構成値を確認し、必要に応じて変更します。 これらのオプションについて詳しくは、ジョブを作成および実行する際のオプションを参照してください。

  3. **「ジョブの実行依頼」**をクリックしてジョブを実行します。 「ジョブの詳細 (job details)」ページに、ジョブのインスタンスの状況が表示されます。

  4. ジョブのいずれかのインスタンスの実行に失敗した場合は、エラーをトラブルシューティングし、「失敗したインデックスの再実行 」をクリックして、失敗したインデックスに対してジョブを再度実行します。 「ジョブの送信」ペインで、設定値を確認し、必要に応じて変更してください。 「 配列インデックス 」セクションには、実行に失敗したジョブの実行インスタンスのインデックスが自動的に一覧表示されます。 構成値を確認し、オプションで変更した後、ジョブの実行依頼をクリックしてジョブを実行します。

一般的なジョブ実行インデックスのエラーのトラブルシューティングについては、「 ジョブ実行インデックスが失敗する原因の理解 」を参照してください。

また、既存のジョブ実行を再実行することもできます。 特定のジョブ実行を再実行するには、 「ジョブ実行」 タブをクリックしてから、処理するジョブ実行の名前をクリックします。 このジョブ実行を再実行するには、 「再実行」 をクリックします。

ロギング機能を追加すると、ジョブ・ログを表示できるようになります。 詳しくは、ログの表示を参照してください。

ジョブを実行するたびに、ジョブの各インスタンスに JOB_INDEX 環境変数が自動的に注入されます。 Code Engineによって設定される環境変数について詳しくは、「作成していない構成マップが表示されています」を参照してください。 削除できますか?

CLI でのジョブの実行

開始前に

CLI でジョブを実行するには、jobrun submit コマンドを実行します。 オプションの完全なリストについては、ibmcloud ce jobrun submit コマンドを参照してください。

CLI を使用して、ジョブ構成に基づいてジョブを実行したり、最初にジョブ構成を作成せずにジョブを実行したりできます。

CLI でのジョブ構成に基づくジョブの実行

ジョブ構成を作成すると、ジョブを簡単に何度も実行することができます。

例えば、次の jobrun submit コマンドでは、定義した myjob ジョブ構成に指定されたコンテナー・イメージを実行する 5 つの新規インスタンスが作成されます。 定義したジョブ構成を参照するには、--job オプションを使用します。 --name オプションが指定されている場合は --job オプションは必要ありませんが、以下のサンプル・コマンドは、--name オプションを使用してこのジョブ実行の名前を指定します。 ジョブについては、cpu のデフォルト値は 1 で、memory のデフォルト値は 4G です。 リソース制限とリソース要求はインスタンス単位で適用されるので、各インスタンスがメモリー 4 G と vCPU 1 つを取得します。 このジョブでは、5 * 4 G = 20 G のメモリーと 5 * 1 vCPU = 5 個の vCPU が割り当てられます。

ibmcloud ce jobrun submit --name testjobrun --job myjob --array-indices "1 - 5"

以下の表は、この例の中で jobrun submit コマンドと共に使用されるオプションを要約しています。 コマンドとそのオプションについて詳しくは、ibmcloud ce jobrun submit コマンドを参照してください。

コマンド・オプション
オプション 説明
--name

このジョブ実行の名前。 --name の値を指定しない場合は、--image--job の値が必須です。 プロジェクト内で固有の名前を使用してください。

  • 名前の先頭と末尾は小文字の英数字でなければなりません。
  • 名前は 53 文字以下でなければならず、文字、数字、ピリオド (.)、およびハイフン (-) を使用できます。
--job 実行するジョブの名前。 --name--image の値を指定しない場合は、この値が必須です。
--array-indices ジョブの実行に使用されるインスタンスのインデックスを指定します。 ハイフン(-)またはコンマ(,)で区切られたインデックスのリストまたは範囲を指定します。例: 1,3,6,9 または 1-5,7-8,10。 最大値は 999999 です。 この値はオプションです。 デフォルト値は 0です。

ジョブを実行するたびに、ジョブの各インスタンスに JOB_INDEX 環境変数が自動的に注入されます。 Code Engineによって設定される環境変数について詳しくは、「作成していない構成マップが表示されています」を参照してください。 削除できますか?

最初にジョブ構成を作成しない CLI でのジョブの実行

CLI を使用する場合は、最初にジョブ構成を作成せずにジョブを実行依頼できます。 jobrun submit コマンドで指定可能なものと同じ構成オプションを jobrun resubmit および job create コマンドで指定できます。

例えば、次の ibmcloud ce jobrun submit コマンドは、us.icr.io/mynamespace/myhello_bld アクセス情報を使用して、myregistry イメージを参照するジョブ実行を実行依頼します。 このジョブ実行は定義されたジョブ構成を参照していないため、--name および image オプションの値を指定する必要があります。 --name を使用してこのジョブ実行の名前を指定し、--image を使用してこのジョブ実行に使用するイメージの名前を指定します。 --array-indices オプションにより、コンテナー・イメージを実行する 5 つの新規インスタンスが作成されます。 ジョブ実行については、cpu のデフォルト値は 1 で、memory のデフォルト値は 4G です。 リソース制限とリソース要求はインスタンス単位で適用されるので、各インスタンスがメモリー 4 G と vCPU 1 つを取得します。 このジョブ実行では、5 * 4 G = 20 G のメモリーと 5 * 1 vCPU = 5 個の vCPU が割り当てられます。

ibmcloud ce jobrun submit --name myhellojob-jobruna --image us.icr.io/mynamespace/myhello_bld --registry-secret myregistry   --array-indices "1 - 5"

ジョブ実行状況を確認するには、jobrun get -n myhellojob-jobruna コマンドを実行します。

出力例

[...]
Name:          myhellojob-jobruna
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           3m6s
Created:       2021-06-04T11:56:22-04:00
Image:                us.icr.io/mynamespace/myhello_bld
Resource Allocation:
    CPU:                1
    Ephemeral Storage:  400M
    Memory:             4G
Registry Secrets:
    myregistry
Runtime:
    Mode:                  task
    Array Indices:         1 - 5
    Array Size:            5
    JOP_ARRAY_SIZE Value:  5
    Max Execution Time:    7200
    Retry Limit:           3
Status:
    Completed:          9s
    Instance Statuses:
        Succeeded:  5
    Conditions:
        Type      Status  Last Probe  Last Transition
    Pending   True    16s         16s
    Running   True    13s         13s
    Complete  True    9s          9s
Events:
    Type    Reason     Age                Source                Messages
    Normal  Updated    11s (x8 over 18s)  batch-job-controller  Updated JobRun "myhellojob-jobruna"
    Normal  Completed  11s                batch-job-controller  JobRun completed successfully
Instances:
    Name                    Running  Status     Restarts  Age
    myhellojob-jobruna-1-0  0/1      Succeeded  0         18s
    myhellojob-jobruna-2-0  0/1      Succeeded  0         18s
    myhellojob-jobruna-3-0  0/1      Succeeded  0         18s
    myhellojob-jobruna-4-0  0/1      Succeeded  0         18s
    myhellojob-jobruna-5-0  0/1      Succeeded  0         18s

CLI を使用して実行依頼 (または再実行依頼) された、定義されたジョブ構成を参照しないジョブ実行は、コンソールには表示されません。

CLI でのジョブの再実行

前のジョブ実行の構成に基づいてジョブ実行を再実行する場合は、jobrun resubmit コマンドを使用します。 このコマンドには、前のジョブ実行の名前が必要です。また、オプションの他の引数を指定することもできます。 オプションの完全なリストについては、ibmcloud ce jobrun resubmit コマンドを参照してください。

例えば、次の jobrun resubmit コマンドでは、testjobrun ジョブ実行を再実行します。

ibmcloud ce jobrun resubmit --jobrun testjobrun

出力例

Getting job run 'testjobrun'...
Getting job 'myjob'...
Rerunning job run 'myjob-jobrun-fji48'...
Run 'ibmcloud ce jobrun get -n myjob-jobrun-fji48' to check the job run status.

例えば、次の jobrun resubmit コマンドでは、最初にジョブ構成を作成せずに実行された myhellojob-jobruna ジョブ実行を再実行します。 参照されるジョブ実行に関連するジョブ構成がないため、--nameオプションを指定してこのジョブ実行の名前を指定する必要があります。

ibmcloud ce jobrun resubmit --jobrun myhellojob-jobruna --name myhellojob-jobrunb

ジョブ実行状況を確認するには、jobrun get -n myhellojob-jobrunb コマンドを実行します。

出力例

Getting jobrun 'myhellojob-jobrunb'...
[...]
Name:          myhellojob-jobrunb
ID:            abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
Project Name:  myproject
Project ID:    01234567-abcd-abcd-abcd-abcdabcd1111
Age:           3m6s
Created:       2021-06-04T11:56:22-04:00
Image:                us.icr.io/mynamespace/myhello_bld
Resource Allocation:
    CPU:                1
Ephemeral Storage:  400M
Memory:             4G
Registry Secrets:
    myregistry
Runtime:
    Mode:                  task
    Array Indices:         1 - 5
    Array Size:            5
    JOP_ARRAY_SIZE Value:  5
    Max Execution Time:    7200
    Retry Limit:           3
Status:
    Completed:          91s
Instance Statuses:
    Succeeded:  5
Conditions:
    Type      Status  Last Probe  Last Transition
    Pending   True    96s         96s
    Running   True    92s         92s
    Complete  True    91s         91s
Events:
    Type    Reason     Age                Source                Messages
Normal  Updated    93s (x7 over 97s)  batch-job-controller  Updated JobRun "myhellojob-jobrunb"
Normal  Completed  93s                batch-job-controller  JobRun completed successfully
Instances:
    Name                    Running  Status     Restarts  Age
myhellojob-jobrunb-1-0  0/1      Succeeded  0         97s
myhellojob-jobrunb-2-0  0/1      Succeeded  0         97s
myhellojob-jobrunb-3-0  0/1      Succeeded  0         97s
myhellojob-jobrunb-4-0  0/1      Succeeded  0         97s
myhellojob-jobrunb-5-0  0/1      Succeeded  0         97s

CLI を使用して実行依頼 (または再実行依頼) された、定義されたジョブ構成を参照しないジョブ実行は、コンソールには表示されません。

次のステップ

  • ジョブの実行後に、ジョブおよびジョブ実行の詳細を表示するには、アクセス・ジョブの詳細を参照してください。

  • ジョブが作成されたので、ジョブをイベント・ドリブンにすることを検討してください。 イベント・サブスクリプションを使用すると、定期的なスケジュールによってジョブをトリガーしたり、ファイルのアップロードなどのイベントに反応するようにジョブを設定したりすることができます。

  • ジョブの作成方法や以前の更新方法に関係なく、以下の任意の方法でジョブの更新および参照されるコードの更新を行うことができます。

    • Open Container Initiative(OCI)規格に準拠したコンテナイメージをお持ちの場合は、ジョブの作成(または更新)時に、コンテナレジストリの場所を指すイメージへの参照のみを指定すれば十分です。 パブリックレジストリ または プライベートレジストリ 内のイメージを使用してジョブを作成(または更新)し、ジョブの実行中にその参照されたイメージにアクセスすることができます。

      job create コマンドを使用してジョブを作成し、 --build-source オプションを指定してローカル・ソースまたはリポジトリー・ソースからコンテナー・イメージをビルドし、別のコンテナー・イメージを指すようにジョブを変更する場合は、まず、ジョブからビルドの関連付けを削除する必要があります。 例えば、 ibmcloud ce job update -n JOB_NAME --build-clear を実行します。 ジョブからビルドの関連付けを削除した後、別のイメージを参照するようにジョブを更新できます。

    • Git リポジトリーにあるソース・コードから開始する場合は、ソースからイメージをビルドし、単一操作を使用してジョブを作成 (または更新) する処理を Code Engine に任せることができます。 このシナリオでは、Code Engine はイメージを IBM Cloud® Container Registry にアップロードします。 詳しくは、リポジトリー・ソース・コードからのジョブの作成を参照してください。 イメージのビルドをさらに制御したい場合は、ジョブを作成 (または更新) してジョブを実行する前に、Code Engine を使用してイメージのビルドを選択することができます。

    • ローカル・ワークステーションにあるソース・コードから開始する場合は、単一 CLI コマンドを使用して、ソースからのイメージのビルドとジョブの作成を Code Engine に処理させることができます。 このシナリオでは、Code Engine はイメージを IBM Cloud® Container Registry にアップロードします。 詳しくは、CLI を使用したローカル・ソース・コードからのジョブの作成を参照してください。 イメージのビルドをさらに制御したい場合は、ジョブを作成 (または更新) してジョブを実行する前に、Code Engine を使用してイメージのビルドを選択することができます。

    例えば、ジョブのソースの開発を進化させながら、ローカル・ソースのビルドを Code Engine に処理させることができます。 その後、イメージが成熟すると、目的の特定のイメージを参照するようにジョブを更新できます。 必要に応じて、このプロセスを繰り返すことができます。

    更新されたジョブを実行すると、イメージにタグが指定されていない限り、参照されたコンテナー・イメージの最新バージョンがジョブ実行に使用されます。 イメージにタグが指定されている場合、タグ付けされたイメージがジョブ実行に使用されます。

コード・サンプルがさらに必要ですか? 「 IBM Cloud Code Engine 」のサンプルについては、 GitHub リポジトリをご覧ください。