Creazione di un'app Go su App Engine

ID regione

REGION_ID è un codice abbreviato assegnato da Google in base alla regione selezionata al momento della creazione dell'app. Il codice non corrispondono a un paese o a una provincia, anche se potrebbero essere visualizzati alcuni ID regione in modo simile ai codici paese e provincia 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 ad acquisire familiarità con lo sviluppo, il deployment e la gestione di un'app Go.

Costi

Non ci sono costi associati all'esecuzione di questa guida. Esecuzione di questa app di esempio non superi la quota gratuita.

Configurazione dell'ambiente di sviluppo

Puoi usare la tua macchina locale e strumenti che già conosci o Cloud Shell. Cloud Shell ha già installato Google Cloud CLI, il tuo ambiente è già configurato e offre molte altre funzionalità.

Computer locale

Installa Go e configura gcloud CLI.

Cloud Shell

Avvia Cloud Shell, che include tutti gli strumenti necessari preinstallate:

Apri Cloud Shell

Creazione di un progetto Google Cloud

Per utilizzare Google Cloud è necessario un progetto, che costituisce la base per l'utilizzo di servizi Google 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. To initialize the gcloud CLI, run the following command:

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

    Go to project selector

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

  9. Enable the Cloud Build API.

    Enable the API

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init
  12. Crea l'app App Engine e le risorse associate. Devi scegliere una località che non potrà essere modificata in un secondo momento.
    gcloud app create

Scrittura di un servizio web di base per App Engine

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

Strutturazione dei file

Il servizio avrà la seguente struttura di file:

  • go-app/: directory per il tuo servizio Go 1.11.
    • app.yaml: le impostazioni di configurazione del tuo servizio.
    • main.go: il codice della tua applicazione.

Creazione del file app.yaml in corso...

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

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

    mkdir go-app

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

    # Copyright 2019 Google LLC
    #
    # Licensed under the Apache License, Version 2.0 (the "License");
    # you may not use this file except in compliance with the License.
    # You may obtain a copy of the License at
    #
    #     https://www.apache.org/licenses/LICENSE-2.0
    #
    # Unless required by applicable law or agreed to in writing, software
    # distributed under the License is distributed on an "AS IS" BASIS,
    # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    # See the License for the specific language governing permissions and
    # limitations under the License.
    
    runtime: go121
    

    Questa è la configurazione più semplice per un'app App Engine. Indica ad App Engine che utilizzi il runtime Go 1.11. Il file app.yaml può anche specificare impostazioni di rete, impostazioni di scalabilità e altro ancora. Per ulteriori informazioni, consulta Riferimento app.yaml.

Creazione del file main.go in corso...

Questo esempio utilizza net/http per creare un server HTTP che stampi "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 nel runtime di Go 1.11, è necessario un package main l'affermazione deve essere definita all'inizio di almeno uno dei Vai ai file di origine nella stessa directory del file app.yaml del tuo servizio.

  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. Se scrivi al suo interno, invii i dati al browser. L'oggetto http.Request è una struttura di dati che rappresenta la richiesta HTTP in arrivo.

  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 al numero http.HandleFunc che indica al pacchetto http di gestire tutte le richieste al web ("/") con la funzione indexHandler.

    Se la variabile di ambiente PORT non è impostata, viene utilizzata la porta 8080 come valore predefinito. Quando l'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 che preferisci.

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 aprire 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 un servizio ed eseguirne il deployment in App Engine.

Servizi e versioni

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

Puoi aggiornare il servizio in qualsiasi momento eseguendo gcloud app deploy . Ogni volta che esegui il deployment, viene creata una nuova versione e viene inviato il traffico viene indirizzato automaticamente alla versione più recente.

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

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

    Visualizza servizi

    Dovresti vedere nell'elenco un servizio, chiamato default. Il servizio predefinito è pubblicamente accessibili al seguente URL:

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

  2. Visualizza le tue versioni:

    Visualizza versioni

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

Per scoprire come inviare richieste a servizi e versioni specifici, consulta 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 il pagine seguenti: