自前のモデルや関数を追加する
- exaBase Studioで利用するコンテナレポジトリにイメージをプッシュし、Functionとして利用するチュートリアルです。
- HelloWorldのチュートリアルで利用したCanvasのFunctionにプッシュしたイメージを追加して実行します。
ARMのCPUを使っているPCでビルドする場合
- M1 MacなどのARMのCPUを使っている場合は docker buildの時に--platform linux/amd64 を付けてください。
- 何もオプションを付けないでビルドするとARM用のDockerイメージが生 成されますが、Studioの実行環境はIntel/AMD64の環境のため環境差異により動作しません。
準備する
1. ツールとサンプルの取得
ツールのインストール
- コンテナのビルドとプッシュを行うためにDockerDesktopやRancherDesktopを利用します。
- ECRへイメージをプッシュするためにAWS CLIをインストールします
- Pythonコードをローカルで実行するためにPythonの安定版をインストールします
サンプル
- tutorial_add_custom_function.json
(右クリックしリンク先を別名で保存
を選択してファイルを保存してください) - sample_python_code.zip
2. ECRアクセスに必要な情報の確認
Functionの処理は指定したAWS ECRのDockerイメージがexaBase Studio上のランタイムで実行されます。Functionで利用するDockerイメージをすべて登録してください。
ECR | URI | (貴社のご担当者にご確認ください) |
レポジトリ名 | (貴社のご担当者にご確認ください) | |
AWS_ACCESS_KEY_ID | (貴社のご担当者にご確認ください) | |
AWS_SECRET_ACCESS_KEY | (貴社のご担当者にご確認ください) |
3. アプリケーションの開発
このチュートリアルではe1とe2の値を掛け算してe3に出力するというイメージをコンテナ化、ECRへプッシュして実行します。
Functionノードで使用可能なコンテナの要件
Functionとして実行するコンテナでは下記が必要となります。
- Dockerを使用する
- DockerfileにCMD/ENTRYPOINTで実行コマンドを設定する
- Functionノード上の
input
とoutput
パスに対応するようにデータの入出力処理を実装する
ディレクトリ構成を設定する
Functionではデータの入出力をファイル形式で行います。コンテナの要件に沿うようにファイルの受け渡 しが正しくできるような実装とフォルダ構成を行います。
フォルダ構成例
{project_root}
├ app
│ ├ data
│ └ app.py
├ requirements.txt
└ Dockerfile