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 fornisce una panoramica dei tipi di funzioni Cloud Run e delle aspettative per il codice sorgente.

Tipi di funzioni Cloud Run

Esistono due tipi di funzioni di Cloud Run:

Utilizza una funzione HTTP quando hai bisogno che la funzione abbia un endpoint URL e rispondere a richieste HTTP, ad esempio per i webhook. Utilizzare una funzione basata su eventi quando la tua funzione deve essere attivata direttamente in risposta agli eventi all'interno di del tuo progetto Google Cloud, ad esempio i messaggi su un argomento Pub/Sub o le modifiche in un bucket Cloud Storage.

Struttura della directory di origine

Affinché le funzioni Cloud Run possano trovare la definizione della funzione, ogni runtime del linguaggio ha requisiti per la strutturazione del 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 chiamato index.js nella directory principale della funzione. Per specificare un valore diverso di origine principale, usa il campo main nel file package.json.

Il file package.json deve includere anche i seguenti elementi: Framework delle funzioni per Node.js come dipendenza:

{
  "main": "index.js",
  "dependencies": {
    "@google-cloud/functions-framework": "^3.0.0"
  }
}

Il codice nel file principale deve definire l'entry point della funzione e può importare altro codice e moduli 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 carica il codice sorgente da un file denominato main.py nel principale della directory delle funzioni. Il file principale deve avere il nome 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 delle 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, tranne 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 il Functions Framework per Go come dipendenza:

module example.com/my-module

require (
  github.com/GoogleCloudPlatform/functions-framework-go v1.5.2
)

Il codice nel pacchetto principale deve definire il punto di contatto della funzione e può importare altro codice dai sottopacchetti e dalle dipendenze come di consueto. Il pacchetto può anche definire più punti di accesso alle funzioni che possono essere implementati separatamente.

Java

La struttura di base della directory 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 qualsiasi nome. Se i 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 i seguenti elementi: Framework di funzioni 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 progetti come faresti con qualsiasi altro codice sorgente .NET. I file di origine possono avere qualsiasi nome.

Il file di progetto deve includere Framework di funzioni per .NET come dipendenza:

...
    <PackageReference Include="Google.Cloud.Functions.Hosting" Version="1.0.0" />
...

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.

Puoi anche utilizzare il pacchetto di modelli di funzioni Cloud Run per .NET per generare i file richiesti.

Ruby

La struttura di base della directory per le funzioni Ruby è la seguente:

.
├── app.rb
├── Gemfile
└── Gemfile.lock

Le funzioni Cloud Run caricano il codice sorgente da un file denominato app.rb nella directory principale della funzione. Il file principale deve avere il nome app.rb.

Il file Gemfile deve includere il Functions Framework 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ù punti di accesso alle funzioni che possono essere implementati 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 file principale deve avere il nome 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ù punti di accesso alle funzioni che possono essere implementati 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, consigliamo di suddividere i codebase multifunzione di grandi dimensioni mettendo ciascuna funzione nella propria directory di primo livello come mostrato sopra, con le di origine e di configurazione del progetto. 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 entry point per la funzione, ovvero il codice specifico che viene eseguito quando viene invocata 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 linguaggi, l'entry point è una funzione, mentre per altri è una classe. 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 gli strumenti standard per ogni runtime. Per maggiori informazioni informazioni, consulta la pagina appropriata:

Passaggi successivi