OCI Functionsの概念
OCI Functionsを使用する前に理解する必要がある主な概念についてご確認ください。
ファンクション開発者
Oracle Cloud Infrastructureユーザーは、OCI Functionsを使用してファンクションを作成およびデプロイすると、「ファンクション開発者」と呼ばれます。OCI Functionsを使用するには、ファンクション開発者にはOracle Cloud Infrastructureユーザー・アカウントが必要です。そのユーザー・アカウントは、適切なポリシーによりファンクション関連リソースへのアクセス権たが付与されたグループに属している必要があります。
OCI Functionsで使用するグループおよびユーザーの作成を参照してください(まだ存在しない場合)。
アプリケーション
OCIファンクションでは、アプリケーションは次のとおりです:
- ファンクションの論理グループ
- アプリケーションのすべてのファンクションにリソースを割り当てて構成する方法
- アプリケーション内のすべてのファンクションで使用できる構成変数を格納する共通コンテキスト
- ファンクションの実行時分離を保証する方法
OCIファンクションでアプリケーションを定義するときは、アプリケーションでファンクションを実行するサブネットを指定します。アプリケーションのファンクションのロギングを有効にするかどうかも指定します。
様々なアプリケーションのファンクションが同時に呼び出されるとき、OCIファンクションは、それらのファンクションの実行が互いに分離されることを確認します。
ベスト・プラクティスは、効率性とパフォーマンスを向上させるために、複数のファンクションを1つのアプリケーションにグループ化することです。
OCIファンクションでは、コンソールにアプリケーションとそのファンクションが表示されます。
アプリケーションの作成を参照してください。
ファンクション
OCI関数の関数は次のとおりです:
- 小規模だが強力なコード・ブロック(通常は1つの単純な処理を実行)
- アプリケーションにグループ化される
- 指定したDockerレジストリにDockerイメージとして格納される
- CLIコマンドまたは署名付きHTTPリクエストに応答して呼び出される
Fn ProjectのCLIを使用してOCI Functionsにファンクションをデプロイする場合、そのファンクションは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つまたは複数のトリガーに関連付けることができる場合があります。