Uso di un repository di codice per creare una funzione con l'editor di codice

Scopri come utilizzare l'Editor di codice per creare una nuova funzione in OCI Functions in base al codice funzione esistente in un repository Git remoto.

È possibile utilizzare l'Editor di codice per creare una funzione in OCI Functions in base al codice funzione esistente in un repository Git remoto. Dopo aver clonato il repository Git remoto in un repository Git locale, è possibile utilizzare l'Editor di codice per modificare il codice nel repository Git locale. Al termine delle modifiche, è possibile utilizzare l'Editor di codice per eseguire il commit e il push del codice nel repository Git remoto. Con gli aggiornamenti nel repository Git remoto, è quindi possibile utilizzare l'Editor di codice per distribuire la funzione in OCI Functions e quindi per richiamare la funzione.

Quando si utilizza l'Editor di codice per creare e aggiornare le funzioni, tenere presente quanto riportato di seguito.

  • Il repository Git remoto deve contenere un file func.yaml valido al livello superiore.
  • Il nome di una funzione creata mediante l'Editor di codice deve corrispondere al nome della funzione specificato nel file func.yaml nel repository di codici remoti. Se i nomi sono diversi, non sarà possibile richiamare la funzione.
  • Quando si distribuisce una funzione in OCI Functions, si sta recuperando il commit più recente dal repository Git remoto. Le modifiche di cui non è stato eseguito il commit e i commit nel repository locale vengono ignorati. Pertanto, prima di poter distribuire una funzione nuova o aggiornata in OCI Functions, è necessario eseguire sempre il commit di file nuovi e modificati nel repository Git locale, quindi eseguire il push delle modifiche nel repository Git remoto.

In questo argomento viene spiegato come utilizzare l'editor di codice per:

  • creare una nuova funzione dal codice in un repository Git remoto esistente
  • distribuire la funzione in OCI Functions
  • richiamare la funzione
  • facoltativamente, aggiornare la funzione, ridistribuirla e richiamarla di nuovo

Prima di iniziare:

  • È necessario aver completato i passi in Funzioni QuickStart su Cloud Shell.
  • Per seguire la procedura descritta in questo argomento, è necessario disporre dell'accesso a un repository Git remoto (ad esempio, in GitHub) contenente sia il codice funzione che un file func.yaml al livello superiore del repository.
  • Per comodità e semplicità, gli esempi in questo argomento presuppongono di aver utilizzato il comando fn init --runtime python helloworld-func-python per creare una semplice funzione helloworld di python che è stata quindi inviata a un repository Git remoto. Se è stata creata una funzione helloworld python di questo tipo e la si è spostata in un repository Git remoto, è possibile specificare tale repository Git remoto come repository di codici quando si seguono le istruzioni. Se non si è certi di come creare la funzione helloworld di python ed eseguirne il push in un repository Git remoto, vedere Passi preliminari facoltativi per caricare un codice funzione helloworld di Python semplice in un repository di codici remoti.

Per ulteriori informazioni sulle caratteristiche e le funzionalità dell'editor di codice, vedere Editor di codice.

Passi preliminari facoltativi per caricare un codice funzione helloworld Python semplice in un repository di codici remoti

Per popolare un repository Git remoto con file di codice sorgente e func.yaml validi per una semplice funzione helloworld di python, da utilizzare nella sezione Creazione di una funzione da un repository di codice mediante l'editor di codice più avanti in questo argomento:

  1. Creare un nuovo repository Git remoto. Ad esempio, in GitHub come https://github.com/jdoe/simple-python-helloworld-repo.
  2. In Cloud Shell creare una directory temporanea che contenga la funzione helloworld python. Ad esempio, /home/jdoe/temp/python/simple-helloworld
  3. Passare alla directory appena creata.
  4. Eseguire fn init --runtime python helloworld-func-python per creare una funzione helloworld python denominata helloworld-func-python.
  5. Passare alla directory helloworld-func-python appena creata.
  6. Convertire la directory helloworld-func-python senza controllo delle versioni in un repository Git locale immettendo:
    git init
  7. Aggiungere i file nella directory helloworld-func-python all'area intermedia immettendo:
    git add .
  8. Memorizzare il contenuto dell'area intermedia nel repository Git locale immettendo:
    git commit
  9. Quando richiesto, immettere un messaggio di commit:
    1. Premere il tasto i sulla tastiera per inserire testo.
    2. Immettere un messaggio di commit. Ad esempio:
      Adds simple python hello-world files.
    3. Premere il tasto Esc, quindi digitare : w q e premere Invio.
  10. In Cloud Shell, connettere il repository Git locale al repository Git remoto creato in precedenza immettendo:
    git remote add origin <remote-repository-url>

    Ad esempio:

    git remote add origin https://github.com/jdoe/simple-python-helloworld-repo.git
  11. Creare una nuova diramazione denominata main nel repository Git locale immettendo:
    git branch -M main
  12. Eseguire il push dei file nella diramazione main nel repository Git remoto immettendo:
    git push -u origin main
  13. Se richiesto, immettere il nome utente e la password Git per il repository Git remoto.

    Nel caso di GitHub, si noti che la password è il proprio token di accesso personale GitHub.

Ora sono stati caricati file di codice sorgente e func.yaml validi per una semplice funzione helloworld di python in un repository Git remoto, da utilizzare nella sezione Creating a Function From a Code Repository Using Code Editor.

Creazione di una funzione da un repository di codice mediante un editor di codice

Per utilizzare l'editor di codice per creare una nuova funzione nelle funzioni OCI in base al codice funzione esistente in un repository Git remoto, procedere come segue.

  1. Confermare di aver completato i passi delle funzioni QuickStart in Cloud Shell per effettuare le operazioni riportate di seguito.
    • Impostare la tenancy con gruppi e utenti, creare un compartimento in cui creare risorse di OCI Functions, creare una VCN e una subnet e creare un criterio IAM.
    • Impostare l'ambiente di sviluppo Cloud Shell con il contesto CLI di Fn Project, ottenere un token di autenticazione ed eseguire il login al registro Docker specificato per il contesto CLI di Fn Project.
  2. Accedere alla console come sviluppatore di funzioni.
  3. Utilizzare la console per creare una nuova applicazione in OCI Functions:

    1. Aprire il menu di navigazione e selezionare Developer Services. In Funzioni, selezionare Applicazioni.
    2. Selezionare l'area che si desidera utilizzare per OCI Functions.

      Si consiglia di utilizzare la stessa area del registro Docker specificato nel contesto CLI di Fn Project (vedere Creazione di un contesto CLI di Fn Project per connettersi a Oracle Cloud Infrastructure).

    3. Selezionare il compartimento specificato nel contesto CLI di Fn Project (vedere Creazione di un contesto CLI di Fn Project per connettersi a Oracle Cloud Infrastructure).

      La pagina Applicazioni mostra le applicazioni già definite nel compartimento.

    4. Selezionare Crea applicazione e specificare:

      Per ulteriori informazioni sulle altre opzioni di creazione dell'applicazione, vedere Creazione di un'applicazione.

    5. Selezionare Crea per creare l'applicazione.
  4. Avviare l'editor di codice in uno dei seguenti modi:

    • Nella pagina dell'elenco Applicazioni selezionare l'applicazione in cui si desidera creare la funzione. Nella pagina dei dettagli dell'applicazione selezionare Funzioni. Nella scheda Funzioni selezionare Crea nell'editor di codice. Questo metodo apre l'editor di codice nell'applicazione appena creata.
    • Selezionare l'opzione Editor di codice dal pulsante Strumenti di sviluppo nella barra degli strumenti della console.
  5. Crea una nuova funzione da un repository di codice:
    1. Nel pannello Editor di codice di Oracle Cloud Infrastructure, passare all'applicazione appena creata nel compartimento specificato nel contesto CLI di Fn Project. Ad esempio, helloworld-python-app.
    2. Con il nome dell'applicazione evidenziato, selezionare Crea funzione... dal menu con il pulsante destro del mouse.
    3. Selezionare il metodo di creazione Crea da un repository di codici nel campo di immissione nella barra dei menu dell'editor di codice.
    4. Immettere il nome della funzione specificato nel file func.yaml della funzione nel repository remoto (ad esempio helloworld-func-python) e premere Invio.

      Il nome della funzione creata mediante l'Editor di codice deve corrispondere al nome della funzione specificato nel file func.yaml nel repository di codici remoti. Se i nomi sono diversi, non sarà possibile richiamare la funzione in un secondo momento.

    5. Immettere l'URL del repository remoto che contiene il codice funzione. Ad esempio, https://github.com/jdoe/simple-python-helloworld-repo
    6. Se richiesto, immettere il nome utente e la password Git per il repository Git remoto.

      Nel caso di GitHub, la password è il token di accesso personale GitHub.

      Quando il repository Git remoto è stato clonato correttamente, viene visualizzata una finestra di dialogo con il messaggio "Si desidera aprire il repository clonato o aggiungerlo all'area di lavoro corrente".

    7. Selezionare il pulsante X nell'angolo superiore destro della finestra di dialogo per chiudere la finestra di dialogo senza selezionare un'opzione.

      Importante: non selezionare il pulsante Apri o il pulsante Aggiungi all'area di lavoro nella finestra di dialogo.

    8. Selezionare OK per confermare la finestra di dialogo che informa che è necessario eseguire il commit e il push delle modifiche in una diramazione remota prima di poter distribuire la funzione.

      Il repository Git remoto viene duplicato in un repository Git locale all'indirizzo /home/<username>/oci-ide-plugins/faas-artifacts/<app-ocid>/<function-name>/<repository-name>. Ad esempio, /home/jdoe/oci-ide-plugins/faas-artifacts/ocid1.fnapp.oc1.iad.aaaaaa______76nf/helloworld-func-python/simple-python-helloworld-repo.

      Se la nuova funzione è stata basata sulla funzione helloworld python nel repository Git remoto, la directory del repository Git locale contiene:

      • func.yaml
      • func.py
      • requirments.txt
  6. Distribuire la funzione in OCI Functions:
    1. Per aprire una finestra del terminale dell'editor di codice, selezionare Nuovo terminale nella finestra Terminale nella barra dei menu dell'editor di codice.
    2. Nella finestra del terminale dell'Editor di codice, passare alla directory appena creata che contiene il file func.yaml e i file di origine della funzione immettendo:
      cd /home/<oci-username>/oci-ide-plugins/faas-artifacts/<application-OCID>/<function-name>/<repos-name>

      Ad esempio:

      cd /home/jdoe/oci-ide-plugins/faas-artifacts/ocid1.fnapp.oc1.iad.aaaaaa______76nf/helloworld-func-python/simple-python-helloworld-repo
    3. Nella finestra del terminale Editor di codice, nella directory contenente il file func.yaml e i file di origine della funzione, eseguire il login al registro Docker specificato nel contesto CLI di Fn Project. Supponendo che il registro Docker sia Oracle Cloud Infrastructure Registry, utilizzare il seguente comando:

      docker login -u '<tenancy-namespace>/<user-name>' <region-key>.ocir.io

      Ad esempio:

      docker login -u 'ansh81vru1zp/jdoe@acme.com' phx.ocir.io
    4. Quando viene richiesta una password, immettere il token di autenticazione OCI.
    5. Nella finestra del terminale dell'editor di codice, distribuire la funzione in OCI Functions eseguendo:
      fn -v deploy --app <application-name>

      Ad esempio:

      fn -v deploy --app helloworld-python-app
  7. Richiamare la funzione appena distribuita:
    1. Nella finestra del terminale dell'Editor di codice, nella directory che contiene il file func.yaml e i file di origine della funzione, richiamare la funzione eseguendo:
      fn invoke <application-name> <function-name>

      Ad esempio:

      fn invoke helloworld-python-app helloworld-func-python

      Se viene restituito un messaggio che indica che la funzione non è stata trovata, è probabile che una causa sia una mancata corrispondenza tra il nome della funzione creata nell'Editor di codice e il nome della funzione specificata in func.yaml. Ripetere i passi precedenti per creare una funzione nell'Editor di codice con lo stesso nome specificato nel file func.yaml nel repository Git remoto.

      Se la nuova funzione è stata basata sulla funzione helloworld di python, viene visualizzato il seguente messaggio:

      {"message": "Hello World"}
  8. (Facoltativo) Se la nuova funzione è stata basata sulla funzione helloworld python denominata helloworld-func-python nei passi precedenti, questo passo facoltativo descrive come modificare il testo del messaggio visualizzato quando viene richiamata la funzione. È possibile aggiornare il testo del messaggio nel repository Git locale, eseguire il push dell'aggiornamento nel repository Git remoto, quindi distribuire e richiamare la funzione.

    1. Nel pannello Oracle Cloud Infrastructure dell'Editor di codice, sotto la funzione helloworld-func-python appena creata, selezionare il file func.py e modificare la riga:
      {"message": "Hello {0}".format(name)}),
      da leggere:
      {"message": "Greetings {0}".format(name)}),
    2. Nel Navigator dell'Editor di codice, selezionare il pannello Controllo origine, il pulsante Altre azioni e selezionare Esegui commit dal menu Esegui commit.
    3. Quando viene richiesto di modificare l'area intermedia, selezionare .
    4. Immettere un messaggio di commit (ad esempio, Changes-Hello-to-Greetings) e premere Invio.
    5. Selezionare il pulsante Altre azioni e selezionare Push dal menu Pull, Push.
    6. Se richiesto, immettere il nome utente e la password Git per il repository Git remoto.

      Nel caso di GitHub, la password è il token di accesso personale GitHub.

    7. Se viene visualizzata una finestra di dialogo con il messaggio "Si desidera che l'editor di codice esegua periodicamente 'git fetch'?", selezionare Chiedi più tardi.
    8. Nella finestra del terminale Editor di codice, nella directory contenente il file func.yaml e i file di origine della funzione, distribuire la funzione immettendo:

      fn -v deploy --app <application-name>

      Ad esempio:

      fn -v deploy --app helloworld-python-app
    9. Nella finestra del terminale dell'editor di codice, richiamare la funzione immettendo:
      fn invoke <application-name> <function-name>

      Ad esempio:

      fn invoke helloworld-python-app helloworld-func-python

      Verrà visualizzato il seguente messaggio.

      {"message": "Greetings World"}

    Il messaggio aggiornato conferma che il codice di origine della funzione è stato modificato correttamente nel repository Git locale, ha eseguito il PUSH dell'aggiornamento nel repository Git remoto, quindi ha distribuito e richiamato la funzione.