Création d'un contexte d'interface de ligne de commande Fn Project pour se connecter à Oracle Cloud Infrastructure
Découvrez comment créer un contexte d'interface de ligne de commande Fn Project pour vous connecter à Oracle Cloud Infrastructure et l'utiliser avec le service des fonctions pour OCI.
Avant d'utiliser le service des fonctions pour OCI, vous devez configurer l'interface de ligne de commande Fn Project pour vous connecter à votre location Oracle Cloud Infrastructure.
Lors de l'installation initiale, l'interface de ligne de commande Fn Project est configurée pour un "contexte" de développement local. Pour configurer l'interface de ligne de commande Fn Project pour vous connecter à votre location Oracle Cloud Infrastructure, vous devez créer un nouveau contexte. Le contexte spécifie les points d'extrémité du service des fonctions pour OCI, l'OCID du compartiment auquel appartiennent les fonctions déployées, ainsi que l'adresse du registre Docker à partir de et vers laquelle pousser et extraire des images.
Vous pouvez définir plusieurs contextes, chacun stocké dans un fichier de contexte différent dans le format .yaml. Par défaut, les fichiers de contexte individuels sont stockés dans le répertoire ~/.fn/contexts
. Le fichier ~/.fn/config.yaml
spécifie le fichier contexte utilisé par Fn Project.
Pour créer un contexte, vous pouvez créer un nouveau fichier de contexte manuellement et modifier le fichier ~/.fn/config.yaml
pour qu'il pointe vers ce fichier. Vous pouvez également utiliser l'interface de ligne de commande Fn Project pour créer interactivement le nouveau fichier de contexte et indiquer à l'interface de ligne de commande Fn Project de commencer à utiliser ce fichier, tel qu'il est décrit ci-dessous.
Si vous utilisez Cloud Shell comme environnement de développement, deux contextes d'interface de ligne de commande Fn Project ont déjà été créés pour vous (contexte par défaut et contexte pour la région courante). Pour plus d'informations, voir le guide du service des fonctions pour OCI sur Cloud Shell QuickStart. Il vous suffit de copier et de coller les commandes de la page Démarrage dans la fenêtre Cloud Shell :
- pour indiquer à l'interface de ligne de commande Fn Project d'utiliser le contexte pour la région courante
- pour fournir l'OCID du compartiment qui sera responsable des fonctions déployées
- pour fournir l'adresse Oracle Cloud Infrastructure Registry que vous voulez utiliser avec le service des fonctions pour OCI
Les instructions de cette rubrique supposent que :
- vous n'utilisez pas Cloud Shell en tant qu'environnement de développement
- Vous utilisez Linux.
- vous avez déjà terminé les étapes sous Installation de l'interface de ligne de commande Fn Project
Pour créer un fichier de contexte à l'aide de l'interface de ligne de commande Fn Project :
-
Connectez-vous à votre environnement de développement en tant que développeur de fonctions.
-
Dans une fenêtre de terminal, créez le nouveau contexte d'interface de ligne de commande Fn Project pour Oracle Cloud Infrastructure en entrant :
fn create context <my-context> --provider oracle
où <my-context> est un nom de votre choix. Par exemple :
fn create context johns-oci-context --provider oracle
Notez que vous spécifiez
--provider oracle
pour activer l'authentification et l'autorisation à l'aide des demandes de signature, des clés privées, des groupes d'utilisateurs et des politiques qui accordent les autorisations à ces groupes d'utilisateurs dans Oracle Cloud Infrastructure. -
Indiquez que l'interface de ligne de commande Fn Project doit utiliser le nouveau contexte en entrant :
fn use context <my-context>
où <my-context> est le nom que vous avez spécifié à l'étape précédente. Par exemple :
fn use context johns-oci-context
-
Configurez le nouveau contexte avec l'OCID du compartiment dans lequel doivent se trouver les fonctions déployées (vous avez peut-être créé un nouveau compartiment spécifiquement pour cette raison, voir Création de compartiments pour gérer les ressources de réseau et les ressources du service des fonctions pour OCI dans la location, s'ils n'existent pas déjà) en entrant :
fn update context oracle.compartment-id <compartment-ocid>
Par exemple :
fn update context oracle.compartment-id ocid1.compartment.oc1..aaaaaaaarvdfa72n...
-
Configurez le nouveau contexte avec le point d'extrémité de l'API-URL à utiliser pour appeler l'API en entrant :
fn update context api-url <api-endpoint>
où
<api-endpoint>
est l'un des points d'extrémité de la liste des points d'extrémité du service des fonctions dans l'API du service des fonctions, au formathttps://functions.<region-identifier>.oci.oraclecloud.com
. Le fichier<region-identifier>
dans<api-endpoint>
correspond à l'identificateur de la région Oracle Cloud Infrastructure dans laquelle vous allez créer et déployer des fonctions. Par exemple :us-phoenix-1
.Par exemple :
fn update context api-url https://functions.us-phoenix-1.oci.oraclecloud.com
-
Configurez le nouveau contexte avec l'adresse du registre Docker (par exemple, Oracle Cloud Infrastructure Registry) à utiliser avec le service des fonctions pour OCI en entrant :
fn update context registry <region-key>.ocir.io/<tenancy-namespace>/<repo-name-prefix>
où :
-
<region-key>
est la clé de la région Oracle Cloud Infrastructure Registry. Par exemple,phx
pour Phoenix. Voir Disponibilité par région.Nous vous recommandons que le registre Docker que vous spécifiez se trouve dans la même région que le sous-réseau sur lequel vous prévoyez d'exécuter des fonctions.
-
<tenancy-namespace>
est la chaîne d'espace de nom du stockage d'objets générée automatiquement pour la location dans laquelle créer des référentiels (tel qu'indiquée sur la page Informations sur la location). Par exemple, l'espace de noms de la locationacme-dev
pourrait êtreansh81vru1zp
. Notez que, pour certaines locations plus anciennes, la chaîne d'espace de noms peut être identique au nom de la location, tout en minuscules (par exemple,acme-dev
). <repo-name-prefix>
est (facultatif) un préfixe de nom de référentiel à ajouter en préfixe aux noms des fonctions que vous déployez, pour spécifier les noms des référentiels vers lesquels pousser les images de fonction. L'utilisation d'un préfixe de nom de référentiel peut faciliter l'organisation et le contrôle de l'accès aux référentiels du registre. Voir Notes sur les noms de référentiel et les préfixes de nom de référentiel.
Par exemple :
fn update context registry phx.ocir.io/ansh81vru1zp/acme-repo
-
-
(Facultatif) Configurez le nouveau contexte avec l'OCID du compartiment pour les référentiels vers et depuis lesquels le service des fonctions pour OCI doit pousser et extraire des images de fonction, en entrant :
fn update context oracle.image-compartment-id <compartment-ocid>
Par exemple :
fn update context oracle.image-compartment-id ocid1.compartment.oc1..aaaaaaaaquqe______z2q
Si vous ne spécifiez pas de valeur pour
oracle.image-compartment-id
, le service des fonctions pour OCI pousse et extrait des images vers et depuis les référentiels du compartiment racine. Dans les deux cas, un énoncé de politique approprié doit exister pour vous permettre de gérer les référentiels dans le compartiment (soit le compartiment spécifié paroracle.image-compartment-id
, soit le compartiment racine). Voir Énoncés de politique permettant aux utilisateurs du service des fonctions pour OCI d'accéder aux référentiels Oracle Cloud Infrastructure Registry.Le service des fonctions pour OCI construit le nom du référentiel pour une image de fonction en ajoutant le préfixe du nom du référentiel au nom de la fonction. Les noms de référentiel sont uniques dans tous les compartiments de l'ensemble de la location. Notez que le service des fonctions pour OCI se comporte comme suit en ce qui concerne les compartiments et
oracle.image-compartment-id
lors de la poussée d'une image vers un référentiel nommé :- Si un référentiel portant ce nom existe déjà dans le compartiment spécifié par
oracle.image-compartment-id
, le service des fonctions pour OCI pousse l'image vers ce référentiel. - Si un référentiel portant ce nom n'existe dans aucun compartiment (y compris dans le compartiment racine) de la location, le service des fonctions pour OCI crée un nouveau référentiel portant ce nom dans le compartiment spécifié par
oracle.image-compartment-id
et y pousse l'image. - Si un référentiel portant ce nom existe déjà dans la location mais dans un compartiment différent de celui spécifié par
oracle.image-compartment-id
, le service des fonctions pour OCI émet une erreur. Pour que le service des fonctions pour OCI réussisse à pousser l'image, vous devez régleroracle.image-compartment-id
à l'OCID du compartiment du référentiel existant ou spécifier un autre nom de référentiel (en renommant la fonction ou en spécifiant un autre préfixe de nom de référentiel).
- Si un référentiel portant ce nom existe déjà dans le compartiment spécifié par
-
(Facultatif) Vérifiez le contexte de l'interface de ligne de commande Fn Project que vous avez créé en consultant le fichier de contexte. Par exemple, en entrant :
more ~/.fn/contexts/johns-oci-context.yaml
Le fichier de contexte contient :
api-url: https://functions.us-phoenix-1.oci.oraclecloud.com provider: oracle registry: phx.ocir.io/ansh81vru1zp/acme-repo oracle.image-compartment-id: <compartment-ocid>
Lorsque vous avez terminé les étapes de cette rubrique, allez à Définition du contexte pour l'interface de ligne de commande Fn Project à l'aide du paramètre oracle.profile.
Notes sur les noms de référentiel et les préfixes de nom de référentiel
Lors du déploiement d'une fonction, l'image de la fonction est poussée vers un référentiel dans le registre spécifié par le paramètre registry:
dans le contexte de l'interface de ligne de commande Fn Project. Le nom du référentiel est identique au nom de la fonction (c'est-à-dire <function-name>
) ou au nom de la fonction avec un préfixe de nom de référentiel qui lui est ajouté (c'est-à-dire <repo-name-prefix>/<function-name>
).
Lors du déploiement d'une fonction, notez ce qui suit. Si un référentiel nommé <function-name>
(ou <repo-name-prefix>/<function-name>
si vous avez spécifié <repo-name-prefix>
) n'existe pas déjà dans le registre :
- Si la propriété Créer un référentiel lors de la première poussée dans le compartiment racine du registre est réglée à Vrai, un nouveau référentiel privé est créé dans le compartiment racine
- Si la propriété Créer un référentiel lors de la première poussée dans le compartiment racine du registre est réglée à Faux, un nouveau référentiel ne peut pas être créé et la tentative de poussée de l'image de fonction échoue.
Si la propriété Créer un référentiel lors de la première poussée dans le compartiment racine du registre est réglée à Faux et qu'un référentiel approprié n'existe pas déjà, effectuez l'une des opérations suivantes avant de déployer une fonction :
- Créez un référentiel portant le même nom que la fonction et ne spécifiez pas
<repo-name-prefix>
dans le contexte de l'interface de ligne de commande Fn Project. Par exemple, si la fonction est nomméehello-world
, créez un nouveau référentiel nomméhello-world
. - Créez une fonction portant le même nom qu'un référentiel existant et ne spécifiez pas
<repo-name-prefix>
dans le contexte de l'interface de ligne de commande Fn Project. Par exemple, si le référentiel existant est appeléhello-galaxy
, nommez la nouvelle fonctionhello-galaxy
. - Si vous voulez utiliser un préfixe de nom de référentiel pour organiser et contrôler l'accès aux référentiels, spécifiez une valeur
<repo-name-prefix>
dans le contexte de l'interface de ligne de commande Fn Project et créez également un référentiel portant un nom qui inclut à la fois le préfixe de nom de référentiel et le nom de la fonction. Par exemple, pour stocker des images pour une fonction nomméehello-world
dans un référentiel nomméacme-repo/hello-world
, spécifiezphx.ocir.io/ansh81vru1zp/acme-repo
dans le contexte de l'interface de ligne de commande Fn Project et créez également un référentiel nomméacme-repo/hello-world
.