Nota

Utilizza OCI API Gateway, Functions e Observability per convalidare il contenuto JSON e monitorare le intestazioni e il corpo delle API

Introduzione

Quando sviluppiamo applicazioni distribuite, in particolare in architetture basate su microservizi, vogliamo componenti scalabili e performanti nella loro esecuzione. Hanno architetture molto complesse, componenti che eseguono altri componenti, che eseguono altri componenti e così via in un numero infinito di chiamate infinite.

Pianificare come sviluppare ognuno di loro è un compito enorme. Puoi esporre i tuoi microservizi basati su un cluster Kubernetes tramite Oracle Cloud Infrastructure API Gateway (OCI API Gateway). Esistono una serie di strutture, come l'esecuzione dell'autenticazione e dell'autorizzazione delle chiamate, la convalida dei dati e l'ottimizzazione delle chiamate, solo per citarne alcune. C'è anche la possibilità di eseguire chiamate con OCI Functions con l'obiettivo di creare meccanismi di autenticazione e autorizzazione personalizzati, quando i metodi esistenti non sono sufficienti per risolvere la necessità.

In questa esercitazione viene illustrato come utilizzare il meccanismo personalizzato per convalidare alcuni casi d'uso, ad esempio:

Pur essendo un meccanismo per l'autenticazione e l'autorizzazione nel gateway API OCI, potrebbe aiutare con alcune altre esigenze, come:

Obiettivi

Prerequisiti

Task 1: configurare l'osservabilità OCI

  1. Creare un log nella tenancy OCI per includere i log dalla funzione. Passare a Osservabilità e gestione e selezionare Log nella console OCI.

    log-1

  2. Fare clic su Crea log personalizzato.

    log-2

  3. Immettere un nome nel campo Nome log personalizzato e scegliere un compartimento e un gruppo di log appropriati.

    log-3

Nota: è importante acquisire l'OCID del log, necessario per il codice.

log-4

Task 2: creare una funzione OCI per acquisire HEADER e CORPO dalla richiesta API

Per eseguire i passaggi seguenti, scaricare il codice da qui function.zip.

Comprendere il codice

Questo codice è disponibile all'indirizzo function.zip.

Nota: se non si sa come sviluppare una funzione e chiamarla in Gateway API, vedere Chiamare una funzione utilizzando Gateway API.

Configurare l'autenticazione SDK su OCI

Devi configurare il file di configurazione e inserire la chiave privata e l'impronta digitale OCI con la tua funzione prima di distribuirla in OCI. È necessario che i file config e chiave privata siano generati nell'installazione e nella configurazione dell'interfaccia della riga di comando di Oracle Cloud Infrastructure (OCI CLI).

Per installare e configurare l'interfaccia CLI OCI, vedere Installa l'interfaccia CLI OCI. Questa installazione e configurazione genereranno automaticamente due file. Trovare i file config e chiave privata (l'impostazione predefinita è oci_api_key.pem). Il percorso della cartella verrà informato nelle istruzioni di installazione.

codice 2

Scaricare function.zip per visualizzare il codice, il file di configurazione e la chiave privata. Sostituire i file di configurazione e di chiave privata con i file dell'interfaccia CLI OCI.

Crea e distribuisci la funzione OCI

In questo passo, sarà necessario utilizzare l'interfaccia CLI OCI per creare le funzioni OCI e distribuire il codice nella tenancy. Per creare una funzione OCI, vedere Funzioni OCI QuickStart e cercare l'opzione Python. Dovrai creare la tua funzione con queste informazioni:

Ricordare il compartimento in cui è stata distribuita la funzione. Queste informazioni saranno necessarie per configurare la distribuzione del gateway API OCI.

Task 3: configurare la funzione OCI nel gateway API

Distribuiamo la tua API e la integriamo con le tue funzioni OCI per convalidare e inviare i parametri di richiesta (Header e BODY) a OCI Observability. Se non si sa come esporre il backend in uso nel gateway API OCI, vedere Gateway API OCI: Impostazione, creazione e distribuzione di un'interfaccia API.

  1. Aprire Modifica distribuzione.

    configurazione-apigw-1

  2. Fare clic sulla sezione Autenticazione.

    configurazione-apigw-2

  3. Fare clic su Autenticazione singola e selezionare Funzione autorezer.

    configurazione-apigw-2a

  4. Scegliere il compartimento delle funzioni (in cui è stata distribuita la funzione), selezionare l'applicazione fn_apigw_json e la funzione python-json-header.

    configurazione-apigw-2b

  5. Configurare gli argomenti delle funzioni per acquisire HEADER e BODY. Acquisire il contenuto HEADER denominato header e header2 e il contenuto BODY che verrà denominato body.

    configurazione-apigw-2c

  6. Fare clic su Cicli e configurare la trasformazione intestazione. Questa configurazione è facoltativa, solo per visualizzare il contenuto della risposta con i dati della richiesta (contenuto HEADER e BODY) o gli errori generati sulla richiesta. Sarà utile eseguire il debug della funzione.

    configurazione-apigw-3

Task 4: Testare la richiesta

Nota: nella distribuzione API verrà attivata una cache per gli argomenti Funzioni se si configura la funzione del responsabile autorizzazioni e si impostano gli argomenti Funzioni. È possibile stabilire il tipo di dati che verrà inserito nella cache. È possibile configurare la cache per il parametro o l'intestazione della query, ma non per il contenuto del corpo.

Possiamo testare la richiesta API. Proviamo con un solo elemento su un array nel corpo.

curl --location 'https://xxxxxxxxxxxxxxxxxxxx.apigateway.us-ashburn-1.oci.customer-oci.com/path_index/path' \
    --header 'Content-Type: text/plain' \
    --header 'header: header' \
    --header 'header2: header2' \
    --header 'header3: header3' \
    --data '{"data": {"clientID": "xxxxxxxxxxxxxxxxxxx", "secretID": "xxxxxxxxxxxxxxxxxxx", "jList":[{"added_by":"Ani","description":"example description.","start_date":"2014-10-10","mark":255,"id":975}]}}' -i

L'header3 è stato inviato ma mostrato nel log perché non è stato configurato come argomento di funzione nel gateway API OCI. L'array BODY JSON contiene solo 1 elemento, pertanto si tratta di una richiesta di autorizzazione valida.

test-1

Mettiamo un altro elemento su array e test.

curl --location 'https://xxxxxxxxxxxxxxxxxxxx.apigateway.us-ashburn-1.oci.customer-oci.com/path_index/path' \
--header 'Content-Type: text/plain' \
--header 'header: header' \
--header 'header2: header2' \
--header 'header3: header3' \
--data '{"data": {"clientID": "xxxxxxxxxxxxxxxxxxx", "secretID": "xxxxxxxxxxxxxxxxxxx", "jList":[{"added_by":"Ani","description":"example description.","start_date":"2014-10-10","mark":255,"id":975}, {"added_by":"Ani","description":"example description.","start_date":"2014-10-10","mark":255,"id":975}]}}' -i

test-2

Conferme

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare Oracle Learning Explorer.

Per la documentazione del prodotto, visitare Oracle Help Center.