Aggiunta di una funzione nelle funzioni OCI come backend del gateway API

Scopri come creare una distribuzione API con API Gateway che espone le funzioni serverless definite nelle funzioni OCI.

Un requisito comune è quello di creare un'API con funzioni serverless come backend e un gateway API che fornisca l'accesso front-end a tali funzioni.

Le funzioni OCI ti consentono di creare funzioni serverless create come immagini Docker e sottoposte a push in un registro Docker specificato. Una definizione di ogni funzione viene memorizzata come metadati nel server Funzioni OCI. Quando una funzione viene richiamata per la prima volta, OCI Functions estrae l'immagine Docker della funzione dal registro Docker specificato, la esegue come contenitore Docker ed esegue la funzione. In caso di richieste successive alla stessa funzione, Funzioni OCI indirizza tali richieste allo stesso contenitore in esecuzione. Dopo un periodo di inattività, il contenitore Docker viene arrestato.

Dopo aver utilizzato il servizio API Gateway per creare un gateway API, è possibile creare una distribuzione API che richiama le funzioni serverless definite nelle funzioni OCI.

Prima di utilizzare le funzioni serverless in Funzioni OCI come backend per un'interfaccia API, effettuare le operazioni riportate di seguito.

È possibile aggiungere back-end di funzioni serverless a una specifica di distribuzione API effettuando le operazioni riportate di seguito.

  • utilizzo di Console
  • modifica di un file JSON

Creazione e distribuzione di una funzione serverless nelle funzioni OCI da utilizzare come backend di gateway API

Per creare una funzione serverless nelle funzioni OCI che è possibile richiamare da un gateway API, seguire le istruzioni riportate nella documentazione delle funzioni OCI per:

Utilizzo della console per aggiungere backend di funzioni serverless a una specifica di distribuzione API

Per aggiungere un backend di una funzione OCI Functions a una specifica di distribuzione API utilizzando la console, procedere come segue.

  1. Creare o aggiornare una distribuzione API utilizzando la console, selezionare l'opzione Da zero e immettere i dettagli nella pagina Informazioni di base.

    Per ulteriori informazioni, vedere Distribuzione di un'interfaccia API in un gateway API mediante la creazione di una distribuzione API e Aggiornamento di un gateway API o di una distribuzione API.

  2. Nella pagina Autenticazione specificare le opzioni di autenticazione.

    Per ulteriori informazioni sulle opzioni di autenticazione, vedere Aggiunta di autenticazione e autorizzazione alle distribuzioni API.

  3. Nella pagina Cicli creare un nuovo instradamento e specificare:

    • Percorso: un percorso per le chiamate API che utilizzano i metodi elencati per il servizio backend. Tenere presente che il percorso di instradamento specificato è il seguente:

    • Metodi: uno o più metodi accettati dal servizio backend. Ad esempio, GET, PUT.
    • Aggiungere un backend singolo o Aggiungere più backend: indica se instradare tutte le richieste allo stesso backend o instradare le richieste a backend diversi in base alla variabile di contesto e alle regole immesse.

      Queste istruzioni presuppongono di voler utilizzare un singolo backend, quindi selezionare Aggiungi un backend singolo. In alternativa, se si desidera utilizzare backend diversi, selezionare Aggiungi più backend e seguire le istruzioni in Utilizzo della console per aggiungere la selezione backend dinamica a una specifica di distribuzione API.

    • Tipo backend: il tipo di servizio backend è Oracle Functions.
    • Applicazione in <compartment-name>: il nome dell'applicazione nella sezione Funzioni OCI che contiene la funzione. È possibile selezionare un'applicazione da un altro compartimento.
    • Nome funzione: il nome della funzione in Funzioni OCI.

    In questo esempio, l'instradamento definisce una semplice funzione serverless Hello World in Funzioni OCI come un singolo backend.

    Campo : Immettere:
    Percorso: /hello
    Metodi: GET
    Tipo di backend: Oracle Functions
    Applicazione in <compartment-name>: acmeapp
    Nome funzione: acme-func
  4. (Facoltativo) Fare clic su Altro instradamento per immettere i dettagli degli instradamenti aggiuntivi.
  5. Fare clic su Successivo per esaminare i dettagli immessi per la distribuzione API.
  6. Fare clic su Crea o su Salva modifiche per creare o aggiornare la distribuzione API.
  7. (Facoltativo) Confermare che l'interfaccia API sia stata distribuita correttamente chiamandola (vedere Chiamata di un'interfaccia API distribuita in un gateway API).

    Se la funzione serverless accetta i parametri, includerli nella chiamata all'API. Ad esempio:

    curl -k -X GET https://lak...sjd.apigateway.us-phoenix-1.oci.customer-oci.com/marketing/hello/ -d "name=john"

Modifica di un file JSON per aggiungere backend di funzioni serverless a una specifica di distribuzione API

Per aggiungere un backend di una funzione OCI Functions a una specifica di distribuzione API in un file JSON, procedere come segue.

  1. Utilizzando l'editor JSON preferito, creare la specifica di distribuzione API in un file JSON nel formato seguente:

    {
      "requestPolicies": {},
      "routes": [
        {
          "path": "<api-route-path>",
          "methods": ["<method-list>"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "<identifier>"
          },
          "requestPolicies": {}
        }
      ]
    }

    dove:

    • "requestPolicies" specifica i criteri facoltativi per controllare il funzionamento di una distribuzione API. Se si desidera applicare i criteri a tutti gli instradamenti in una specifica di distribuzione API, posizionarli all'esterno della sezione routes. Se si desidera applicare i criteri solo a un instradamento specifico, inserire i criteri nella sezione routes. Vedere Aggiunta di criteri di richiesta e di risposta alle specifiche di distribuzione API.
    • <api-route-path> specifica un percorso per le chiamate API utilizzando i metodi elencati per il servizio backend. Tenere presente che il percorso di instradamento specificato è il seguente:

    • <method-list> specifica uno o più metodi accettati dal servizio backend, separati da virgole. Ad esempio, "GET, PUT".
    • <identifier> specifica l'OCID della funzione che si desidera utilizzare come servizio backend. Ad esempio, "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq".

    Ad esempio, la seguente specifica di distribuzione API di base definisce una semplice funzione serverless Hello World in Funzioni OCI come un singolo backend:

    {
      "routes": [
        {
          "path": "/hello",
          "methods": ["GET"],
          "backend": {
            "type": "ORACLE_FUNCTIONS_BACKEND",
            "functionId": "ocid1.fnfunc.oc1.phx.aaaaaaaaab______xmq"
          }
        }
      ]
    }
  2. Salvare il file JSON contenente la specifica di distribuzione API.
  3. Utilizzare la specifica di distribuzione API quando si crea o si aggiorna una distribuzione API nei modi riportati di seguito.

    • specificando il file JSON nella console quando si seleziona l'opzione Carica un'interfaccia API esistente
    • specificando il file JSON in una richiesta all'API REST del gateway API

    Per ulteriori informazioni, vedere Distribuzione di un'interfaccia API in un gateway API mediante la creazione di una distribuzione API.

  4. (Facoltativo) Verificare che l'interfaccia API sia stata distribuita e che la funzione serverless nelle funzioni OCI possa essere richiamata correttamente richiamando l'interfaccia API (vedere Chiamata di un'interfaccia API distribuita in un gateway API).

    Se la funzione serverless accetta i parametri, includerli nella chiamata all'API. Ad esempio:

    curl -k -X GET https://lak...sjd.apigateway.us-phoenix-1.oci.customer-oci.com/marketing/hello/ -d "name=john"