GAEでHello World with Go

2020/06/07

事前準備

App Engine スタンダード環境での Go 1.12+ のクイックスタート

↑これをやって GAE 上にプロジェクトを作って Go を使えるようにしておく。

構成

goae/
├── app.yaml
├── go.mod
└── main.go

app.yaml

runtime go113

go1.13 はまだ beta らしい。

go.mod

$ go mod init goae
$ cat go.mod
module goae

go 1.14

1.14 だけど大丈夫かな?大丈夫だと思うけど。

main.go

package main

import (
	"fmt"
	"log"
	"net/http"
	"os"
)

func indexHandler(w http.ResponseWriter, r *http.Request) {
	if r.URL.Path != "/" {
		http.NotFound(w, r)
		return
	}

	fmt.Fprint(w, "Hello World!")
}

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)
	}
}

デプロイ

$ gcloud app deploy

これで待っていればデプロイされる。

$ gcloud app browse

デプロイされたらこのコマンドでブラウザが開いて確認できる。便利 :)