Introduzione a Cloud Functions

1. Panoramica

Cloud-Functions.png

Con Cloud Functions puoi scrivere funzioni semplici a uso specifico che vengono collegate agli eventi generati dall'infrastruttura e dai servizi cloud. La funzione Cloud Functions viene attivata quando viene attivato un evento controllato. Il codice viene eseguito in un ambiente completamente gestito. Non è necessario eseguire il provisioning di un'infrastruttura né preoccuparsi di gestire un server.

Le funzioni Cloud Functions attualmente possono essere scritte in JavaScript, Python o Go. Nel caso di JavaScript, vengono eseguite in un ambiente Node.js su Google Cloud. Una funzione Cloud Functions può essere eseguita in qualsiasi runtime di Node.js standard, così sia la portabilità che l'esecuzione di test in locale sono estremamente semplici.

Connetti ed estendi i servizi cloud

Cloud Functions offre un livello di connettività logica che consente di scrivere codice per connettere ed estendere i servizi cloud. Puoi ascoltare e rispondere a un caricamento di file in Cloud Storage, a una modifica del log o a un messaggio in arrivo per un argomento di Cloud Pub/Sub. Cloud Functions potenzia i servizi cloud esistenti e consente di gestire un numero sempre maggiore di casi d'uso con qualsiasi logica di programmazione. Le funzioni Cloud hanno accesso alle credenziali dell'account di servizio Google e vengono quindi autenticate senza problemi dalla maggior parte dei servizi Google Cloud Platform, ad esempio Datastore, Cloud Spanner, API Cloud Translation, API Cloud Vision e molti altri.

907ffb96feada611.png

Eventi e trigger

Gli eventi cloud sono eventi che si verificano nel tuo ambiente cloud, ad esempio modifiche ai dati di un database, file aggiunti a un sistema di archiviazione o una nuova istanza di macchina virtuale in fase di creazione.

Gli eventi si verificano indipendentemente dal fatto che tu scelga o meno di rispondere. Puoi creare una risposta a un evento con un trigger. Con il trigger dichiari di essere interessato a un determinato evento o a una serie di eventi. L'associazione di una funzione a un trigger ti permette di acquisire gli eventi e di intervenire in relazione agli stessi. Per saperne di più sulla creazione dei trigger e su come associarli alle funzioni, vedi Eventi e trigger.

Serverless

Cloud Functions elimina il lavoro di gestione dei server, configurazione del software, aggiornamento dei framework e applicazione di patch ai sistemi operativi. Il software e l'infrastruttura sono completamente gestiti da Google, quindi devi solo aggiungere il codice. Inoltre, il provisioning delle risorse avviene automaticamente in risposta agli eventi. Questo significa che una funzione può passare da alcune chiamate al giorno a diversi milioni di chiamate senza alcun intervento da parte tua.

Casi d'uso

I carichi di lavoro asincroni, ad esempio ETL leggero o automazioni cloud, come l'attivazione di build di applicazioni, adesso non hanno più bisogno di un proprio server e di uno sviluppatore che lo colleghi: ti basta eseguire il deployment di una funzione Cloud Functions associata all'evento.

Grazie alla sua natura granulare e on demand, Cloud Functions è anche il candidato perfetto per le API e i webhook leggeri. Inoltre, poiché viene eseguito automaticamente il provisioning degli endpoint HTTP quando si esegue il deployment di una funzione HTTP, non è necessaria alcuna configurazione complessa come nel caso di alcuni altri servizi.

Questo lab pratico spiega come creare, eseguire il deployment e testare una funzione Cloud Functions utilizzando la console Google Cloud. Dovrai :

  • Creare una funzione Cloud Functions
  • Eseguire il deployment della funzione e testarla
  • Visualizza i log

2. Configurazione e requisiti

Configurazione dell'ambiente da seguire in modo autonomo

  1. Accedi alla console Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora un account Gmail o G Suite, devi crearne uno.

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

Ricorda l'ID progetto, un nome univoco in tutti i progetti Google Cloud (il nome precedente è già stato utilizzato e non funzionerà correttamente). Verrà indicato più avanti in questo codelab come PROJECT_ID.

  1. Successivamente, dovrai abilitare la fatturazione in Cloud Console per utilizzare le risorse Google Cloud.

Eseguire questo codelab non dovrebbe costare molto. Assicurati di seguire le istruzioni nella sezione "Pulizia" in cui viene spiegato come arrestare le risorse in modo da non incorrere in fatturazione oltre questo tutorial. I nuovi utenti di Google Cloud sono idonei al programma prova senza costi di 300$.

Google Cloud Shell

Mentre Google Cloud e Cloud Functions possono essere gestiti da remoto dal tuo laptop, in questo codelab utilizzeremo Google Cloud Shell, un ambiente a riga di comando in esecuzione nel Cloud.

Questa macchina virtuale basata su Debian viene caricata con tutti gli strumenti di sviluppo necessari. Offre una home directory permanente da 5 GB e viene eseguita in Google Cloud, migliorando notevolmente le prestazioni di rete e l'autenticazione. Ciò significa che per questo codelab è sufficiente un browser (sì, funziona su Chromebook).

  1. Per attivare Cloud Shell dalla console Cloud, fai semplicemente clic su Attiva Cloud Shell fEbHefbRynwXpq1vj2wJw6Dr17O0np8l-WOekxAZYlZQIORsWQE_xJl-cNhogjATLn-YxLVz8CgLvIW1Ncc0yXKJsfzJGMYgUeLsVB7zSwz7p6ItNgx4tXqQjag7BfWPcZN5kP-X3Q (il provisioning e la connessione all'ambiente dovrebbero richiedere solo pochi minuti).

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARe01A

Screen Shot 2017-06-14 at 10.13.43 PM.png

Dopo la connessione a Cloud Shell, dovresti vedere che hai già eseguito l'autenticazione e che il progetto è già impostato su PROJECT_ID.

gcloud auth list

Output comando

Credentialed accounts:
 - <myaccount>@<mydomain>.com (active)
gcloud config list project

Output comando

[core]
project = <PROJECT_ID>

Se, per qualche motivo, il progetto non è impostato, invia semplicemente il seguente comando:

gcloud config set project <PROJECT_ID>

Stai cercando il tuo PROJECT_ID? Controlla l'ID utilizzato nei passaggi di configurazione o cercalo nella dashboard della console Cloud:

R7chO4PKQfLC3bvFBNZJALLTUiCgyLEq_67ECX7ohs_0ZnSjC7GxDNxWrJJUaoM53LnqABYamrBJhCuXF-J9XBzuUgaz7VvaxNrkP2TAn93Drxccyj2-5zz4AxL-G3hzxZ4PsM5HHQ

Cloud Shell imposta anche alcune variabili di ambiente per impostazione predefinita, cosa che può essere utile quando eseguirai comandi futuri.

echo $GOOGLE_CLOUD_PROJECT

Output comando

<PROJECT_ID>
  1. Infine, imposta la zona e la configurazione del progetto predefinite.
gcloud config set compute/zone us-central1-f

Puoi scegliere zone diverse. Per ulteriori informazioni, consulta Regioni e Zone.

3. Crea una funzione

In questo passaggio, creerai una Funzione Cloud utilizzando la console.

  • Nella console, fai clic sul menu di navigazione > di Cloud Functions.

fe64222954f5f372.png

  • Fai clic su "CREA FUNZIONE"

7adca9640ca2e5a6.png

  • Assegna alla funzione il nome GCFunction e mantieni gli altri valori predefiniti : allocazione della memoria, HTTP come trigger, editor in linea, runtime predefinito e codice campione predefinito.

795f1fedc0f039bb.png

  • Rimani nella "funzione di creazione" finestra di dialogo, in basso, fai clic su "Crea" eseguire il deployment della funzione:

b68c3647b771e6f9.png

Dopo aver fatto clic su Crea, la console ti reindirizza alla pagina Panoramica di Cloud Functions.

Durante l'esecuzione del deployment, accanto alla funzione viene visualizzata un'icona a forma di rotellina. Al termine del deployment, al posto della rotellina sarà presente un segno di spunta verde. In caso di problemi, riceverai una notifica con un'icona rossa e un link ai log per capire cosa non ha funzionato (probabilmente un problema nel codice).

3ec684b1b4906657.png

È tutto. La funzione è ora attiva e pronta per essere attivata tramite HTTP.

4. testa la funzione

Nella pagina Panoramica di Cloud Functions, visualizza il menu della funzione e fai clic su Esegui test funzione :

74e310ee6663bb3c.png

Nel campo Evento di trigger, inserisci il seguente testo tra le parentesi {} e fai clic su Esegui il test della funzione.

Nel campo Output, dovrebbe essere visualizzato il messaggio Operazione riuscita: Hello World!

Nel campo Log, il codice di stato 200 indica che l'operazione è riuscita. Tieni presente che la visualizzazione dei log potrebbe richiedere un minuto.

a876def9cbf24a45.png

5. visualizza i log delle funzioni

Fai clic sulla freccia blu per tornare alla pagina Panoramica di Cloud Functions :

8917a2bfa4fb9502.png

Visualizza il menu della funzione e fai clic su Visualizza log :

e97e6ec1fc17dfd7.png

Ecco un esempio della cronologia dei log :

d91a00cf4457fa84.png

Tieni presente che puoi filtrare i log in base alla funzione, in base alla gravità e alla ricerca tramite un'etichetta o testo in formato libero.

Il deployment dell'applicazione è stato eseguito, l'applicazione è stata testata e hai potuto visualizzare i log.

6. Esegui la pulizia delle risorse

Beh, non c'è bisogno di pulire le risorse poiché si tratta di serverless computing : scalare a zero significa anche scalare i costi fino a zero. Pertanto, se la funzione non riceve traffico, non sarà previsto alcun costo. Inoltre, i primi 2 milioni di chiamate di funzione Cloud Functions ogni mese sono senza costi. Per ulteriori dettagli, consulta la pagina relativa ai prezzi.

Se desideri eliminare la funzione, vai alla pagina Panoramica, seleziona la funzione e fai clic su ELIMINA :

4fe11e1b41b32ba2.png

7. Passaggi successivi

Cloud Functions ha molto di più in serbo per te. Dai un'occhiata ad altri codelab, alla pagina del prodotto e alla relativa documentazione.

Dovresti anche consultare le seguenti risorse :