Oracle Cloud Infrastructureドキュメント

ファンクションの更新

Oracle Functionsサーバーでファンクション定義を以前に作成した場合、ファンクションのプロパティの一部を変更できますが、すべてを変更することはできません。 たとえば、ファンクションの実行を許可する最大時間を変更できますが、ファンクション名は変更できません。

ファンクションのベースとなるDockerイメージを変更できます。 イメージを変更する場合は、Oracle Functionsでの使用に適した代替イメージが、Dockerレジストリにすでにプッシュされていることが必要です。 Dockerレジストリの置換イメージを使用すると、このトピックで説明するように、置換イメージに基づくようにファンクション定義を更新できます。 置換イメージの名前とタグが、ファンクションの元になったイメージと同じ場合は、「イメージ・ダイジェストについて」を参照してください。

コンソールFn Project CLIおよびAPIを使用して、ファンクションを更新できます。

コンソールを使用した既存のファンクションの更新

コンソールを使用してOracle Functionsサーバーの既存のファンクションを更新するには:

  1. ファンクション開発者としてコンソールにログインします。
  2. コンソールで、「ナビゲーション・メニュー」を開きます。 ソリューションおよびプラットフォームの下で、開発者サービスに移動して「ファンクション」をクリックします。
  3. Oracle Functionsで使用するリージョンを選択します。 Oracleは、Fn Project CLIコンテキストで指定されたDockerレジストリと同じリージョンを使用することをお薦めします(「6. Oracle Cloud Infrastructureに接続するFn Project CLIコンテキストの作成」を参照)。
  4. Fn Project CLIコンテキストで指定されたコンパートメントを選択します(「6. Oracle Cloud Infrastructureに接続するFn Project CLIコンテキストの作成」を参照)。

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

  5. 更新する既存のファンクションを含むアプリケーションの名前をクリックします。

  6. 更新するファンクションの名前をクリックします。
  7. 「編集」をクリックし、次のプロパティの一部またはすべてを更新します:
    • イメージ: 現在選択されているリージョンのOracle Cloud Infrastructureレジストリ内の既存のイメージ。 最初にイメージ・リポジトリを選択し、次にイメージ・バージョンを選択します。 イメージの名前およびタグが、ファンクションの元になったイメージと同じ場合は、「イメージ・ダイジェストについて」を参照してください。
    • メモリー: ファンクションが実行時に使用できるメモリーの最大量。
    • タイムアウト: ファンクションの実行最大許容時間。
  8. 「保存」をクリックして、Oracle Functionsサーバーのファンクションを更新します。

ファンクションの更新されたプロパティがコンソールに表示されます。

Fn Project CLIコマンドの使用方法

Fn Project CLIを使用してOracle Functionsサーバーの既存のファンクションを更新するには:

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

  2. ターミナル・ウィンドウで、次を入力して既存のファンクションのプロパティを更新します:

    $ fn update function <app-name> <function-name> <image-name> --<property> <value>

    説明:

    • <app-name>は、既存のファンクションを含む既存のアプリケーションの名前です。
    • <function-name>は、更新する既存のファンクションの名前です。
    • <image-name> (オプション)は、以前に指定されたイメージではなく、ファンクションのベースにするDockerレジストリ内の既存のイメージの名前です。 イメージの名前およびタグが、ファンクションの元になったイメージと同じ場合は、「イメージ・ダイジェストについて」を参照してください。
    • <property> <value> (オプション)は更新するプロパティであり、新しい値が必要です。 fn update function --helpを入力して、プロパティおよび有効な値のリストを表示します。

    例えば:

    $ fn update function acmeapp acme-func phx.ocir.io/ansh81vru1zp/acme-repo/acme-func:0.0.4 --timeout 60
    $ fn update function acmeapp acme-func --memory 256

    既存のファンクションのプロパティが、指定した値で更新されます。

  3. 次を入力してファンクションが更新されていることを確認します:

     $ fn inspect function <app-name> <function-name>

    例えば:

    $ fn inspect function acme-app acme-func
    
    {
        "annotations": {
            "fnproject.io/fn/invokeEndpoint": "https://fht7ns4mn2q.us-phoenix-1.functions.oci.oraclecloud.com/20181201/functions/ocid1.fnfunc.oc1.phx.aaaa____uxoa/actions/invoke",							
            "oracle.com/oci/compartmentId": "ocid1.compartment.oc1..aaaaaaaaw______nyq"
        },
        "app_id": "ocid1.fnapp.oc1.phx.aaaaaaaaaf______r3ca",
        "created_at": "2018-07-26T12:50:53.000Z",
        "format": "default",
        "id": "ocid1.fnfunc.oc1.phx.aaaa____uxoa",
        "image": "phx.ocir.io/ansh81vru1zp/acme-repo/acme-func:0.0.4",
        "memory": 256,
        "name": "acme-func",
        "timeout": 60,
        "updated_at": "2018-07-26T13:59:18.000Z"
    }

APIの使用

APIおよび署名リクエストの使用については、REST APIおよび「セキュリティ資格証明」を参照してください。 SDKの詳細は、「ソフトウェア開発キットとコマンドライン・インタフェース」を参照してください。

ファンクションを更新するにはUpdateFunction API操作を使用します。

イメージ・ダイジェストについて

Dockerレジストリのイメージは、リポジトリ、名前およびタグで識別されます。 さらに、Dockerには、それぞれのバージョンのイメージに一意の英数字ダイジェストが用意されています。 更新されたDockerイメージをプッシュする場合、既存のタグを再利用するのではなく、更新されたイメージに新しいタグを付けて識別することをお薦めします。 ただし、更新されたイメージをプッシュし、そのイメージに以前のバージョンと同じ名前とタグを付ける場合でも、新しくプッシュされたバージョンは以前のバージョンとは異なるダイジェストを持ちます。

Oracle Functionsでファンクションを作成するときは、ファンクションのベースにする特定バージョンのイメージの名前とタグを指定します。 Oracle Functionsでは、この特定のバージョンのイメージの一意のダイジェストも記録されます。

デフォルトでは、イメージの更新バージョンをDockerレジストリにプッシュし、ファンクションのベースとなるイメージのオリジナル・バージョンと同じ名前とタグを使用する場合、Oracle Functionsは元のダイジェストを引き続き使用して、イメージのオリジナル・バージョンを取得します。 これは、必要な動作である場合があります。 ただし、Oracle Functionsで後のバージョンのイメージをプルする必要がある場合は、Oracle Functionsがイメージのどのバージョンを取得するのかを次のいずれかの方法で特定するために使用するダイジェストを明示的に変更できます:

  • fn update functionコマンドを使用し、ファンクションの基にするイメージのバージョンの元の名前とタグを指定します。 例えば:

    fn update function acmeapp acme-func phx.ocir.io/ansh81vru1zp/acme-repo/acme-func:0.0.4

    Oracle Functionsによって、ファンクションの基になるイメージに記録されたダイジェストが、指定した名前およびタグを持つDockerレジストリのイメージのダイジェストに更新されます。

  • fn update functionコマンドを使用して、ファンクションのベースにするイメージのバージョンのダイジェストを指定します。 例えば:

    fn update function acmeapp acme-func --annotation oracle.com/oci/imageDigest='"sha256:8af7cb8d7______c498c0"'

    Oracle Functionsによって、ファンクションのベースとなるイメージに記録されたダイジェストが、指定したダイジェストとして更新されます。

  • コンソールを使用し、「ファンクション情報」タブの「ファンクションの編集」をクリックして、ファンクションのベースになっているイメージのバージョンの元の名前とタグを再選択し、「変更の保存」をクリックします。 Oracle Functionsは、ファンクションの基になるイメージに記録されたダイジェストを更新します。
  • Oracle Cloud Infrastructure APIまたはOracle Cloud Infrastructure SDKを使用します(詳細は、REST APIおよび「ソフトウェア開発キットとコマンドライン・インタフェース」を参照)。