OCI関数の概念

このトピックでは、OCIファンクションを使用する際に理解しておく必要がある主要な概念について説明します。

ファンクション開発者

OCIファンクションを使用してファンクションを作成およびデプロイするOracle Cloud Infrastructureユーザーは、「ファンクション開発者」と呼ばれます。OCIファンクションを使用するには、ファンクション開発者はOracle Cloud Infrastructureユーザー・アカウントを持っている必要があります。そのユーザー・アカウントは、適切なポリシーによりファンクション関連リソースへのアクセス権たが付与されたグループに属している必要があります。

OCIファンクションで使用するグループとユーザーの作成を参照してください(まだ存在しない場合)。

アプリケーション

OCIファンクションでは、アプリケーションは次のとおりです:

  • ファンクションの論理グループ
  • アプリケーションのすべてのファンクションにリソースを割り当てて構成する方法
  • アプリケーション内のすべてのファンクションで使用できる構成変数を格納する共通コンテキスト
  • ファンクションの実行時分離を保証する方法

OCIファンクションでアプリケーションを定義するときは、アプリケーションでファンクションを実行するサブネットを指定します。アプリケーションのファンクションのロギングを有効にするかどうかも指定します。

様々なアプリケーションのファンクションが同時に呼び出されるとき、OCIファンクションによって、それらのファンクションの実行が互いに分離されます。

ベスト・プラクティスは、効率性とパフォーマンスを向上させるために、複数のファンクションを1つのアプリケーションにグループ化することです。

OCIファンクションでは、コンソールにアプリケーションとそのファンクションが表示されます。

アプリケーションの作成を参照してください。

ファンクション

OCI関数では、関数は次のとおりです:

  • 小規模だが強力なコード・ブロック(通常は1つの単純な処理を実行)
  • アプリケーションにグループ化される
  • 指定したDockerレジストリにDockerイメージとして格納される
  • CLIコマンドまたは署名付きHTTPリクエストに応答して呼び出される

Fn ProjectのCLIを使用してOCIファンクションにデプロイする場合、ファンクションはDockerイメージとして作成され、指定されたDockerレジストリにプッシュされます。

ファンクションの定義は、OCIファンクション・サーバーにメタデータとして格納されます。この定義ではファンクションの実行方法が説明されており、次のものが含まれます:

  • ファンクションの呼出し時にプルするDockerイメージ
  • ファンクションを実行できる最大時間
  • ファンクションで消費できるメモリーの最大量

OCIファンクションでは、コンソールにファンクションとそのグループ化の先となるアプリケーションが表示されます。

Helloworldファンクションの作成、デプロイおよび呼出しを参照してください。

呼出し

OCIファンクションでは、ファンクションのコール(または呼出し)時にファンクションのコードが実行されます。OCIファンクションにデプロイしたファンクションを次から呼び出すことができます:

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

ファンクションを初めて呼び出すと、OCIファンクションは、指定したDockerレジストリからファンクションのDockerイメージをプルし、Dockerコンテナとして実行してファンクションを実行します。同じファンクションに後続のリクエストがある場合、OCIファンクションは、それらのリクエストを同じコンテナに送ります。アイドル時間が経過すると、Dockerコンテナは削除されます。

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

ファンクションの呼出しを参照してください。

トリガー

トリガーは、システム内の他の場所にあるアクションの結果であり、OCIファンクション内のファンクションを呼び出すリクエストを送信します。たとえば、イベント・サービスのイベントによって、OCIファンクションにファンクションを呼び出すトリガーが送信される場合があります。また、トリガーにより、定義された時間ベースのスケジュールでファンクションを呼び出すように通常のリクエストを送信することもできます。

ファンクションはどのトリガーにも関連付けられていない場合や、1つまたは複数のトリガーに関連付けることができる場合があります。