Scrivi funzioni Cloud Run
Le funzioni Cloud Run supportano la scrittura di codice sorgente in diversi linguaggi di programmazione. Il runtime del linguaggio scelto e il tipo di funzione che vuoi scrivere determinare come strutturare il codice e implementare la funzione. Questa pagina offre una panoramica dei tipi di funzioni Cloud Run e le sue aspettative codice sorgente.
Tipi di funzioni Cloud Run
Esistono due tipi di funzioni di Cloud Run:
Funzioni HTTP, che gestiscono le richieste HTTP e utilizzano Trigger HTTP. Per informazioni sull'implementazione delle funzioni HTTP, consulta Scrivere funzioni HTTP.
Funzioni basate su eventi, che gestiscono gli eventi dell'ambiente cloud. e utilizzare gli attivatori di eventi come descritto in Trigger delle funzioni di Cloud Run. Consulta Scrivere funzioni basate sugli eventi per informazioni sull'implementazione di funzioni basate sugli eventi.
Utilizza una funzione HTTP quando devi che la funzione abbia un endpoint URL e risponda alle richieste HTTP, ad esempio per gli webhook. Utilizza una funzione basata su eventi quando la funzione deve essere attivata direttamente in risposta a eventi all'interno del tuo progetto Google Cloud, ad esempio messaggi in un argomento Pub/Sub o modifiche in un bucket Cloud Storage.
Struttura della directory di origine
Per consentire alle funzioni Cloud Run di individuare la definizione della tua funzione, ogni del runtime del linguaggio ha requisiti per strutturare il codice sorgente. Di seguito è riportata la struttura di directory di base per una funzione in ogni runtime.
Node.js
La struttura di directory di base per le funzioni Node.js è la seguente:
. ├── index.js └── package.json
Per impostazione predefinita, le funzioni Cloud Run tentano di caricare il codice sorgente da un file
denominato index.js
nella directory principale della directory delle funzioni. Per specificare un file di origine principale diverso, utilizza il campo main
nel file package.json
.
Il file package.json
deve includere anche il Functions Framework per Node.js come dipendenza:
{
"main": "index.js",
"dependencies": {
"@google-cloud/functions-framework": "^3.0.0"
}
}
Il codice del file principale deve definire il punto di ingresso della funzione e importare altri moduli di codice e Node.js come di consueto. Il file principale può anche definire più entry point di funzione che possono essere implementati separatamente.
Python
La struttura di base della directory per le funzioni Python è la seguente:
. ├── main.py └── requirements.txt
Le funzioni Cloud Run caricano il codice sorgente da un file denominato main.py
nella directory principale della funzione. Il nome del file principale deve essere main.py
.
Il file requirements.txt
deve includere il Functions Framework per Python come dipendenza:
functions-framework==3.*
Il codice nel file main.py
deve definire
punto di accesso alla funzione e può importare altro codice e
le dipendenze come di consueto. Il file main.py
può anche definire più punti di accesso alle funzioni che possono essere implementati separatamente.
Vai
La struttura di directory di base per le funzioni Go è la seguente:
. ├── myfunction.go └── go.mod
La funzione deve trovarsi in un pacchetto Go nella directory principale del progetto. Il pacchetto
e i relativi file di origine possono avere qualsiasi nome, ad eccezione del fatto che la funzione non può essere in
package main
. Se hai bisogno di un pacchetto main
, ad esempio per i test locali,
puoi crearne uno in una sottodirectory:
. ├── myfunction.go ├── go.mod └── cmd/ └── main.go
Il file go.mod
deve includere i seguenti elementi:
Framework delle funzioni per Go
come dipendenza:
module example.com/my-module
require (
github.com/GoogleCloudPlatform/functions-framework-go v1.5.2
)
Il codice del pacchetto principale deve definire punto di ingresso della funzione e può importare altro codice da sottopacchetti e le dipendenze come di consueto. Il pacchetto può anche definire più punti di accesso alle funzioni che possono essere implementati separatamente.
Java
La struttura di directory di base per le funzioni Java è la seguente:
. ├── pom.xml └── src/ └── main/ └── java/ └── MyFunction.java
I file di origine Java devono trovarsi nella directory src/main/java/
e possono avere
un nome qualsiasi. Se i tuoi file di origine dichiarano un pacchetto, aggiungi un'altra directory in
src/main/java
con il nome del pacchetto:
. ├── pom.xml └── src/ └── main/ └── java/ └── mypackage/ └── MyFunction.java
Ti consigliamo di inserire i test associati in una sottodirectory src/test/java/
.
Il file pom.xml
deve includere il Functions Framework per Java come dipendenza:
...
<dependency>
<groupId>com.google.cloud.functions</groupId>
<artifactId>functions-framework-api</artifactId>
<version>1.0.4</version>
</dependency>
...
Il codice nei file sorgente deve definire il punto di ingresso della funzione e può importare altro codice e dipendenze esterne come di consueto. I file di origine possono anche definire più punti di accesso alle funzioni che possono essere implementati separatamente.
C#
La struttura di directory di base per le funzioni .NET è la seguente:
. ├── MyFunction.cs └── MyProject.csproj
Puoi strutturare i tuoi progetti come faresti con qualsiasi altro codice sorgente .NET. I file di origine possono avere qualsiasi nome.
Il file del progetto deve includere il Functions Framework per .NET come dipendenza:
...
<PackageReference Include="Google.Cloud.Functions.Hosting" Version="1.0.0" />
...
Il codice nei file sorgente deve definire punto di accesso alla funzione e può importare altro codice e le dipendenze come di consueto. I file di origine possono anche definire più punti di accesso alle funzioni che possono essere implementati separatamente.
Puoi anche Utilizza il pacchetto di modelli di funzioni Cloud Run per .NET per generare i file richiesti.
Ruby
La struttura di directory di base per le funzioni Ruby è la seguente:
. ├── app.rb ├── Gemfile └── Gemfile.lock
Le funzioni Cloud Run carica il codice sorgente da un file denominato app.rb
nel
principale della directory delle funzioni. Il nome del file principale deve essere app.rb
.
Il file Gemfile
deve includere i seguenti elementi:
Framework di funzioni per Ruby
come dipendenza:
source "https://rubygems.org"
gem "functions_framework", "~> 1.0"
Il codice nel file app.rb
deve definire il punto di ingresso della funzione e può importare altro codice e dipendenze esterne come di consueto. Il file app.rb
può anche definire più funzioni
di punti di contatto di cui è possibile
eseguire il deployment separatamente.
PHP
La struttura di base della directory per le funzioni PHP è la seguente:
. ├── index.php └── composer.json
Le funzioni Cloud Run caricano il codice sorgente da un file denominato index.php
nella directory principale della funzione. Il nome del file principale deve essere index.php
.
Il file composer.json
deve includere il Framework di Functions per PHP come dipendenza:
{
"require": {
"google/cloud-functions-framework": "^1.1"
}
}
Il codice nel file index.php
deve definire il punto di ingresso della funzione e può importare altro codice e dipendenze esterne come di consueto. Il file index.php
può anche definire più funzioni
di punti di contatto di cui è possibile
eseguire il deployment separatamente.
Se stai pensando di raggruppare più funzioni in un unico progetto, sapendo che ogni funzione può condividere lo stesso insieme di dipendenze. Tuttavia, alcune funzioni potrebbero non richiedere tutte le dipendenze.
Se possibile, ti consigliamo di suddividere le grandi codebase multifunzione e di inserire ogni funzione nella propria directory di primo livello, come mostrato sopra, con i propri file di configurazione di progetto e di origine. Questo approccio riduce al minimo il numero di dipendenze richieste per una particolare funzione, che a sua volta riduce il quantità di memoria necessaria per la funzione.
Entry point della funzione
Il codice sorgente deve definire un punto di ingresso per la funzione, ovvero a un particolare codice che viene eseguito quando viene richiamata la funzione Cloud Run. Specifichi questo punto di ingresso quando esegui il deployment della funzione.
Il modo in cui definisci il punto di ingresso dipende dal runtime del linguaggio utilizzato. Per alcuni lingue, il punto di ingresso è una funzione, mentre per altre per un corso. Per scoprire di più sulla definizione dei punti di ingresso e sull'implementazione Cloud Run funziona in linguaggi diversi, consulta Scrivere funzioni HTTP e Scrivere funzioni basate su eventi.
Dipendenze
Puoi gestire le dipendenze utilizzando strumenti standard per ogni runtime. Per ulteriori informazioni, consulta la pagina appropriata:
- Specifica delle dipendenze in Node.js
- Specifica delle dipendenze in Python
- Specifica delle dipendenze in Go
- Specifica delle dipendenze in Java
- Specificare le dipendenze in .NET
- Specificare le dipendenze in Ruby
- Specifica delle dipendenze in PHP
Passaggi successivi
- Scopri come scrivere funzioni HTTP.
- Scopri come scrivere funzioni basate su eventi.
- Scopri di più sugli trigger delle funzioni Cloud Run.