既存の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. 「アプリケーション」リスト・ページで、ファンクションを作成するアプリケーションを選択します。リストページまたはアプリケーションの検索に関するヘルプが必要な場合は、Listing Applicationsを参照してください。
    2. 「リソース」で、「ファンクション」を選択します。

      「関数」リスト・ページが開きます。選択したアプリケーションのすべての関数が表に表示されます。

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

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

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

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

    ヒント

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

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

    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操作を実行してファンクションを作成します。