Esegui funzioni con il framework di Functions
Cloud Functions utilizza il framework open source Librerie framework delle funzioni per il wrapping le funzioni di cui hai eseguito il deployment in un'applicazione HTTP permanente.
Il framework di Functions può essere eseguito anche su qualsiasi altra piattaforma che supporta del linguaggio stesso, tra cui la macchina locale, i server on-premise, Compute Engine e Cloud Run.
Installa le dipendenze
Nella directory della funzione, installa la libreria Framework di Functions per la lingua:
Vedi la libreria framework Java Functions per ulteriori informazioni.
Node.js
npm install --save-dev @google-cloud/functions-framework
Python
pip install functions-framework
Vai
go install github.com/GoogleCloudPlatform/functions-framework-go/funcframework
Java
Maven
Se utilizzi Maven, aggiungi il token
che segue al tuo file pom.xml
:
Gradle
Se utilizzi Gradle, aggiungi quanto segue al tuo
File build.gradle
:
C#
I comandi seguenti utilizzano i modelli .NET per creare una nuova funzione Cloud Functions .NET con il Libreria di framework.NET Functions come dipendenza:
# HTTP functions dotnet new gcf-http # CloudEvent functions dotnet new gcf-event
Ruby
In Ruby, il framework di Functions deve essere aggiunto al per eseguirne il deployment in Cloud Functions:
bundle add functions_framework
PHP
composer require google/cloud-functions-framework
Configura il framework di Functions
Prima di eseguire una funzione utilizzando il framework di Functions, devi prima specificare sia il tipo sia il nome della funzione che vuoi eseguire. Questi gli attributi possono essere specificati come flag dell'interfaccia a riga di comando o come variabili di ambiente.
Tipi di funzioni supportati
Il framework di Functions supporta entrambi i tipi di funzioni
supportate da Cloud Functions (2nd gen). Tutti i runtime delle lingue
supportano entrambi i tipi di firma, http
e cloudevent
.
Tipo di funzione | Tipo di firma | Descrizione | Supporto dei runtime |
---|---|---|---|
Funzioni attivate da HTTP |
http
|
Funzioni che ricevono e rispondono alle richieste HTTP. | Tutti i runtime |
Funzioni di CloudEvent |
cloudevent
|
Formato dell'evento standard di settore | Tutti i runtime |
Specifica quale funzione eseguire
Prima di eseguire una funzione con il framework di Functions, devi specificare quale funzione all'interno del codice deve essere eseguita. Per la maggior parte delle lingue, puoi specificando il nome del metodo della funzione target come mostrato in tabelle seguenti. (Eccezioni a questa regola, ad esempio Java e .NET è mostrato di seguito.
Istruzioni in base alla lingua
Consulta la tabella seguente per un elenco delle opzioni di configurazione supportate da ogni lingua.
Node.js
Argomento interfaccia a riga di comando | Variabile di ambiente | Descrizione |
---|---|---|
--port
|
PORT
|
La porta su cui rimanere in ascolto delle richieste. (Valore predefinito: 8080 )
|
--target
|
FUNCTION_TARGET
|
Il nome della funzione export ed da richiamare. (valore predefinito:
function )
|
--signature-type
|
FUNCTION_SIGNATURE_TYPE
|
Il tipo di firma utilizzato dalla tua funzione. Può essere http
(valore predefinito) o cloudevent .
|
Python
Argomento interfaccia a riga di comando | Variabile di ambiente | Descrizione |
---|---|---|
--port
|
PORT
|
La porta su cui rimanere in ascolto delle richieste. (Valore predefinito: 8080 )
|
--target
|
FUNCTION_TARGET
|
Il nome della funzione export ed da richiamare. (valore predefinito:
function )
|
--signature-type
|
FUNCTION_SIGNATURE_TYPE
|
Il tipo di firma utilizzato dalla tua funzione. Può essere http
(valore predefinito) o cloudevent .
|
Vai
Variabile di ambiente | Descrizione |
---|---|
PORT
|
La porta su cui rimanere in ascolto delle richieste. (Valore predefinito: 8080 )
|
Java
Nome argomento | Variabile di ambiente | Descrizione |
---|---|---|
run.port
|
PORT
|
La porta su cui rimanere in ascolto delle richieste. (Valore predefinito: 8080 )
|
run.functionTarget
|
FUNCTION_TARGET
|
Il nome della funzione export ed da richiamare. (valore predefinito:
function )
|
C#
Argomento interfaccia a riga di comando | Variabile di ambiente | Descrizione |
---|---|---|
--port
|
PORT
|
La porta su cui rimanere in ascolto delle richieste. (Valore predefinito: 8080 )
|
--target (o solo argomento)
|
FUNCTION_TARGET
|
Il nome classe della funzione da richiamare. (valore predefinito:
function )
|
Ruby
Argomento interfaccia a riga di comando | Variabile di ambiente | Descrizione |
---|---|---|
--port
|
PORT
|
La porta su cui rimanere in ascolto delle richieste. (Valore predefinito: 8080 )
|
--target
|
FUNCTION_TARGET
|
Il nome della funzione export ed da richiamare. (valore predefinito:
function )
|
PHP
Variabile di ambiente | Descrizione |
---|---|
FUNCTION_TARGET
|
Il nome della funzione da richiamare. (valore predefinito:
function )
|
FUNCTION_SIGNATURE_TYPE
|
Il tipo di firma utilizzato dalla tua funzione. Può essere http
(valore predefinito) o cloudevent .
|
Segui le istruzioni riportate di seguito per configurare ed eseguire il framework di Functions:
Node.js
Il framework delle funzioni Node.js ti consente di specificare il nome e tipo di firma come argomenti della riga di comando o variabili di ambiente.
Puoi anche specificare questi valori nel file di build package.json
aggiungendo un elemento
Script start
con gli argomenti dell'interfaccia a riga di comando richiesti, come mostrato nell'esempio di seguito.
"scripts": { "start": "npx functions-framework --target=YOUR_FUNCTION_NAME [--signature-type=YOUR_SIGNATURE_TYPE]" }
Sostituisci YOUR_FUNCTION_NAME con il nome del metodo della tua funzione e YOUR_SIGNATURE_TYPE (se applicabile) con il tipo di firma del tuo come illustrato nella tabella riportata sopra.
Python
Il framework delle funzioni Python consente di specificare il nome e tipo di firma come argomenti della riga di comando o variabili di ambiente. Gli argomenti della riga di comando devono essere specificati quando esegui il framework.
Vai
Il framework Go Functions utilizza funcframework.RegisterHTTPFunctionContext
per
specificare il target della funzione e il tipo di firma.
Java
Il framework di funzioni Java accetta dati di configurazione da tre diverse origini, nel seguente ordine di priorità (dal più specifico al meno specifico):
- Argomenti della riga di comando
- File di build
- Variabili di ambiente
Argomenti della riga di comando
Maven
Puoi specificare la funzione da eseguire aggiungendo quanto segue
flag dell'interfaccia a riga di comando (CLI) ai tuoi comandi mvn
:
-Drun.functionTarget=YOUR_FUNCTION_NAME
Puoi anche specificare la porta di destinazione aggiungendo il seguente flag dell'interfaccia a riga di comando in un in modo simile:
-Drun.port=12345
Gradle
I flag dell'interfaccia a riga di comando di Gradle sono quasi identici a quelli di Maven. L'unica modifica apportata da Gradle
è scambiare il -D
iniziale in ogni flag con un -P
come mostrato nell'esempio
sotto:
# Maven version -Drun.functionTarget=... # Gradle version -Prun.functionTarget=...
File di build
Puoi anche specificare la funzione che vuoi eseguire nel file di build del progetto. Sebbene Maven e Gradle abbiano flag dell'interfaccia a riga di comando simili, le relative clausole di buildfile sono diverse in modo significativo.
Maven
I file di build Maven sono denominati pom.xml
. Aggiungi la seguente clausola a questo file per
specifica una funzione target:
Sostituisci <functionTarget>
con il nome del corso del tuo
personalizzata. Ad esempio, una funzione nel pacchetto functions
con il nome della classe
HelloCloudFunctions
avrebbe il nome della classe
functions.HelloCloudFunctions
. È relativo al file di build padre
- pom.xml
o build.gradle
).
Gradle
I file di build Gradle sono denominati build.gradle
. Aggiungi la seguente clausola a
questo file per specificare una funzione target:
C#
Se crei il progetto utilizzando dotnet new
e uno dei modelli specificati
di cui sopra, il framework .NET Functions rileverà automaticamente la funzione.
Se il progetto contiene più funzioni, consulta nella sezione Esecuzione del framework per informazioni su come per eseguire una funzione specifica.
Ruby
Il framework di funzioni Ruby ti consente di specificare il nome e tipo di firma come argomenti della riga di comando o variabili di ambiente. Gli argomenti della riga di comando devono essere specificati quando esegui il framework.
PHP
Il framework di PHP Functions consente di specificare variabili di ambiente come argomenti della riga di comando.
Puoi anche specificare questi valori nel file di build composer.json
aggiungendo un elemento
start
come mostrato nell'esempio riportato di seguito.
"scripts": { "start": [ "Composer\\Config::disableProcessTimeout", "FUNCTION_TARGET=YOUR_FUNCTION_NAME php -S localhost:${PORT:-8080} vendor/bin/router.php" ] }
Sostituisci YOUR_FUNCTION_NAME con il nome della funzione e YOUR_SIGNATURE_TYPE (se applicabile) con il tipo di firma del tuo come illustrato nella tabella riportata sopra.
Esegui il framework di Functions
Utilizza il comando seguente per eseguire la funzione con il framework di Functions.
Per impostazione predefinita, la funzione sarà accessibile in localhost:8080
a meno che tu
specificare esplicitamente un valore PORT
.
Node.js
npm start
Python
functions-framework --target=YOUR_FUNCTION_NAME
Sostituisci YOUR_FUNCTION_NAME con il nome del metodo della funzione.
Vai
cd cmd go build ./cmd
Java
Maven
Utilizza questo comando per eseguire una funzione specificata in pom.xml
:
mvn function:run
Utilizza il seguente comando per eseguire una funzione specificata in una riga di comando argomento:
mvn function:run -Drun.functionTarget=YOUR_FUNCTION_NAME
Sostituisci YOUR_FUNCTION_NAME con il nome classe della funzione.
Gradle
Utilizza questo comando per eseguire una funzione specificata in build.gradle
:
./gradlew runFunction
Utilizza il seguente comando per eseguire una funzione specificata in una riga di comando argomento:
./gradlew runFunction -Prun.functionTarget=YOUR_FUNCTION_NAME
Sostituisci YOUR_FUNCTION_NAME con il nome classe della funzione.
C#
Utilizza il seguente comando per eseguire la funzione quando esattamente una funzione è presente nel progetto .NET attuale. Questa è la struttura predefinita progetti creati tramite modelli.)
dotnet run
Se il progetto .NET contiene più funzioni, usa il comando seguente per eseguire una funzione specifica. Sostituisci YOUR_FUNCTION_CLASSNAME con nome della classe della funzione, incluso lo spazio dei nomi.
dotnet run YOUR_FUNCTION_CLASSNAME
Per eseguire più funzioni contemporaneamente, devi eseguire
più istanze del framework Functions. Per evitare conflitti tra l'esecuzione
, ogni istanza deve utilizzare un valore PORT
diverso. La
Il seguente comando mostra come eseguire una funzione con un valore PORT
pari a 8080
.
dotnet run --target YOUR_FUNCTION_CLASSNAME --port 8080
Ruby
bundle exec functions-framework-ruby --target YOUR_FUNCTION_NAME
Sostituisci YOUR_FUNCTION_NAME con il nome del metodo della funzione.
PHP
export FUNCTION_TARGET=YOUR_FUNCTION_NAME php -S localhost:8080 vendor/bin/router.php
Sostituisci YOUR_FUNCTION_NAME con il nome della funzione.
Richiama la funzione
Consulta la pagina relativa alle chiamate alle funzioni locali per istruzioni su come interagire con la funzione eseguita localmente.
Esegui la pulizia
Al termine dell'esecuzione della funzione, arresta l'istanza del framework in esecuzione premendo Ctrl+C.