注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
ほとんどの計算は Python だけで簡単に表現できます。ただし、Python 以外の実行エンジンやスクリプトを使用したいユースケースもあります。たとえば、F# アプリケーション、古い VBA スクリプト、あるいはサポートが終了した (EOL) バージョンの Python などです。独自のコンテナを使用する bring-your-own-container (BYOC) ワークフローでは、可能性は無限に広がります。簡単に言うと、BYOC を使用すると、アプリケーションに必要な特定の依存関係やバイナリをすべて含む Docker イメージをローカルで作成し、そのイメージ上で軽量トランスフォームを実行できます。
以下は、Foundry で COBOL トランスフォームを実行する例です。わかりやすくするために、この例ではトランスフォーム内で COBOL プログラムをコンパイルします。代わりに、プログラムを事前にコンパイルし、バイナリ実行ファイルを Docker イメージにコピーすることもできます。まず、コンテナ化ワークフローを有効にし、次にイメージの要件に従って Docker イメージをローカルでビルドします。
例として、以下の控え目な構成の Dockerfile を考えます。
Copied!1 2 3 4 5 6FROM ubuntu:latest RUN apt update && apt install -y coreutils curl sed build-essential gnucobol RUN useradd --uid 5001 user USER 5001
注記: 軽量トランスフォームを動作させるために、Docker イメージに Python をインストールする必要はありません。
ベースイメージとして ubuntu:latest を使用すると、IL5 または FedRAMP 環境で cURL コマンドが失敗する場合があります。その場合は、代わりに ubuntu:jammy を使用してください。
次に、イメージをビルドして Foundry にアップロードします。そのためには、アーティファクトリポジトリを作成し、タグ付けとプッシュの手順に従ってイメージをタグ付けしてプッシュします。この例では、イメージに名前 my-image、バージョン 0.0.1 のタグを付けます。BYOC の軽量トランスフォームを開発する前の最後のステップとして、コードリポジトリにこのアーティファクトリポジトリをローカルの取得元リポジトリとして追加します。
以下の例では、CSV ファイルを生成する COBOL スクリプトを使用します。そのソースコードは、コードリポジトリ内の resources/data_generator.cbl にあります。
最後のステップは、データ処理プログラムを Foundry に接続するための軽量トランスフォームを記述することです。以下のスニペットは、対象のイメージ内に含まれる任意の実行ファイルを組み込みながら、Python API を通じてデータセットにアクセスする方法を示しています。COBOL 実行ファイルを呼び出すには、Python 標準ライブラリの関数(この場合は os.system(...))を使用します。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20from transforms.api import Output, transform @transform.using( my_output=Output('my-output') ).with_container( container_image="my-image", container_tag="0.0.1" ) def compile_cobol_data_generator(my_output): """Conda では取得が難しい依存関係を取り込む方法を示します。""" # Cobol プログラムをコンパイルします # (src フォルダー内のすべての内容は $USER_WORKING_DIR/user_code で利用可能です) os.system("cobc -x -free -o data_generator $USER_WORKING_DIR/user_code/resources/data_generator.cbl") # プログラムを実行して、data.csv を作成し、データを格納します os.system('$USER_WORKING_DIR/data_generator') # 結果を Foundry に保存します my_output.write_table(pd.read_csv('data.csv'))
BYOC ワークフローでは、プレビューはまだサポートされていません。
Build ボタンを使用すると、最終的に Docker イメージからコンテナがインスタンス化され、指定したコマンドが呼び出されます。リソースの割り当て、ログ記録、Foundry との通信、権限の適用、監査可能性の確保は、すべて自動的に処理されます。