ファンクションの更新
イメージベースの関数やコード専用関数など、OCI関数の更新について説明します。
OCI関数で以前にファンクション定義を作成していた場合、そのファンクションのプロパティの一部(すべてではなく)を変更できます。たとえば、ファンクションの実行が許可されている最大時間を変更できますが、ファンクション名は変更できません。
更新できるプロパティは、ファンクション・ソース・タイプによって異なります。
- イメージベース・ファンクションの場合は、ファンクションの基礎となるDockerイメージを変更します。イメージを変更する場合は、置換イメージがOCI Functionsでの使用に適しており、Dockerレジストリにすでにプッシュされている必要があります。置換イメージの名前とタグが、ファンクションが元々ベースとされていたイメージと同じ場合は、イメージ・ベースのファンクションのイメージ・ダイジェストに関するノートを参照してください。
- コード専用関数の場合は、関数アーカイブ、アーカイブソース、サポートされるランタイムの Handlerプロパティー、および実行時設定を更新できます。コードのみの関数の更新を参照してください。
コンソール、CLIコマンドおよびAPIを使用してファンクションを更新できます。使用可能なツールおよびプロパティは、ファンクション・ソース・タイプによって異なります。ファンクションの更新およびコードのみのファンクションの更新を参照してください。
イメージベース関数のイメージダイジェストに関するノート
Dockerレジストリ内のイメージは、リポジトリ、名前およびタグによって識別されます。さらに、Dockerでは、イメージの各バージョンに一意の英数字のダイジェストが付与されます。更新されたDockerイメージをイメージベース・ファンクションにプッシュする場合は、既存のタグ付けを再利用するかわりに、最新のイメージに特定するための新しいタグを提供することを推奨します。ただし、更新されたイメージをプッシュして、そのイメージに以前のバージョンと同じ名前およびタグを付ける場合でも、新しくプッシュされたバージョンのダイジェストは、以前のバージョンとは異なります。
OCI関数を使用してイメージベースのファンクションを作成する場合は、ファンクションのベースとするイメージの特定のバージョンの名前およびタグを指定します。その後の非一貫性を避けるために、OCI Functionsでは、特定バージョンのイメージの一意のダイジェストも記録します。
デフォルトでは、更新されたバージョンのイメージが、イメージ・ベースとなる元のバージョンのイメージと同じ名前およびタグでDockerレジストリにプッシュされると、OCI Functionsでは、元のダイジェストを使用してイメージの元のバージョンがプルされ続けます。これが必要な動作である場合もあります。ただし、OCI Functionsでイメージの後のバージョンをプルする場合は、OCI Functionsで使用されるダイジェストは明示的に変更して、次のいずれかの方法でプルするイメージのバージョンを識別できます:
-
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 Functionsは、ファンクションのベースとなるイメージに記録されたダイジェストを更新します。
- Oracle Cloud Infrastructure APIまたはOracle Cloud Infrastructure SDKを使用します(詳細は、REST APIおよびSDKs and the CLIを参照)。