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

OCI Functionsを使用してhelloworldファンクションを作成、デプロイおよび起動する方法を確認します。

OCI Functionsの使用を開始するには、Fn ProjectのCLIコマンドを使用して次のことをします:

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

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

OCI Functionsを開始するには:

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

    1. ナビゲーション・メニューを開き、「開発者サービス」をクリックします「ファンクション」で、「アプリケーション」をクリックします。
    2. OCIファンクションで使用するリージョンを選択します。

      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内のサービス・ゲートウェイが必要です。リージョナル・サブネットが定義されている場合、そのサブネットを選択し、可用性ドメイン全体でフェイルオーバーを実装しやすくすることがベスト・プラクティスです。リージョナル・サブネットが定義されておらず、高可用性の要件を満たす必要がある場合、複数のサブネットを選択します。We recommend that subnets are in the same region as the Docker registry specified in the Fn Project CLI context (see Creating an Fn Project CLI Context to Connect to Oracle Cloud Infrastructure).

    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. 次の単一のFn Projectコマンドを入力して、ファンクションとその依存関係をhelloworld-funcというDockerイメージとして作成し、そのイメージを指定したDockerレジストリにプッシュし、そのファンクションをhelloworld-appでOCI Functionsにデプロイします:

    fn -v deploy --app helloworld-app

    -vオプションは、Fn Projectコマンドが実行している内容の詳細のみを表示します(OCI関数でのFn Projectの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 Functionsに正常にデプロイされていることを確認します。

    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ファンクションにデプロイしました。