Creazione di un contesto CLI Fn Project per connettersi a Oracle Cloud Infrastructure

Scopri come creare un contesto CLI di Fn Project per connettersi a Oracle Cloud Infrastructure e utilizzarlo con OCI Functions.

Prima di utilizzare OCI Functions, devi configurare l'interfaccia CLI Fn Project per connetterti alla tenancy Oracle Cloud Infrastructure.

Quando l'interfaccia CLI di Fn Project viene inizialmente installata, viene configurata per un 'contesto' di sviluppo locale. Per configurare l'interfaccia CLI di Fn Project in modo che si connetta alla tenancy Oracle Cloud Infrastructure, è invece necessario creare un nuovo contesto. Il contesto specifica gli endpoint OCI Functions, l'OCID del compartimento a cui appartengono le funzioni distribuite e l'indirizzo del registro Docker a cui e da cui eseguire il push e il pull delle immagini.

È possibile definire più contesti, ciascuno memorizzato in un file di contesto diverso in formato .yaml. Per impostazione predefinita, i singoli file di contesto vengono memorizzati nella directory ~/.fn/contexts. Il file ~/.fn/config.yaml specifica il file di contesto utilizzato da Fn Project.

Per creare un nuovo contesto, è possibile creare manualmente un nuovo file di contesto e modificare manualmente il file ~/.fn/config.yaml in modo da puntare a tale file. In alternativa, è possibile utilizzare l'interfaccia CLI di Fn Project per creare in modo interattivo il nuovo file di contesto e indicare all'interfaccia CLI di Fn Project di iniziare a utilizzare tale file, come descritto di seguito.

Se si utilizza Cloud Shell come ambiente di sviluppo, sono già stati creati automaticamente due contesti CLI di Fn Project (un contesto predefinito e un contesto per l'area corrente). Per ulteriori informazioni, vedere il manuale OCI Functions on Cloud Shell QuickStart Guide. È sufficiente copiare e incollare i comandi dalla pagina Guida introduttiva nella finestra Cloud Shell:

  • per indicare all'interfaccia CLI di Fn Project di utilizzare il contesto per l'area corrente
  • per fornire l'OCID del compartimento proprietario delle funzioni distribuite
  • per fornire l'indirizzo Oracle Cloud Infrastructure Registry che si desidera utilizzare con OCI Functions

Le istruzioni riportate in questo argomento presuppongono quanto segue.

Per creare un nuovo file di contesto utilizzando l'interfaccia CLI di Fn Project:

  1. Accedere all'ambiente di sviluppo come sviluppatore di funzioni.

  2. In una finestra terminale, creare il nuovo contesto CLI di Fn Project per Oracle Cloud Infrastructure immettendo:

    fn create context <my-context> --provider oracle

    dove <my-context> è un nome a tua scelta. Ad esempio:

    fn create context johns-oci-context --provider oracle

    Si noti che si specifica --provider oracle per abilitare l'autenticazione e l'autorizzazione utilizzando la firma delle richieste di Oracle Cloud Infrastructure, le chiavi private, i gruppi di utenti e i criteri che concedono le autorizzazioni a tali gruppi di utenti.

  3. Specificare che l'interfaccia CLI di Fn Project deve utilizzare il nuovo contesto immettendo:

    fn use context <my-context>

    dove <my-context> è il nome specificato nel passo precedente. Ad esempio:

    fn use context johns-oci-context
  4. Configurare il nuovo contesto con l'OCID del compartimento di cui si desidera essere proprietari delle funzioni distribuite (potrebbe essere stato creato un nuovo compartimento in modo specifico per questo scopo, vedere Creazione di compartimenti per la proprietà delle risorse di rete e delle risorse delle funzioni OCI nella tenancy, se non esistono già) immettendo:

    fn update context oracle.compartment-id <compartment-ocid>

    Ad esempio:

    fn update context oracle.compartment-id ocid1.compartment.oc1..aaaaaaaarvdfa72n...
  5. Configurare il nuovo contesto con l'endpoint API-url da utilizzare quando si chiama l'API immettendo:

    fn update context api-url <api-endpoint>

    dove <api-endpoint> è uno degli endpoint della lista degli endpoint delle funzioni nell'API delle funzioni, nel formato https://functions.<region-identifier>.oci.oraclecloud.com. <region-identifier> in <api-endpoint> è l'identificativo dell'area di Oracle Cloud Infrastructure in cui verranno create e distribuite le funzioni. Ad esempio, us-phoenix-1.

    Ad esempio:

    fn update context api-url https://functions.us-phoenix-1.oci.oraclecloud.com
  6. Configurare il nuovo contesto con l'indirizzo del registro Docker (ad esempio, Oracle Cloud Infrastructure Registry) che si desidera utilizzare con OCI Functions immettendo:

    fn update context registry <region-key>.ocir.io/<tenancy-namespace>/<repo-name-prefix>

    Dove:

    • <region-key> è la chiave dell'area Oracle Cloud Infrastructure Registry. Ad esempio, phx per Phoenix. Vedere Disponibilità per area.

      Si consiglia di specificare che il registro Docker si trovi nella stessa area della subnet in cui si intende eseguire le funzioni.

    • <tenancy-namespace> è la stringa dello spazio di nomi dello storage degli oggetti generata automaticamente della tenancy in cui creare i repository (come mostrato nella pagina Informazioni sulla tenancy). Ad esempio, lo spazio di nomi della tenancy acme-dev potrebbe essere ansh81vru1zp. Tenere presente che per alcune tenancy meno recenti, la stringa dello spazio di nomi potrebbe essere uguale al nome della tenancy in tutte le lettere minuscole (ad esempio, acme-dev).
    • <repo-name-prefix> è (facoltativamente) un prefisso del nome del repository da anteporre ai nomi delle funzioni distribuite, per specificare i nomi dei repository su cui eseguire il PUSH delle immagini delle funzioni. L'uso di un prefisso di nome repository può semplificare l'organizzazione e il controllo dell'accesso ai repository nel registro. Vedere Note sui nomi dei repository e sui prefissi dei nomi dei repository.

    Ad esempio:

    fn update context registry phx.ocir.io/ansh81vru1zp/acme-repo
  7. (Facoltativo) Configurare il nuovo contesto con l'OCID del compartimento per i repository da e verso i quali si desidera che le funzioni OCI eseguano il push e il pull delle immagini delle funzioni, immettendo:

    fn update context oracle.image-compartment-id <compartment-ocid>

    Ad esempio:

    fn update context oracle.image-compartment-id ocid1.compartment.oc1..aaaaaaaaquqe______z2q
    

    Se non si specifica un valore per oracle.image-compartment-id, OCI Functions esegue il push e il pull delle immagini nei repository e dai repository nel compartimento radice. In entrambi i casi, deve esistere un'istruzione criterio appropriata per consentire di gestire i repository nel compartimento (il compartimento specificato da oracle.image-compartment-id o il compartimento radice). Vedere Istruzioni dei criteri per concedere agli utenti di OCI Functions l'accesso ai repository di Oracle Cloud Infrastructure Registry.

    OCI Functions costruisce il nome del repository per un'immagine di funzione anteponendo il prefisso del nome del repository al nome della funzione. I nomi dei repository sono univoci in tutti i compartimenti dell'intera tenancy. Tenere presente che le funzioni OCI si comportano nel modo seguente per quanto riguarda i compartimenti e oracle.image-compartment-id quando si esegue il push di un'immagine in un repository denominato:

    • Se un repository con il nome specificato esiste già nel compartimento specificato da oracle.image-compartment-id, OCI Functions esegue correttamente il push dell'immagine in tale repository.
    • Se un repository con il nome specificato non esiste in alcun compartimento (incluso nel compartimento radice) della tenancy, OCI Functions crea un nuovo repository con il nome specificato nel compartimento specificato da oracle.image-compartment-id ed esegue correttamente il push dell'immagine in tale repository.
    • Se un repository con il nome specificato esiste già nella tenancy ma in un compartimento diverso da quello specificato daoracle.image-compartment-id, OCI Functions genera un errore. Affinché le funzioni OCI eseguano correttamente il PUSH dell'immagine, è necessario impostare oracle.image-compartment-id sull'OCID del compartimento del repository esistente oppure specificare un nome di repository diverso (ridenominando la funzione o specificando un prefisso di nome di repository alternativo).
  8. (Facoltativo) Verificare il contesto CLI del progetto Fn creato visualizzando il file di contesto. Ad esempio, immettendo:

    more ~/.fn/contexts/johns-oci-context.yaml

    Il file di contesto contiene:

    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>

Dopo aver completato la procedura descritta in questo argomento, passare a Impostazione del contesto per l'interfaccia CLI di Fn Project mediante il parametro oracle.profile.

Note sui nomi dei repository e sui prefissi dei nomi dei repository

Quando si distribuisce una funzione, viene eseguito il PUSH dell'immagine della funzione in un repository nel registro specificato dall'impostazione registry: nel contesto CLI di Fn Project. Il nome del repository è uguale al nome della funzione (ovvero <function-name>) oppure al nome della funzione con il prefisso del nome del repository inserito in precedenza (ovvero <repo-name-prefix>/<function-name>).

Quando si distribuisce una funzione, tenere presente quanto riportato di seguito. Se un repository denominato <function-name> (o <repo-name-prefix>/<function-name> se è stato specificato un <repo-name-prefix>) non esiste già nel registro:

  • Se la proprietà Crea repository al primo push nel compartimento radice del registro è impostata su true, nel compartimento radice viene creato un nuovo repository privato
  • Se la proprietà Crea repository al primo push nel compartimento radice del registro è impostata su false, non è possibile creare un nuovo repository e il tentativo di eseguire il push dell'immagine della funzione non riesce.

Se la proprietà Crea repository al primo push nel compartimento radice del registro è impostata su false e non esiste già un repository appropriato, prima di distribuire una funzione eseguire una delle operazioni riportate di seguito.

  • Creare un nuovo repository con lo stesso nome della funzione e non specificare <repo-name-prefix> nel contesto CLI di Fn Project. Ad esempio, se la funzione è denominata hello-world, creare un nuovo repository denominato hello-world.
  • Creare una funzione con lo stesso nome di un repository esistente e non specificare <repo-name-prefix> nel contesto CLI di Fn Project. Ad esempio, se il repository esistente è denominato hello-galaxy, assegnare un nome alla nuova funzione hello-galaxy.
  • Se si desidera utilizzare un prefisso del nome del repository per organizzare e controllare l'accesso ai repository, specificare un valore <repo-name-prefix> nel contesto CLI di Fn Project e creare un repository con un nome che includa sia il prefisso del nome del repository che il nome della funzione. Ad esempio, per memorizzare le immagini di una funzione denominata hello-world in un repository denominato acme-repo/hello-world, specificare phx.ocir.io/ansh81vru1zp/acme-repo nel contesto CLI di Fn Project e creare un repository denominato acme-repo/hello-world.