Creare un'app Go su App Engine

Google Cloud

ID regione

L'REGION_ID è un codice abbreviato che Google assegna in base alla regione selezionata quando crei l'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 di 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 Google Cloud servizi e aggiungere altre funzionalità all'app.

Costi

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

Configurazione dell'ambiente di sviluppo

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

Macchina locale

Installa Go e configura gcloud CLI come descritto in Configurare l'ambiente di sviluppo.

Cloud Shell

Avvia Cloud Shell, che ha tutti gli strumenti di cui avrai bisogno preinstallati:

Apri Cloud Shell

Creare un Google Cloud progetto

È necessario un progetto per utilizzare Google Cloud, che costituisce la base per l'utilizzo di tutti i Google Cloud servizi.

  1. Accedi al tuo Google Cloud account. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti senza costi per l'esecuzione, il test e il deployment dei workload.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Build API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. Installa Google Cloud CLI.

  6. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  7. Per inizializzare gcloud CLI, esegui questo comando:

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Cloud Build API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  11. Installa Google Cloud CLI.

  12. Se utilizzi un provider di identità (IdP) esterno, devi prima accedere a gcloud CLI con la tua identità federata.

  13. Per inizializzare gcloud CLI, esegui questo comando:

    gcloud init
  14. Crea l'app App Engine e le risorse associate. Devi scegliere una località, che non può essere modificata in un secondo momento.
    gcloud app create
  15. A causa delle modifiche al comportamento predefinito di utilizzo dei service account di Cloud Build 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 ulteriori informazioni sulla concessione di ruoli specifici, consulta la guida alla risoluzione dei problemi.

Scrivere 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/: directory per il 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à sottoposto a deployment senza questo file.

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

    mkdir go-app

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

    runtime: go126  # 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 della rete, impostazioni di scalabilità e altro ancora. Per ulteriori informazioni, consulta il app.yaml riferimento.

Creare il file main.go

Questo esempio utilizza il net/http pacchetto 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 correttamente il deployment di un servizio, è necessario definire un'istruzione package main all'inizio di almeno uno dei file di origine Go.

  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; scrivendoci, invii i 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 http.HandleFunc funzione 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, viene utilizzata la porta 8080 come predefinita. Quando l'app è in esecuzione su App Engine, la variabile di ambiente PORT viene impostata automaticamente, ma quando testi l'app in locale, puoi impostare PORT su qualsiasi valore preferito.

Eseguire 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 su 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 default. Puoi eseguire il deployment di più servizi diversi dal servizio 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 automaticamente indirizzato all'ultima versione.

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

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

    Visualizza i servizi

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

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

  2. Visualizza le versioni:

    Visualizza le versioni

    Dovresti vedere una versione con timestamp elencata, corrispondente al deployment.

Per scoprire come inviare richieste a servizi e versioni specifici, consulta la sezione Come vengono indirizzate le richieste.

Passaggi successivi

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

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