Creare un'app Go su App Engine

ID regione

Il REGION_ID è un codice abbreviato che Google assegna in base alla regione selezionata durante la creazione dell'app. Il codice non corrisponde a un paese o a una provincia, anche se alcuni ID regione possono sembrare simili ai codici di paesi e province di uso comune. Per le app create dopo febbraio 2020, REGION_ID.r è incluso negli URL App Engine. Per le app esistenti create prima di questa data, l'ID regione è facoltativo nell'URL.

Scopri di più sugli ID regione.

Questa guida ti aiuta a iniziare a utilizzare App Engine e a familiarizzare con lo sviluppo, il deployment e la gestione di un'app Go.

Dopo aver creato l'app, puoi leggere altri tutorial per scoprire come integrarla con altri servizi Google Cloud e aggiungere altre funzionalità alla tua app.

Costi

Non sono previsti costi per l'esecuzione di questa guida. L'esecuzione di questa app di esempio da sola non supera la quota gratuita.

Configurazione dell'ambiente di sviluppo

Puoi utilizzare la tua macchina locale e gli strumenti che già conosci oppure Cloud Shell. Cloud Shell ha già installato Google Cloud CLI, l'ambiente è già configurato e sono disponibili molte altre funzionalità.

Macchina locale

Installa Go e configura la gcloud CLI come descritto in Configurazione dell'ambiente di sviluppo.

Cloud Shell

Avvia Cloud Shell, che ha tutti gli strumenti necessari preinstallati:

Apri Cloud Shell

Crea un progetto Google Cloud

È necessario un progetto per utilizzare Google Cloude costituisce la base per l'utilizzo di tutti i serviziGoogle Cloud .

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Build API.

    Enable the API

  5. Install the Google Cloud CLI.

  6. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  7. To initialize the gcloud CLI, run the following command:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  9. Make sure that billing is enabled for your Google Cloud project.

  10. Enable the Cloud Build API.

    Enable the API

  11. Install the Google Cloud CLI.

  12. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  13. To initialize the gcloud CLI, run the following command:

    gcloud init
  14. Crea l'app App Engine e le relative risorse. Devi scegliere una località, che non potrà essere modificata in un secondo momento.
    gcloud app create
  15. A causa delle modifiche al comportamento predefinito per il modo in cui Cloud Build utilizza i service account nei nuovi progetti e delle modifiche ai criteri dell'organizzazione sicuri per impostazione predefinita, potresti dover concedere ruoli aggiuntivi al account di servizio di deployment. Per saperne di più sulla concessione di ruoli specifici, consulta la guida alla risoluzione dei problemi.
  16. Scrivi un servizio web di base per App Engine

    Scopri come scrivere un servizio web e dichiarare le impostazioni di runtime.

    Strutturare i file

    Il servizio avrà la seguente struttura di file:

    • go-app/: la directory per il tuo servizio Go.
      • app.yaml: le impostazioni di configurazione del servizio.
      • main.go: il codice dell'applicazione.

    Creare il file app.yaml

    Ogni progetto App Engine ha un file di configurazione app.yaml che specifica le impostazioni dell'ambiente di runtime del servizio. Il servizio non verrà implementato senza questo file.

    1. Crea una nuova cartella denominata go-app per il tuo servizio Go:

      mkdir go-app

    2. Nella cartella go-app/, crea un file denominato app.yaml e aggiungi i seguenti contenuti:

      runtime: go123  # or another supported version
      

      Questa è la configurazione più semplice per un'app App Engine. Indica ad App Engine che stai utilizzando Go. Il file app.yaml può specificare altre versioni di Go, impostazioni di rete, impostazioni di scalabilità e altro ancora. Per ulteriori informazioni, consulta il riferimento app.yaml.

    Creare il file main.go

    Questo esempio utilizza il pacchetto net/http per creare un server HTTP che stampa "Hello, World!".

    Per configurare il file main.go:

    1. Nella cartella go-app/, crea un file main.go.

    2. Aggiungi l'istruzione package main per trattare il codice come un programma eseguibile:

      package main
      

      Per eseguire il deployment di un servizio, all'inizio di almeno uno dei tuoi file sorgente Go deve essere definita un'istruzione package main.

    3. Importa i seguenti pacchetti:

      import (
      	"fmt"
      	"log"
      	"net/http"
      	"os"
      )
      
    4. Definisci il gestore HTTP:

      
      // indexHandler responds to requests with our greeting.
      func indexHandler(w http.ResponseWriter, r *http.Request) {
      	if r.URL.Path != "/" {
      		http.NotFound(w, r)
      		return
      	}
      	fmt.Fprint(w, "Hello, World!")
      }
      

      L'oggetto http.ResponseWriter assembla la risposta del server HTTP; scrivendo al suo interno, invii dati al browser. L'oggetto http.Request è una struttura di dati che rappresenta la richiesta HTTP in entrata.

    5. Registra il gestore HTTP:

      
      func main() {
      	http.HandleFunc("/", indexHandler)
      
      	port := os.Getenv("PORT")
      	if port == "" {
      		port = "8080"
      		log.Printf("Defaulting to port %s", port)
      	}
      
      	log.Printf("Listening on port %s", port)
      	if err := http.ListenAndServe(":"+port, nil); err != nil {
      		log.Fatal(err)
      	}
      }
      

      La funzione main è il punto di ingresso del programma eseguibile, quindi avvia l'applicazione. Inizia con una chiamata alla funzione http.HandleFunc, che indica al pacchetto http di gestire tutte le richieste alla radice web ("/") con la funzione indexHandler.

      Se la variabile di ambiente PORT non è impostata, la porta 8080 viene utilizzata come valore predefinito. Quando la tua app è in esecuzione su App Engine, la variabile di ambiente PORT viene impostata automaticamente, ma quando testi l'app localmente, puoi impostare PORT su qualsiasi valore preferito.

    Esegui il deployment del servizio web su App Engine

    1. Nella directory go-app in cui si trova il file app.yaml, esegui il deployment del servizio web in App Engine utilizzando il seguente comando:

      gcloud app deploy

    2. Per avviare il browser e visualizzare il servizio web all'indirizzo https://PROJECT_ID.REGION_ID.r.appspot.com, esegui questo comando:

      gcloud app browse

    Complimenti! Hai appena creato ed eseguito il deployment di un servizio su App Engine.

    Servizi e versioni

    Il primo servizio di cui esegui il deployment per la tua applicazione sarà il servizio predefinito. Puoi specificare il nome del servizio nel file app.yaml, ma se il nome viene omesso, viene considerato come default. Puoi eseguire il deployment di più servizi diversi da quello predefinito.

    Puoi aggiornare il servizio in qualsiasi momento eseguendo il comando gcloud app deploy. Ogni volta che esegui il deployment, viene creata una nuova versione e il traffico viene indirizzato automaticamente all'ultima versione.

    Per confermare la creazione del servizio e il deployment della versione:

    1. Visualizza i tuoi servizi App Engine nella console Google Cloud :

      Visualizza servizi

      Dovresti visualizzare un servizio elencato, denominato default. Il servizio predefinito è accessibile pubblicamente al seguente URL:

      https://PROJECT_ID.REGION_ID.r.appspot.com

    2. Visualizzare le versioni:

      Visualizza le versioni

      Dovresti visualizzare una versione con timestamp elencata, corrispondente alla tua implementazione.

    Per scoprire come inviare richieste a servizi e versioni specifici, consulta la sezione Modalità di routing delle richieste.

    Passaggi successivi

    Complimenti! Hai appena configurato ed eseguito il deployment della tua applicazione web in App Engine.

    Scopri come aggiungere altre funzionalità alla tua applicazione esplorando le seguenti pagine: