Funzioni CloudEvent
Una funzione CloudEvent è un tipo di funzione basata su eventi. Le funzioni CloudEvent vengono richiamate indirettamente in risposta a eventi, come un messaggio su un argomento Pub/Sub, una modifica in un bucket Cloud Storage o un evento Firebase.
Le funzioni CloudEvent sono concettualmente simili alle funzioni in background. La differenza principale tra i due è che le funzioni CloudEvent utilizzano un formato di evento standard del settore noto come CloudEvents. Un'altra differenza è che Cloud Functions richiama le funzioni CloudEvent utilizzando le richieste HTTP, che possono essere riprodotte altrove. Insieme, queste differenze consentono di spostare senza problemi le funzioni CloudEvent tra le piattaforme di computing.
Runtime supportati
I seguenti runtime supportano le funzioni CloudEvent:
Lingua | Versioni |
---|---|
PHP Beta |
Tutti |
C# Beta |
Tutti |
Beta rubino |
Tutti |
Parametri funzione
Alle funzioni CloudEvent viene passato un singolo argomento cloudEvent
che contiene le proprietà e i metadati associati all'evento che ha attivato l'esecuzione della funzione. Gli eventi CloudEvent in entrata vengono quindi convertiti nelle rappresentazioni specifiche del linguaggio mostrate di seguito utilizzando le librerie Functions Framework.
C#
Il parametro cloudEvent
viene passato alla funzione come
oggetto CloudEvent
che contiene le seguenti
proprietà:
Proprietà | Tipo | Descrizione |
---|---|---|
Id |
String |
L'ID univoco dell'evento. |
Source |
Uri |
L'entità Google Cloud interessata dall'evento nel formato
/[SERVICE_DOMAIN_NAME]/[RESOURCE]/ .
|
Type |
String |
Il tipo CloudEvent dell'evento ricevuto. |
Time |
DateTimeOffset annullabili |
Un timestamp del momento in cui si è verificato l'evento. |
SpecVersion |
CloudEventsSpecVersion |
La versione della specifica CloudEvents utilizzata per creare l'evento. |
Data |
Object |
Un elemento object contenente dati specifici del tipo di evento.
|
Subject
|
String annullabili
|
Il valore dell'oggetto dipende dal tipo di evento attivato.
Ad esempio, se l'evento sottostante si riferisce a un
oggetto Cloud Storage,
verrà impostato sulla posizione dell'oggetto, nel formato
objects/path/to/object .
Alcuni eventi non impostano un oggetto, nel qual caso questa proprietà sarà
null .
|
Ruby
Il parametro cloudEvent
viene trasmesso alla funzione come un
oggetto CloudEvents::Event::V1
contenente le seguenti
proprietà:
Proprietà | Tipo | Descrizione |
---|---|---|
cloudEvent.id |
String |
L'ID univoco dell'evento. |
cloudEvent.source |
URI |
L'entità Google Cloud interessata dall'evento nel formato
/[SERVICE_DOMAIN_NAME]/[RESOURCE]/ .
|
cloudEvent.type |
String |
Il tipo CloudEvent dell'evento ricevuto. |
cloudEvent.time |
DateTime |
Un timestamp del momento in cui si è verificato l'evento. |
cloudEvent.specversion |
String |
La versione della specifica CloudEvents utilizzata per creare l'evento. |
cloudEvent.data |
Hash |
Un elemento Hash contenente dati specifici del tipo di evento.
|
cloudEvent.subject
|
String o Nil
|
Il valore dell'oggetto dipende dal tipo di evento attivato.
Ad esempio, se l'evento sottostante si riferisce a un
oggetto Cloud Storage,
verrà impostato sulla posizione dell'oggetto, nel formato
objects/path/to/object .
Alcuni eventi non impostano un oggetto, nel qual caso questa proprietà sarà
Nil .
|
PHP
Il parametro cloudEvent
viene inserito nella funzione come un
oggetto CloudEvent
che contiene quanto segue:
Funzione | Tipo | Descrizione |
---|---|---|
cloudEvent->getId() |
string |
L'ID univoco dell'evento. |
cloudEvent->getSource() |
string |
L'entità Google Cloud interessata dall'evento nel formato
/[SERVICE_DOMAIN_NAME]/[RESOURCE]/ .
|
cloudEvent->getType() |
string |
Il tipo CloudEvent dell'evento ricevuto. |
cloudEvent->getTime() |
?string |
Un timestamp del momento in cui si è verificato l'evento. |
cloudEvent->getSpecVersion() |
string |
La versione della specifica CloudEvents utilizzata per creare l'evento. |
cloudEvent->getSubject()
|
?string
|
Il valore dell'oggetto dipende dal tipo di evento attivato.
Ad esempio, se l'evento sottostante si riferisce a un
oggetto Cloud Storage,
verrà impostato sulla posizione dell'oggetto, nel formato
objects/path/to/object .
Alcuni eventi non impostano un oggetto, nel qual caso questa proprietà sarà
null .
|
cloudEvent->getData()
|
Object
|
Un elemento object contenente dati specifici del tipo di evento.
|
Esempi di utilizzo
Gli esempi riportati di seguito mostrano come elaborare gli eventi da Pub/Sub e Cloud Storage. Per ulteriori informazioni sulla gestione degli eventi da sorgenti diverse, consulta Chiamata di Cloud Functions.
Esempio di Pub/Sub
Questo esempio mostra una funzione CloudEvent attivata da eventi Pub/Sub. Ogni volta che un messaggio viene pubblicato in un argomento Pub/Sub, la funzione viene richiamata e un saluto utilizzando i dati derivati dal messaggio viene scritto nel log.
C#
Ruby
PHP
Per ulteriori informazioni sul deployment di Cloud Functions attivati da eventi Pub/Sub, consulta gli argomenti Trigger Pub/Sub e Tutorial su Pub/Sub.
Esempio di Cloud Storage
Questo esempio mostra una funzione CloudEvent attivata dagli eventi Cloud Storage. Ogni volta che viene creato un oggetto in un bucket Cloud Storage, la funzione viene richiamata e un messaggio sulla modifica viene scritto nel log.
C#
Ruby
PHP
Per ulteriori informazioni sul deployment delle funzioni CloudEvent attivate dagli eventi di Cloud Storage, consulta i attivatori di Cloud Storage e il tutorial su Cloud Storage.
Per informazioni sulla distribuzione degli eventi (anche in formato CloudEvents) a un servizio Cloud Run di destinazione utilizzando Eventarc, consulta la sezione Creare un trigger per Cloud Run.
Suggerimenti utili
Logging degli eventi
I contenuti dell'evento non vengono registrati automaticamente perché potrebbero contenere informazioni riservate. Se vuoi registrare i contenuti degli eventi, devi farlo in modo esplicito come descritto nelle sezioni Scrittura, visualizzazione e risposta ai log.
Terminazione delle funzioni CloudEvent
Se una funzione CloudEvent crea attività in background, è necessario risolvere queste attività prima di tornare dalla funzione per evitare errori e/o comportamenti non definiti.
Tentativi automatici
Le funzioni CloudEvent possono essere configurate per riprovare automaticamente le chiamate non riuscite. Per ulteriori informazioni, consulta la sezione Riprovare le funzioni basate su eventi.
Passaggi successivi
- Deployment di Funzioni Cloud.
- Chiamata delle funzioni di trigger Pub/Sub.
- Chiamata delle funzioni di trigger di Cloud Storage.
- Tutorial su Cloud Functions con Pub/Sub.
- Tutorial su Cloud Functions con Cloud Storage.