ジョブ・アーティファクトの準備
ジョブおよびジョブ実行で使用するジョブ・アーティファクトを作成する方法について学習します。
ジョブ・アーティファクトは最大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"
}
ジョブ・アーティファクト・ファイルを作成するには、次のステップを使用します:
- プロジェクトのルート・ディレクトリを作成します。
- ルート・ディレクトリの下にジョブ・コードを作成します。ジョブ・コードは、全体がルート・ディレクトリの下にある必要があります。
- ルート・ディレクトリをzipまたはtarファイルに圧縮します。
これで、ジョブの作成時にアーカイブ・ファイルをジョブ・アーティファクトとしてアップロードできます。ジョブの作成時に、JOB_RUN_ENTRYPOINT
をカスタム環境変数としてジョブ構成に追加します。