Helloworldファンクションの作成、デプロイおよび呼出し
OCI Functionsでhelloworldファンクションを作成、デプロイおよび起動する方法をご確認ください。
OCI Functionsの使用を開始するには、Fn Project CLIコマンドを使用して次のことを行います:
- javaで記述された単純なhelloworldファンクションを作成する
- OCI Functions用に構成されているDockerレジストリにイメージをプッシュする
- OCIファンクションでアプリケーションにファンクションをデプロイする
- ファンクションを呼び出す
OCI Functionsを開始するには:
- ファンクションQuickStartガイドのステップが完了していることを確認します。
- ファンクション開発者としてコンソールにサインインします。
-
コンソールを使用してOCI Functionsで新規アプリケーションを作成します:
- ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「ファンクション」で、「アプリケーション」をクリックします。
- OCI関数で使用するリージョンを選択します。
Fn ProjectのCLIコンテキストで指定されているDockerレジストリと同じリージョンを使用することをお薦めします(Oracle Cloud Infrastructureに接続するためのFn ProjectのCLIコンテキストの作成を参照)。
-
Fn ProjectのCLIコンテキストで指定されているコンパートメントを選択します( Oracle Cloud Infrastructureに接続するためのFn ProjectのCLIコンテキストの作成を参照)。
「アプリケーション」ページには、コンパートメントにすでに定義されているアプリケーションが表示されます。
-
「アプリケーションの作成」をクリックし、次を指定します:
- 新規アプリケーションの名前をhelloworld-appと指定します。
-
ファンクションを実行するVCNおよびサブネット(または最大3つのサブネット)。たとえば、acme-vcn-01というVCNとPublic Subnet IHsY:US-PHOENIX-AD-1というパブリック・サブネットがあるとします。パブリック・サブネットにはVCN内のインターネット・ゲートウェイが必要で、プライベート・サブネットにはVCN内のサービス・ゲートウェイが必要です。リージョナル・サブネットが定義されている場合、そのサブネットを選択し、可用性ドメイン全体でフェイルオーバーを実装しやすくすることがベスト・プラクティスです。リージョナル・サブネットが定義されておらず、高可用性の要件を満たす必要がある場合、複数のサブネットを選択します。サブネットは、Fn ProjectのCLIコンテキストで指定されているDockerレジストリと同じリージョン内にあることをお薦めします(Oracle Cloud Infrastructureに接続するためのFn ProjectのCLIコンテキストの作成を参照)。
- 「作成」をクリックします。
-
ファンクション開発者として開発環境にログインします。
-
ターミナル・ウィンドウで次のように入力してhelloworld javaファンクションを作成します。
fn init --runtime java helloworld-func
helloworld-funcというディレクトリが作成され、次のものが含まれます:
- func.yamlというファンクション定義ファイル。ファンクションの構築と実行に最低限必要な情報が含まれています。func.yamlファイルに含めることができる追加のパラメータについては、Fn Projectのドキュメントを参照してください。
- helloworldファンクションのソースファイルとディレクトリを含む/srcディレクトリ(/src/main/java/com/example/fn/HelloFunction.javaを含む)。
- pom.xmlというMaven構成ファイル。ソース・ファイルからファンクションをコンパイルするために必要なプロジェクト・アーティファクトおよび依存性を指定します。
- ディレクトリを、新たに作成したhelloworld-funcディレクトリに変更します。
-
次の単一のFn Projectコマンドを入力して、ファンクションおよびその依存関係をhelloworld-funcというDockerイメージとして作成し、そのイメージを指定したDockerレジストリにプッシュし、そのファンクションをhelloworld-appでOCIファンクションにデプロイします。
fn -v deploy --app helloworld-app
-v
オプションは、Fn Projectコマンドが実行している内容の詳細のみを表示します(「OCI関数でのFn ProjectのCLIの使用」を参照)。 - (オプション)指定されたDockerレジストリがOracle Cloud Infrastructure Registryである場合、コンソールを使用して、helloworld-funcイメージがOracle Cloud Infrastructure Registryに正常にプッシュされたことを確認します:
- ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「コンテナとアーティファクト」で、「コンテナ・レジストリ」をクリックします。
-
レジストリのリージョンを選択します。
アクセス権のあるレジストリ内のすべてのリポジトリが表示されます。プッシュしたイメージは、次から構築された名前を持つ新しいリポジトリに格納されます:
- Fn ProjectのCLIコンテキスト内のDockerレジストリのアドレス内のリポジトリ名接頭辞(Oracle Cloud Infrastructureに接続するためのFn ProjectのCLIコンテキストの作成を参照)
- helloworld-funcイメージの名前
たとえば、新規リポジトリを
acme-repo/helloworld-func
と呼びます。 - 新しいリポジトリの名前をクリックします。Oracle Cloud Infrastructure Registryにプッシュされたhelloworld-funcイメージの詳細が表示されます。
-
(オプション)コンソールを使用して、ファンクションがOCIファンクションに正常にデプロイされていることを確認します。
- ナビゲーション・メニューを開き、「開発者サービス」をクリックします。「ファンクション」で、「アプリケーション」をクリックします。
-
Fn ProjectのCLIコンテキストで指定されているコンパートメントを選択します( Oracle Cloud Infrastructureに接続するためのFn ProjectのCLIコンテキストの作成を参照)。
「アプリケーション」ページには、helloworld-appというアプリケーションが作成されたことが示されています。
-
helloworld-appアプリケーションをクリックして、その中のファンクションを表示します。
「ファンクション」ページに、helloworld-funcファンクションがOCIファンクションにデプロイされたことが示されています。
-
ターミナル・ウィンドウで、次のように入力してhelloworld-funcファンクションを呼び出します:
fn invoke helloworld-app helloworld-func
「Hello World !」メッセージが表示されます。
完了しました。最初のファンクションが正常に作成され、OCI Functionsにデプロイされました。