ジョブ・アーティファクトの準備

ジョブおよびジョブ実行で使用するジョブ・アーティファクトを作成する方法について学習します。

ジョブ・アーティファクトは最大4 GBです。使用できるジョブ・アーティファクトのタイプは次のとおりです:

Pythonファイル

アーティファクトは、次のPythonファイルの例のように、ジョブを実行するコードを含む単純で単一のPythonファイルにすることができます:

# simple job
import time
 
print("Hello job world!")
time.sleep(3)
print("Job Done.")

このジョブは2つのメッセージを、間に3秒のタイム・スリープをはさんで出力します。コードを単一のhello_world_job.pyファイルに保存し、ジョブとして実行できます。ジョブ実行にはすでにPythonがインストールされており、すべてのPythonシステム・ライブラリでコードを実行できます。

この例では、サードパーティのPythonライブラリを使用しません。インストールされているPythonライブラリおよび環境は、conda環境でジョブを使用して制御します。

Bashまたはシェル・スクリプト

この例のように単一のスクリプト・ファイルを使用したり、より複雑なスクリプト・ファイルを使用できます:

#!/bin/bash
var=$1
if [ -z "$var" ]
then
      echo "no argument provided"
      exit 100
else
      while [ "$1" != "" ]; do
        echo "Received: ${1}" && shift;
      done
fi

このようなタイプのジョブ実行は、Oracle Linuxを使用して実行されます。

zipまたは圧縮Tarファイル

多くの場合、プロジェクトは非常に複雑で、単一のファイルで実行できるよりも多くのコードを必要とします。複雑なPythonプロジェクトおよびシェル・スクリプトがある場合は、コンテンツ本体全体をアーカイブし、ジョブとして実行できます。fat JARファイルを使用すると、Javaコードをジョブとして実行できます。

Pythonコードまたはシェル・スクリプトを記述してジョブとして実行する方法に関する特別な要件はありません。zipまたは圧縮tarアーティファクトをアップロードした後、JOB_RUN_ENTRYPOINTパラメータを使用してメイン・ファイルを指すことができます。

zipおよび圧縮tarアーティファクトには、必要なジョブ実行環境変数を設定するランタイムYAMLファイルも含めることができます。

アーカイブ・ファイルの考慮事項:

  • すべてのコードは、ルート・ディレクトリの下にアーカイブする必要があります。

  • ファイル名は、JOB_RUN_ENTRYPOINTで設定したルート・ディレクトリ名と一致している必要があります。

    JOB_RUN_ENTRYPOINTは、使用中、ジョブ実行の詳細ページに表示されます。

  • ディレクトリを圧縮した後は、アーカイブ・ファイルの名前を変更しないでください。

サンプルの使用を開始するには、zipped_python_job.zipファイルをダウンロードし、解凍して確認します。

zipファイルには、zipped_python_job/ディレクトリの下のzipファイルにアーカイブされる単純なロギング・ジョブが含まれています。ジョブを実行するには、OCIコンソールまたはOCI SDKを使用して、JOB_RUN_ENTRYPOINT環境変数を設定することで、メインpythonファイルの場所を指定します:

"environmentVariables": {
    "JOB_RUN_ENTRYPOINT": "zipped_python_job/entry.py"
}

ジョブ・アーティファクト・ファイルを作成するには、次のステップを使用します:

  1. プロジェクトのルート・ディレクトリを作成します。
  2. ルート・ディレクトリの下にジョブ・コードを作成します。ジョブ・コードは、全体がルート・ディレクトリの下にある必要があります。
  3. ルート・ディレクトリをzipまたはtarファイルに圧縮します。

これで、ジョブの作成時にアーカイブ・ファイルをジョブ・アーティファクトとしてアップロードできます。ジョブの作成時に、JOB_RUN_ENTRYPOINTをカスタム環境変数としてジョブ構成に追加します。