既存のDockerイメージからのファンクションの作成

OCI Functionsを使用して既存のDockerイメージからファンクションを作成する方法をご覧ください。

OCIファンクション・サーバーでは、様々な方法で新しいファンクション定義を作成できます。

既存のDockerイメージに基づいて新しいファンクションを作成する場合は、OCI Functionsサーバーに格納するファンクション・メタデータを指定します。たとえば、ファンクションの実行が許可されている最大時間です。

新しいファンクションの基礎となる既存のイメージは、OCIファンクションでの使用に適している必要があります。通常は、適切なイメージを構築してプッシュするために、自分や他のユーザーはFn ProjectのCLIコマンドまたはDocker CLIコマンド(あるいはその両方)を使用します。たとえば、ファンクション・コードとファンクション・メタデータを含むfunc.yamlファイルを作成した場合(テンプレートhelloworldファンクションとfn initを使用して作成されたfunc.yamlに基づくと考えられる)、次のことが可能です:

  • fn buildを使用して、ファンクションから新しいDockerイメージを作成します。
  • Dockerレジストリにイメージをプッシュするには、docker pushを使用します。

Dockerレジストリのイメージでは、このトピックで説明するように、コンソール、CLIコマンドまたはAPI操作を使用して、イメージに基づいてファンクションを作成できます。

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

      Fn ProjectのCLIコンテキストで指定されているDockerレジストリと同じリージョンを使用することをお薦めします。Oracle Cloud Infrastructureに接続するためのFnプロジェクトのCLIコンテキストの作成を参照してください。

    4. Fn ProjectのCLIコンテキストで指定されているコンパートメントを選択します。Oracle Cloud Infrastructureに接続するためのFnプロジェクトのCLIコンテキストの作成を参照してください。

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

    5. ファンクションを作成するアプリケーションの名前をクリックします。

    6. 「ファンクションの作成」ボタンをクリックし、「既存のイメージから作成」を選択して、次の詳細を指定します:
      • 名前: 新しいファンクションの名前。機密情報の入力は避けてください。
      • リポジトリ:イメージを含む現在のリージョンのOCIコンテナ・レジストリ内のリポジトリ。
      • イメージ: 現在のリージョンのOCIコンテナ・レジストリ・リポジトリ内の既存のイメージ。イメージ・アーキテクチャは、アプリケーションのシェイプと互換性がある必要があります(ファンクションを実行するコンピュート・アーキテクチャの指定を参照)。
      • メモリー:ファンクションが実行中に使用できるメモリーの最大数。
      • タイムアウト:ファンクションを実行できる最大時間。
      • プロビジョニングされた同時実行性の有効化:実行インフラストラクチャを常時使用可能にする同時ファンクション呼出しの最小数を指定することで、ファンクションの呼出し時の初期遅延を最小限に抑えることができます。

        このオプションを選択した場合は、「プロビジョニングされた同時実行単位(PCU)」に値を入力して、同時ファンクション呼出しの最小数を指定します。入力する実際のPCU値は10の倍数である必要があります。Memoryが256Mバイトに設定されている場合、PCU値は20の倍数である必要があります。Memoryが128Mバイトに設定されている場合、PCU値は40の倍数である必要があります。使用可能なPCUの合計数は、ファンクションのサイズ、テナンシ制限、およびテナンシ内の他のファンクションに対してプロビジョニングされた同時実行性が有効になっているかどうかによって異なります。プロビジョニングされた同時実行性の詳細は、プロビジョニングされた同時実行性を使用した初期待機時間の削減を参照してください。

      • タグ付けオプション: リソースの作成権限がある場合は、そのリソースにフリーフォーム・タグを適用する権限もあります。定義済のタグを適用するには、タグ・ネームスペースを使用する権限が必要です。タグ付けの詳細は、リソース・タグを参照してください。タグを適用するかどうかが不明な場合は、このオプションをスキップするか、管理者に連絡してください。タグは後で適用できます。
    7. 次のいずれかのオプションを選択します:

      • OCI Functionsサーバーに今すぐファンクションを作成するには、「作成」をクリックします。新しいファンクションが、コンソールの、選択したアプリケーションのファンクションのリストに表示されます。
      • リソース・マネージャおよびTerraformを使用して後でファンクションを作成するには、「スタックとして保存」をクリックして、リソース定義をTerraform構成として保存します。リソース定義からのスタックの保存の詳細は、リソース作成ページからのスタックの作成を参照してください。
  • Fn ProjectのCLIを使用する

    ヒント

    時々、Fn Project CLIの新しいバージョンがリリースされます。最新バージョンがインストールされていることを定期的に確認することをお勧めします。詳細は、Fn ProjectのCLIをアップグレードするステップを参照してください。

    Fn ProjectのCLIを使用して、OCIファンクション・サーバーに、Dockerレジストリにすでにプッシュされている既存のDockerイメージから新しいファンクションを作成するには:

    1. ファンクション開発者として開発環境にログインします。

    2. ターミナル・ウィンドウで、次のように入力して新しいファンクションを作成します:

      fn create function <app-name> <function-name> <image-name>

      ここでは:

      • <app-name>は、新しいファンクションを作成する既存のアプリケーションの名前です。
      • <function-name>は、作成する新しいファンクションの名前です。機密情報の入力は避けてください。
      • <image-name>は、新しいファンクションのベースとなるDockerレジストリ内の既存のイメージの名前です。イメージ・アーキテクチャは、アプリケーションのシェイプと互換性がある必要があります(ファンクションを実行するコンピュート・アーキテクチャの指定を参照)。

      例:

      fn create function acmeapp acme-func phx.ocir.io/ansh81vru1zp/acme-repo/acme-func:0.0.3

      既存のイメージと指定した名前に基づいて、OCIファンクションに新しいファンクションが作成されます

    3. 次を入力して、新しいファンクションが作成されたことを確認します。

      fn list functions <app-name>

      例:

      $ fn list functions acme-app
      
      NAME            IMAGE
      acme-func       phx.ocir.io/ansh81vru1zp/acme-repo/acme-func:0.0.3

    OCI CLIの使用

    oci fn function createコマンドおよび必須パラメータを使用して、関数を作成します:

    oci fn function create --application-id <application-ocid> --display-name <function-name> --memory-in-mbs <memory> [OPTIONS]

    OCI CLIコマンドのフラグおよび変数オプションの完全なリストは、コマンドライン・リファレンスを参照してください。

  • CreateFunction操作を実行してファンクションを作成します。