ライセンス持込みコンテナ
ジョブおよびジョブ実行の作成時に使用するカスタム・コンテナ(Bring Your Own ContainerまたはBYOC)を作成して使用できます。
ジョブで使用できるコンテナ・イメージの最大サイズは25 GBです。コンテナ・イメージのサイズは、コンテナ・レジストリからコンテナ・プルするため、ジョブのプロビジョニング時間が遅くなります。可能なかぎり最小のコンテナ・イメージを使用することをお薦めします。
ジョブを実行するには、独自の
Dockerfile
を作成し、イメージを作成する必要があります。Pythonスリム・イメージを使用するDockerfile
から開始します。Dockerfile
は、ローカルおよびリモートのビルドを作成できるように設計されています。ローカル・ビルドは、コードに対してローカルでテストするときに使用します。ローカル開発中、コードの変更ごとに新しいイメージを作成する必要はありません。 ノート
/home/datascience
ディレクトリにファイルを格納しないでください。コンテナがプロビジョニングされ、ジョブ実行として実行されると、このディレクトリ内でオーバーライドされます。コードが完成し、このDockerfile
の例のようにジョブとして実行する場合は、リモート・オプションを使用してDockerfile
を実行します。
ARG type
FROM python:3.8-slim AS base
ENV DATASCIENCE_USER datascience
ENV DATASCIENCE_UID 1000
ENV HOME /home/$DATASCIENCE_USER
RUN python -m pip install \
parse \
oci
FROM base AS run-type-local
# nothing to see here
FROM base AS run-type-remote
COPY job_logs.py .
CMD ["python", "job_logs.py"]
FROM run-type-${type} AS final
次に、job_logs.py
ファイルの例を示します。
import oci
import datetime
import os
import time
import sys
import uuid
from oci.loggingingestion import LoggingClient
from oci.loggingingestion.models import PutLogsDetails, LogEntryBatch, LogEntry
OCI_RESOURCE_PRINCIPAL_VERSION = "OCI_RESOURCE_PRINCIPAL_VERSION"
JOB_RUN_OCID_KEY = "JOB_RUN_OCID"
# switch
class Job:
def __init__(self):
rp_version = os.environ.get(OCI_RESOURCE_PRINCIPAL_VERSION, "UNDEFINED")
if not rp_version or rp_version == "UNDEFINED":
# RUN LOCAL TEST
self.signer = oci.config.from_file("~/.oci/config", "BIGDATA")
else:
# RUN AS JOB
self.signer = oci.auth.signers.get_resource_principals_signer()
job = Job()
print(
"Start logging for job run: {}".format(
os.environ.get(JOB_RUN_OCID_KEY, "LOCAL")
)
)
print("Current timestamp in UTC: {}".format(str(datetime.datetime.utcnow())))
print("Delay 5s")
time.sleep(5)
print("... another stdout")
print("Print all environment variables and values")
for item, value in os.environ.items():
print("{}: {}".format(item, value))
print("Docker Job Done.")
Oracle Cloud Infrastructure Registry (コンテナ・レジストリとも呼ばれる)に対してイメージをプッシュおよびプルする前に、Oracle Cloud Infrastructureの認可トークンが必要です。認証トークン文字列は作成時にのみ表示されるため、認証トークンを安全な場所にただちにコピーするようにしてください。