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.

Al momento, le funzioni Cloud 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 cose che accadono nel tuo ambiente cloud.Possono essere 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 utilizzando 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. Potrai :

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

2. Configurazione e requisiti

Configurazione dell'ambiente autonomo

  1. Accedi alla console Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai già 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 tra tutti i progetti Google Cloud (il nome sopra è già stato utilizzato e non funzionerà per te, mi dispiace). In questo codelab verrà chiamato PROJECT_ID.

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

L'esecuzione di questo codelab non dovrebbe costare molto, se non nulla. Assicurati di seguire le istruzioni riportate nella sezione "Pulizia", che ti consiglia come arrestare le risorse in modo da non incorrere in addebiti oltre questo tutorial. I nuovi utenti di Google Cloud possono beneficiare del programma prova senza costi di 300$.

Google Cloud Shell

Sebbene Google Cloud e Cloud Functions possano 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 di cui avrai bisogno. Offre una home directory permanente da 5 GB e viene eseguita in Google Cloud, migliorando notevolmente le prestazioni e l'autenticazione della rete. Ciò significa che per questo codelab ti servirà solo un browser (sì, funziona su Chromebook).

  1. Per attivare Cloud Shell dalla console Cloud, fai clic su Attiva Cloud Shell fEbHefbRynwXpq1vj2wJw6Dr17O0np8l-WOekxAZYlZQIORsWQE_xJl-cNhogjATLn-YxLVz8CgLvIW1Ncc0yXKJsfzJGMYgUeLsVB7zSwz7p6ItNgx4tXqQjag7BfWPcZN5kP-X3Q (bastano pochi istanti per eseguire il provisioning e connettersi all'ambiente).

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARe01A

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

Una volta eseguita la connessione a Cloud Shell, dovresti vedere che il tuo account è già autenticato e il progetto è già impostato sul tuo 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, esegui questo comando:

gcloud config set project <PROJECT_ID>

Stai cercando PROJECT_ID? Controlla l'ID che hai 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, che potrebbero essere utili quando esegui i 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 una serie di zone diverse. Per saperne di più, consulta Regioni e zone.

3. Crea una funzione

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

  • Nella console, fai clic su Menu di navigazione > 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 incorporato, runtime predefinito e codice campione predefinito.

795f1fedc0f039bb.png

  • Sempre nella finestra di dialogo "Crea funzione", in basso fai clic su "Crea" per 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 appare un segno di spunta verde. In caso di problemi, riceverai una notifica con un'icona rossa e un link ai log per capire cosa è andato storto (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, dovresti visualizzare il messaggio Success: Hello World!

Nel campo Log, il codice di stato 200 indica che il test è stato superato. Tieni presente che potrebbe essere necessario un minuto prima che i log vengano visualizzati.

a876def9cbf24a45.png

5. Visualizza i log della funzione

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 per funzione, per gravità ed eseguire ricerche tramite un'etichetta o un testo in formato libero.

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

6. Risorse di pulizia

Non devi pulire le risorse, perché si tratta di un computing serverless : la scalabilità a zero significa anche scalabilità del costo a zero. Pertanto, se la tua funzione non riceve traffico, non verranno addebitati costi. Inoltre, i primi 2 milioni di chiamate di Cloud Functions al mese sono senza costi. Per ulteriori dettagli, consulta la pagina dei prezzi.

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

4fe11e1b41b32ba2.png

7. Passaggi successivi

Cloud Functions ha molto altro da offrire. Dai un'occhiata ad altri codelab e alla pagina del prodotto e alla relativa documentazione.

Ti consigliamo di consultare anche le seguenti risorse :