ファンクションの更新

機能の更新について調べます。

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

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

コンソール、Fn ProjectのCLIおよびAPIを使用してファンクションを更新できます。「ファンクションの更新」を参照してください。

イメージ・ダイジェストに関するノート

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

OCIファンクションを使用してファンクションを作成する場合は、ファンクションのベースとなるイメージの特定バージョンの名前およびタグを指定します。その後の非一貫性を回避するために、OCI Functionsでは、特定のバージョンのイメージの一意のダイジェストも記録します。

デフォルトでは、更新されたバージョンのイメージを、ファンクションのベースとなるイメージの元のバージョンと同じ名前およびタグを使用してDockerレジストリにプッシュすると、OCIファンクションでは、元のダイジェストを使用してイメージの元のバージョンがプルされます。これが必要な動作である場合もあります。ただし、OCIファンクションでイメージの後のバージョンをプルする場合は、OCIファンクションで使用されるダイジェストを明示的に変更して、次のいずれかの方法でプルするイメージのバージョンを識別できます:

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

    fn update function acmeapp acme-func --image phx.ocir.io/ansh81vru1zp/acme-repo/acme-func:0.0.4 --annotation oracle.com/oci/imageDigest=\"\" 

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

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

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

    OCI関数は、ファンクションのベースとなるイメージに記録されたダイジェストを、指定するダイジェストに更新します。

  • コンソールを使用して、「ファンクション情報」タブの「ファンクションの編集」をクリックし、ファンクションの現在のベースとなるイメージのバージョンの元の名前とタグを再選択し、「変更の保存」をクリックします。OCIファンクションは、ファンクションのベースとなるイメージに記録されたダイジェストを更新します。
  • Oracle Cloud Infrastructure APIまたはOracle Cloud Infrastructure SDKを使用します(詳細は、REST APIおよびSDKs and the CLIを参照)。