Goで書いたAPIサーバーをGoogle App Engineへデプロイするまでの最低限の手順

Go言語でJSONを返すAPIサーバーを書き、Google App EngineのStandard Environmentで運用するまでの最低限の流れのまとめ。

前段階

Golangのインストール

macOSの場合はbrewでインストールするのが楽。

brew update
brew install go

Google App Engine(GCP SDK)を使う場合、Go 1.8以降を使っていても$GOPATHを設定する必要がある。(参考: https://cloud.google.com/appengine/docs/standard/go/building-app/creating-your-application)

echo $GOPATH

$GOPATHが設定されていることを確認する。必要な場合は~/.bash_profileなどで$GOPATHを設定する。

echo $GOPATH=$HOME/go/

Google Cloud Platform SDKのインストール

最新のGCP SDKをインストールする。

https://cloud.google.com/sdk/docs/

GCP SDKはyumaptでインストール/管理しないことが推奨されている。

gcloud用のGoogleアカウント認証

gcloud auth login

でCLI(gcloud)からプロジェクトのデプロイなどができるように、ログインしておく。

GCPプロジェクトの作成

Google Cloud Consoleで新しいプロジェクトを作成する。

ベース部分の実装

ローカル作業ディレクトリの作成

mkdir myapp
cd myapp

Google App Engine用App設定ファイル(app.yaml)の作成

runtime: go
api_version: go1

handlers:

# All URLs are handled by the Go application script
- url: /.*
  script: _go_app

goファイルの作成


package main

import (
    "net/http"
    "encoding/json"

    "google.golang.org/appengine"
)

type Response struct {
    Status  string `json:"status"`
    Message string `json:"message"`
}

func main() {
    http.HandleFunc("/", handle)
    appengine.Main()
}

func handle(w http.ResponseWriter, r *http.Request) {
    json.NewEncoder(w).Encode(Response{Status: "ok", Message: "Hello world."})
}

JSONでレスポンスを返すシンプルなHTTPサーバー

ローカルで動作確認

dev_appserver.py app.yaml

http://localhost:8080/ にローカルサーバーが立ち上がり、動作を確認できる。ソースコード(app.yaml, main.go)を書き換えると、自動的にリビルドが走る。

サーバーにデプロイ

gcloud app deploy --project myapp

project引数をつけて、Google Cloud Platform上で作成したプロジェクトのidを指定する。GCP上にプロジェクトが一つしかない場合は、省略しても良いがつけておいたほうが安全。

動作確認

gcloud app browse --project myapp

ブラウザが起動し、デプロイされたコードの動きを確認できる。

参考

https://cloud.google.com/appengine/docs/standard/go/building-app/creating-your-application

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.