Mise à jour des fonctions

Découvrez la mise à jour des fonctions.

Si vous avez précédemment créé une définition de fonction dans le serveur du service des fonctions pour OCI, vous pouvez modifier certaines propriétés de la fonction, mais pas toutes. Par exemple, vous pouvez modifier la durée maximale d'exécution d'une fonction, mais vous ne pouvez pas modifier son nom.

Vous pouvez modifier l'image Docker sur laquelle se base une fonction. Si vous voulez modifier l'image, l'image de remplacement doit être appropriée pour être utilisée avec le service des fonctions pour OCI et doit déjà avoir été poussée vers le registre Docker. Avec l'image de remplacement dans le registre Docker, vous pouvez mettre à jour la définition d'une fonction afin qu'elle soit basée sur l'image de remplacement, comme décrit dans cette rubrique. Si l'image de remplacement a le même nom et le même marqueur que l'image sur laquelle la fonction a été initialement basée, voir Notes sur les condensés d'image.

Vous pouvez mettre à jour les fonctions à l'aide de la console, de l'interface de ligne de commande Fn Project et de l'API. Voir Mise à jour d'une fonction.

Notes sur les condensés d'image

Les images dans un registre Docker sont identifiées par un référentiel, un nom et un marqueur. En outre, Docker attribue un condensé alphanumérique unique à chaque version d'une image. Lors de la transmission d'une image Docker mise à jour, il est recommandé d'affecter un nouveau marqueur à l'image mise à jour pour l'identifier, plutôt que de réutiliser un marqueur existant. Cependant, même si vous poussez une image mise à jour et que vous lui donnez le même nom et le même marqueur que ceux d'une version antérieure, la dernière version chargée aura un condensé différent de la version précédente.

Lorsque vous créez une fonction avec le service des fonctions pour OCI, vous spécifiez le nom et le marqueur d'une version particulière d'une image sur laquelle baser la fonction. Pour éviter des incohérences ultérieures, le service des fonctions pour OCI enregistre également le condensé unique de cette version particulière de l'image.

Par défaut, si vous poussez une version mise à jour d'une image vers le registre Docker avec le même nom et le même marqueur que la version initiale de l'image sur laquelle une fonction est basée, le service des fonctions pour OCI continuera d'utiliser le condensé initial pour extraire la version initiale de l'image. C'est peut-être le comportement que vous recherchez. En revanche, si vous voulez que le service des fonctions pour OCI extrait la version la plus récente de l'image, vous pouvez modifier explicitement le digest utilisé par le service des fonctions pour identifier la version de l'image à extraire de l'une des façons suivantes :

  • Utilisez la commande fn update function et spécifiez le nom et le marqueur initiaux de la version de l'image sur laquelle vous voulez baser la fonction. Par exemple :

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

    Le service des fonctions pour OCI met à jour le condensé enregistré pour l'image sur laquelle est basée la fonction pour qu'il soit celui de l'image dans le registre Docker qui a le nom et le marqueur que vous avez indiqués.

  • Utilisez la commande fn update function et spécifiez le condensé de la version de l'image sur laquelle vous voulez que la fonction soit basée. Par exemple :

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

    Le service des fonctions pour OCI met à jour le condensé enregistré pour l'image sur laquelle est basée la fonction afin qu'il corrige ce dernier.

  • Utilisez la console et sélectionnez Modifier dans l'onglet Détails de la fonction, sélectionnez de nouveau le nom et le marqueur initiaux de la version de l'image sur laquelle la fonction est actuellement basée, puis sélectionnez Enregistrer les modifications. OCI Functions mettra à jour le condensé enregistré pour l'image sur laquelle est basée la fonction.
  • Utilisez l'API Oracle Cloud Infrastructure ou une trousse SDK Oracle Cloud Infrastructure (pour plus d'informations, voir APIs REST et SDK et l'interface de ligne de commande).