OCI Functionsの概念
OCI Functionsを使用する前に理解しておく必要がある主な概念をご確認ください。
ファンクション開発者
OCI Functionsを使用してファンクションを作成およびデプロイするOracle Cloud Infrastructureユーザーは、「ファンクション開発者」と呼ばれます。OCIファンクションを使用するには、ファンクション開発者はOracle Cloud Infrastructureユーザー・アカウントを持っている必要があります。そのユーザー・アカウントは、適切なポリシーによりファンクション関連リソースへのアクセス権たが付与されたグループに属している必要があります。
OCI Functionsで使用するグループおよびユーザーの作成を参照してください(まだ存在しない場合)。
アプリケーション 🔗
OCIファンクションでは、アプリケーションは次のとおりです。
- ファンクションの論理グループ
- アプリケーションのすべてのファンクションにリソースを割り当てて構成する方法
- アプリケーション内のすべてのファンクションで使用できる構成変数を格納する共通コンテキスト
- ファンクションの実行時分離を保証する方法
OCI関数でアプリケーションを定義するときは、アプリケーションでファンクションを実行するサブネットを指定します。アプリケーションのファンクションのロギングを有効にするかどうかも指定します。
様々なアプリケーションのファンクションが同時に呼び出されるとき、OCI Functionsは、それらのファンクションの実行が互いに分離されることを確認します。
ベスト・プラクティスは、効率性とパフォーマンスを向上させるために、複数のファンクションを1つのアプリケーションにグループ化することです。
OCI Functionsでは、アプリケーションとそのファンクションがコンソールに表示されます。
アプリケーションの作成を参照してください。
ファンクション 🔗
OCI関数では、次の関数があります。
- 小規模だが強力なコード・ブロック(通常は1つの単純な処理を実行)
- アプリケーションにグループ化される
- 指定したDockerレジストリにDockerイメージとして格納される
- CLIコマンドまたは署名付きHTTPリクエストに応答して呼び出される
Fn Project CLIを使用してOCI関数にデプロイする場合、その関数はDockerイメージとして作成され、指定されたDockerレジストリにプッシュされます。
ファンクションの定義は、OCIファンクション・サーバーにメタデータとして格納されます。この定義ではファンクションの実行方法が説明されており、次のものが含まれます:
- ファンクションの呼出し時にプルするDockerイメージ
- ファンクションを実行できる最大時間
- ファンクションで消費できるメモリーの最大量
「OCI Functions」では、コンソールにファンクションおよびファンクションがグループ化されているアプリケーションが表示されます。
Helloworldファンクションの作成、デプロイおよび呼出しを参照してください。
呼出し 🔗
OCI関数では、関数のコール(または呼出し)時に関数のコードが実行されます。OCI Functionsにデプロイしたファンクションを次により呼び出すことができます:
- Fn ProjectのCLI。
- Oracle Cloud Infrastructure SDK。
- ファンクションの呼出しエンドポイントへの署名付きHTTPリクエスト。すべてのファンクションに呼出しエンドポイントがあります。
- その他のOracle Cloudサービス(イベント・サービスでイベントによりトリガーされるなど)または外部サービス。
ファンクションを初めて起動すると、OCIファンクションは、指定したDockerレジストリからファンクションのDockerイメージを取得し、Dockerコンテナとして実行してファンクションを実行します。同じファンクションに対する後続のリクエストがある場合、OCIファンクションはそれらのリクエストを同じコンテナに送ります。アイドル時間が経過すると、Dockerコンテナは削除されます。
OCI Functionsでは、メトリック・チャートでファンクションの呼出しに関する情報を示します。
ファンクションの呼出しを参照してください。
トリガー 🔗
トリガーは、システム内の他の場所にあるアクションの結果であり、OCIファンクション内のファンクションを呼び出すリクエストを送信します。たとえば、イベント・サービスのイベントによって、トリガーがOCI関数にファンクションの呼出しを行うように送信される場合があります。また、トリガーにより、定義された時間ベースのスケジュールでファンクションを呼び出すように通常のリクエストを送信することもできます。
ファンクションはどのトリガーにも関連付けられていない場合や、1つまたは複数のトリガーに関連付けることができる場合があります。