OCI Functionsの動作

ファンクションを作成またはデプロイした場合とファンクションを呼び出した場合のOCI関数の動作について説明します。

ファンクションを作成またはデプロイするとどうなりますか。

ファンクション・コードの指定方法は、ファンクション・ソース・タイプによって異なります。

イメージベースの関数の場合、単一のFn Project CLIコマンドを使用して、デプロイ操作を順番に実行できます。

  • 関数からのコンテナ・イメージの構築
  • func.yamlファイルに次のファンクション定義を指定する:
    • ファンクションを実行できる最大時間
    • ファンクションで消費できるメモリーの最大量
  • 指定されたコンテナ・レジストリへのイメージのプッシュ
  • ファンクションのメタデータ(メモリーと時間の制限、コンテナ・レジストリ内のイメージへのリンクを含む)をFnサーバーにアップロードする
  • コンソールに表示されるファンクション・リストへファンクションを追加する

コード専用関数の場合、関数コードと依存関係を含むアーカイブを提供し、サポートされている管理対象ランタイムを選択して、関数を作成します。OCI Functionsはアーカイブを検証し、ファンクション・ソース情報を格納します。コンテナ・イメージはビルド、プッシュまたは管理しません。

次の図は、イメージベース関数をOCI関数にデプロイするプロセスを示しています。

この図は、ファンクションからコンテナ・イメージを構築する、イメージをコンテナ・レジストリにプッシュする、func.yamlファイルを作成するプロセス、Fnサーバーにファンクション定義をアップロードする、およびコンソールに表示するプロセスを示します。

ノート

イメージベースの機能の場合、イメージがコンテナ・レジストリにアップロードされた後は、イメージの更新を担当します。たとえば、新しい言語バージョンがサポートされている場合(詳細は、ファンクション開発キット(FDK)を参照)

コード専用関数の場合、OCI Functionsは管理対象ランタイム・パッチ適用を所有し、更新されたランタイム・バージョンを公開します。コードのみの関数を新しい互換性のあるランタイム・バージョンに移動するタイミングを制御します。

ファンクションを呼び出した場合の処理

OCI Functionsにデプロイしたファンクションを次により呼び出すことができます:

  • FnプロジェクトのCLI。
  • Oracle Cloud Infrastructure SDK。
  • ファンクションの呼出しエンドポイントへの署名付きHTTPリクエスト。すべてのファンクションに呼出しエンドポイントがあります。
  • その他のOracle Cloudサービス(イベント・サービスでイベントによりトリガーされるなど)または外部サービス。

ファンクションが初めて呼び出されると、OCIファンクションは最初にIAMサービスによりリクエストを検証します。リクエストが認証および認可チェックに合格すると、OCI Functionsはファンクションの実行環境を準備し、ファンクション・コードを実行します。

イメージベース関数の場合、OCI Functionsはファンクション定義を使用して、コンテナ・レジストリからプルするコンテナ・イメージを識別し、そのファンクションが属するアプリケーションに関連付けられたサブネット内のインスタンスでイメージをコンテナとして実行します。

コード専用関数の場合、OCI Functionsはファンクション・アーカイブおよび管理ランタイムを使用してファンクションを実行します。

ファンクションが実行されている場合、そのファンクションは、同じサブネットで実行されている他のリソースやサービス(Database as a Serviceなど)に対して読取りと書込みが可能です。このファンクションは、他の共有リソース(オブジェクト・ストレージなど)および他のOracle Cloudサービスとの間の読取りおよび書込みを行うこともできます。コンソール、CLI、SDKsまたはAPIでタイムアウトを設定して、ファンクションを実行できる最大時間を指定できます。

OCI Functionsは、ファンクションのログをOracle Cloud Infrastructureまたは外部ロギングの宛先に保存します。

ファンクションの実行が終了し、アイドル状態の期間が経つと、実行環境は削除されます。OCI Functionsが、実行環境が削除される前に同じファンクションへの別のコールを受信した場合、リクエストは同じ実行中の実行環境にルーティングできます。OCI Functionsが現在実行中の関数へのコールを受信した場合、OCI Functionsは、両方の受信リクエストを処理するために水平方向にスケーリングされます。

OCI Functionsでは、メトリック・チャートでファンクションの呼出しに関する情報を示します。

次の図は、呼び出された関数がOCIサービス、ツールおよび外部サービスとどのように相互作用するかを示しています。

この図は、起動されたファンクションがOracle Cloud Infrastructureサービス(IAM、オブジェクト・ストレージ、DBaaS)、ツール(OCIコンソール、Fn Project CLI)および外部サービス(IaaS、PaaS、SaaS)と相互作用する方法を示しています。ファンクションは、VCN内のアプリケーション・サブネットに関連付けられた実行環境で実行されます。