はじめに
2026年9月24日より、OCI Functionsにてコード専用関数が可能になりました。
それまではコンテナベースのデプロイにしか対応していませんでしたが、コードをZIP化してアップロードするデプロイメントにも対応し、よりシンプルなデプロイが可能になりました。
本記事ではコード専用関数の方法について紹介いたします。
コード専用関数の仕様
コード専用関数可能な開発言語
以下の言語、環境に対応しています。
コンテナイメージ経由でのデプロイが可能なC#、Rubyに関しては未対応です。
- Java SE 21
- Python 3.12
- Node.js 24
- OL9-slim (Goのデプロイ用)
アーカイブの仕様
基本的にはメインのFunctionのソースファイルとその依存ライブラリなどをZIP形式にアーカイブしたしたものがデプロイ対象となります。Javaの場合はuser/fat JAR形式でのデプロイが必要ですが、シンプルなものであればZIPでも対応可能です。
アーカイブのサイズはローカルデバイスから直接デプロイする場合は25MB以下である必要があります。Object Storageからデプロイする場合は250MBまで対応が可能です。Object Storageからデプロイする場合はファンクションの該当バケットの読み取りのリソース・プリンシパルが必要です。
その他の仕様
- コード専用のデプロイメント経由のファンクションとコンテナイメージのデプロイメント経由のファンクションの相互変換はできません
- x86 / Arm / マルチアーキテクチャーに対応しています
デプロイ手順
Pythonを例にファンクションをデプロイする例です。
本例ではローカルデバイスからのアーカイブファイルのアップロードを行います。
他の言語の場合はマニュアルをご参照ください。
アプリケーションは作成済みとします。
前知識:アーカイブ構成に関して
以下のような構成にする必要があります。
今回はシンプルなファンクションを用意するので必要なのはfunctionディレクトリとfunc.pyのみになります。
archive-root/
├── function/
└── func.py # 今回デプロイ対象となるファンクション
├── python/ # func.pyの依存パッケージ(必要時のみ)
├── resources/ # リソース系(必要時のみ)
└── native/ # マルチアーキテクチャーの場合に作成
├── fn-arch-x86/
└── fn-arch-arm/
ソースファイルの配置
今回は以下のソースを使用します。このソースファイルをfunctionディレクトリに作成後、お使いの環境に合わせた実施方法でfunctionディレクトリ配下をZIPファイルにアーカイブします。
from fdk import response
def handler(ctx, data=None):
return response.Response(
ctx,
response_data="Hello, world!",
headers={"Content-Type": "text/plain"},
)
ファンクションのデプロイ
-
コンソールトップの左上のハンバーガーメニューから「開発者サービス」→ファンクション内の「アプリケーション」を選択し、ファンクションデプロイ対象の作成済みアプリケーションを選択します
-
アプリケーション画面内のタブメニューから「ファンクション」を選択します
-
「アクション」から「create from archive」を選択します
-
以下のサンプル画面のように入力します。コンソール下部のスクリーンショット内に表示のない項目は設定しないままで構いません

- Name : ファンクション名
- File source : ローカルからアップロードする場合は「Upload from your device」を選択。「ファイルをドロップするか選択」からアーカイブファイルはアップロードしてください
- Runtime : 「Python312.ol9」を選択
- Handler : 「ソースファイル名.ハンドラー関数名」を入力。今回は「func.handler」
- Memory : 128MBで問題ありません。みなさんの登録されるファンクションの実行に必要なメモリ容量を選択してください
- Runtime version management configration : ランタイムのバッチバージョンの更新の有無(前者があり、後者がなし)です。今回はあり(「Function update」)を選択しています
- 同期呼び出しタイムアウト : 今回はデフォルトの30秒を選択していますが業務用件に応じて変更してください。なお、300秒が上限なので、それ以上の実行時間が必要な場合はスクリーンショット内にない「非同期呼び出し構成」の方を設定します
-
右下の「作成」をクリックしてデプロイ
動作確認
クラウド・シェルから以下のように実行確認します。
$ fn invoke SampleApp SampleFunction
Hello, world!
ソースコードのコーディングの問題以外でうまく動かない場合は以下あたりをチェックしてください。原因の如何にかかわらずアプリケーションのタブメニューから「モニタリング」の画面からロギングを有効化しておき、実行失敗時のログを参照するとうまく行かない場合の調査が進みやすくなります。
- コンテキストの設定漏れ:特にアプリケーションの一つ目のファンクションの場合、コンテキストの設定が未設定のままファンクションを登録してしまう可能性が考えられます。この場合、アプリケーションのタブメニューの「概要」画面の右下にある、スタート・ガイドの「クラウド・シェル設定」のステップ3までを実施してください
- 画面設定のミス:特にハンドラ名のタイプミスがないかを確認してください