Helloworldファンクションの作成、デプロイおよび呼出し

OCIファンクションの使用を開始するには、Fn ProjectのCLIコマンドを使用して次のことを行います:

  • javaで記述された単純なhelloworldファンクションを作成する
  • OCIファンクション用に構成されているDockerレジストリにイメージをプッシュする
  • OCIファンクションでアプリケーションにファンクションをデプロイする
  • ファンクションを呼び出す
ヒント

このトピックのいずれかのステップを正常に完了できない場合は、一般的な問題の解決策を確認してください(OCI関数のトラブルシューティングを参照)。

OCIファンクションを開始するには:

  1. ファンクションQuickStartガイドのステップが完了していることを確認します。
  2. ファンクション開発者としてコンソールにサインインします。
  3. コンソールを使用してOCIファンクションで新規アプリケーションを作成します:

    1. コンソールナビゲーション・メニューを開き、「開発者サービス」をクリックします。「関数」で「アプリケーション」をクリックします。
    2. OCIファンクションで使用するリージョンを選択します。Oracleでは、Fn ProjectのCLIコンテキストで指定されているDockerレジストリと同じリージョンを使用することをお薦めします(Oracle Cloud Infrastructureに接続するFn ProjectのCLIコンテキストの作成を参照)。
    3. Fn ProjectのCLIコンテキストで指定されているコンパートメントを選択します( Oracle Cloud Infrastructureへの接続のためのFn Project CLIコンテキストの作成を参照してください)。

      「アプリケーション」ページには、コンパートメントにすでに定義されているアプリケーションが表示されます。

    4. 「アプリケーションの作成」をクリックし、次を指定します:

      • 新規アプリケーションの名前をhelloworld-appと指定します。
      • ファンクションを実行するVCNおよびサブネット(または最大3つのサブネット)。たとえば、acme-vcn-01というVCNとPublic Subnet IHsY:US-PHOENIX-AD-1というパブリック・サブネットがあるとします。パブリック・サブネットにはVCN内のインターネット・ゲートウェイが必要であり、プライベート・サブネットにはVCN内のサービス・ゲートウェイが必要です。リージョナル・サブネットが定義されている場合、そのサブネットを選択し、可用性ドメイン全体でフェイルオーバーを実装しやすくすることがベスト・プラクティスです。リージョナル・サブネットが定義されておらず、高可用性の要件を満たす必要がある場合、複数のサブネットを選択します。Oracleでは、サブネットはFn ProjectのCLIコンテキストで指定されているDockerレジストリと同じリージョン内にあることをお薦めします(Oracle Cloud Infrastructureに接続するためのFn ProjectのCLIコンテキストの作成を参照)。

    5. 「作成」をクリックします。
  4. ファンクション開発者として開発環境にログインします。

  5. ターミナル・ウィンドウで次のように入力して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構成ファイル。ソース・ファイルからファンクションをコンパイルするために必要なプロジェクト・アーティファクトおよび依存性を指定します。
  6. ディレクトリを、新たに作成したhelloworld-funcディレクトリに変更します。
  7. 次の1つのFn Projectコマンドを入力して、ファンクションおよびその依存関係をhelloworld- funcというDockerイメージとして作成し、そのイメージを指定したDockerレジストリにプッシュし、helloworld- appでファンクションをOCIファンクションにデプロイします。

    fn -v deploy --app helloworld-app

    -vオプションは、Fn Projectコマンドが実行している内容の詳細のみを表示します(OCIファンクションでのFnプロジェクトCLIの使用を参照)。

  8. (オプション)指定されたDockerレジストリがOracle Cloud Infrastructure Registryである場合、コンソールを使用して、helloworld-funcイメージがOracle Cloud Infrastructure Registryに正常にプッシュされたことを確認します:
    1. コンソールナビゲーション・メニューを開き、「開発者サービス」をクリックします。「コンテナ」で、「コンテナ・レジストリ」をクリックします。
    2. レジストリのリージョンを選択します。

      アクセス権のあるレジストリ内のすべてのリポジトリが表示されます。プッシュしたイメージは、次から構築された名前を持つ新しいリポジトリに格納されます:

      たとえば、新規リポジトリをacme-repo/helloworld-funcと呼びます。

    3. 新しいリポジトリの名前をクリックします。Oracle Cloud Infrastructure Registryにプッシュされたhelloworld-funcイメージの詳細が表示されます。
  9. (オプション)コンソールを使用して、ファンクションが正常にOCIファンクションにデプロイされていることを確認します。

    1. コンソールナビゲーション・メニューを開き、「開発者サービス」をクリックします。「関数」で「アプリケーション」をクリックします。
    2. Fn ProjectのCLIコンテキストで指定されているコンパートメントを選択します( Oracle Cloud Infrastructureへの接続のためのFn Project CLIコンテキストの作成を参照してください)。

      「アプリケーション」ページには、helloworld-appというアプリケーションが作成されたことが示されています。

    3. helloworld-appアプリケーションをクリックして、その中のファンクションを表示します。

      「ファンクション」ページは、helloworld- funcファンクションがOCIファンクションにデプロイされたことを示しています。

  10. ターミナル・ウィンドウで、次のように入力してhelloworld-funcファンクションを呼び出します:

    fn invoke helloworld-app helloworld-func

    「Hello World !」メッセージが表示されます。

完了しました。最初のファンクションが正常に作成され、OCIファンクションにデプロイされました。