Como criar um aplicativo Go no App Engine

ID de região

O REGION_ID é um código abreviado que o Google atribui com base na região que você selecionou ao criar o aplicativo. O código não corresponde a um país ou estado, ainda que alguns IDs de região sejam semelhantes aos códigos de país e estado geralmente usados. Para apps criados após fevereiro de 2020, o REGION_ID.r está incluído nos URLs do App Engine. Para apps existentes criados antes dessa data, o ID da região é opcional no URL.

Saiba mais sobre IDs de região.

Com este guia, você começa a usar o App Engine e se familiarizar com o desenvolvimento, a implantação e o gerenciamento de um aplicativo Go.

Custos

Não há custos associados à execução deste guia. A execução do aplicativo de exemplo não excede sua cota gratuita.

Como configurar o ambiente de desenvolvimento

Use sua máquina local e as ferramentas com que já está familiarizado ou o Cloud Shell. O Cloud Shell já tem a Google Cloud CLI instalada, o ambiente já configurado e muitos outros recursos.

Máquina local

Instale o Go e configure a CLI gcloud.

Cloud Shell

Inicie o Cloud Shell, que tem todas as ferramentas necessárias pré-instaladas:

Abrir o Cloud Shell

Como criar um projeto do Google Cloud

É necessário ter um projeto para usar o Google Cloud. Ele é a base de uso de todos os serviços do 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. Crie seu aplicativo do App Engine e os recursos associados a ele. Escolha um local, que não poderá ser alterado depois.
    gcloud app create

Como criar um serviço da Web básico para o App Engine

Saiba como criar um serviço da Web e declarar as configurações do ambiente de execução.

Como estruturar seus arquivos

Seu serviço terá a seguinte estrutura de arquivos:

  • go-app/: diretório do serviço Go 1.11.
    • app.yaml: as configurações do seu serviço.
    • main.go: o código do aplicativo

Como criar o arquivo app.yaml

Cada projeto do App Engine tem um arquivo de configuração app.yaml que especifica as configurações do ambiente de execução do serviço. Sem esse arquivo, não é possível implantar o serviço.

  1. Crie uma nova pasta chamada go-app para seu serviço Go 1.11:

    mkdir go-app

  2. Na pasta go-app/, crie um arquivo chamado app.yaml e adicione o conteúdo a seguir:

    # 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
    

    Essa é a configuração mais simples para um aplicativo do App Engine. Ele indica ao App Engine que você está usando o ambiente de execução do Go 1.11. O arquivo app.yaml também pode especificar configurações de rede, configurações de dimensionamento e muito mais. Para mais informações, consulte a referência de app.yaml.

Como criar o arquivo main.go

Este exemplo usa o pacote net/http para criar um servidor HTTP que imprima "Hello world".

Para configurar seu arquivo main.go, faça o seguinte:

  1. Na pasta go-app/, crie um arquivo main.go.

  2. Adicione a instrução package main para tratar seu código como um programa executável:

    package main
    

    Para implantar um serviço no tempo de execução do Go 1.11, uma instrução package main deve ser definida no início de pelo menos um dos arquivos de origem do Go no mesmo diretório do arquivo app.yaml do serviço.

  3. Importe os pacotes a seguir:

    import (
    	"fmt"
    	"log"
    	"net/http"
    	"os"
    )
    
  4. Defina seu gerenciador 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!")
    }
    

    O objeto http.ResponseWriter monta a resposta do servidor HTTP. Ao gravar nele, você envia dados para o navegador. O objeto http.Request é uma estrutura de dados que representa a solicitação HTTP de entrada.

  5. Registre seu gerenciador 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)
    	}
    }
    

    A função main é o ponto de entrada do programa executável. Portanto, ela inicia o aplicativo. Ela começa com uma chamada para a função http.HandleFunc que orienta o pacote http a gerenciar todas as solicitações para a raiz da Web ("/") com a função indexHandler.

    Se a variável de ambiente PORT não estiver definida, a porta 8080 será usada como padrão. Quando o aplicativo estiver em execução no App Engine, a variável de ambiente PORT será definida para você. Porém, ao testar seu aplicativo localmente, será possível definir PORT com qualquer valor de sua preferência.

Como implantar o serviço da Web no App Engine

  1. No diretório go-app, onde o arquivo app.yaml está localizado, implante o serviço da Web no App Engine usando o seguinte comando:

    gcloud app deploy

  2. Para iniciar o navegador e visualizar o serviço da Web em https://PROJECT_ID.REGION_ID.r.appspot.com, execute o seguinte comando:

    gcloud app browse

Parabéns! Você acabou de criar e implantar um serviço no App Engine.

Serviços e versões

O primeiro serviço que você implantar para o aplicativo será o serviço padrão. É possível especificar o nome do serviço no arquivo app.yaml, mas se ele for omitido, será tratado como default. Também é possível implantar vários serviços além do serviço padrão.

Atualize o serviço a qualquer momento executando o comando gcloud app deploy. A cada implantação, uma nova versão é criada, e o tráfego é roteado automaticamente para a versão mais recente.

Para confirmar a criação do serviço e a implantação da versão:

  1. Veja os serviços do App Engine no console do Google Cloud:

    Ver os serviços

    Você verá um serviço listado, chamado default. Ele é acessível publicamente no seguinte URL:

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

  2. Veja as versões:

    Ver as versões

    Você verá uma versão com carimbo de data/hora, correspondente à implantação.

Para saber como enviar solicitações para serviços e versões específicos, consulte Como as solicitações são encaminhadas.

Próximas etapas

Parabéns! Você acabou de configurar e implantar o aplicativo da Web no App Engine.

Saiba como adicionar outros recursos ao aplicativo explorando as seguintes páginas: