【GCP】AppEngineにアプリをデプロイしてDatastoreを操作する
GCPのAppEngine(Standard)上にGoで作成したWebアプリをデプロイして、Datastoreにデータを書き込むまでを実践してみます。
今回実施したこと
大きく分けて、Goでのアプリの作成、AppEngineにデプロイ、Datastoreへのデータの書き込みに分けられます。今回はローカルPCでCloudSDKを使用して作業を行ったため、そのときの情報も残しておこうと思います。
MaxOSにGoogleCloudSDKをインストール
下記ドキュメントの通りに進めてください。 cloud.google.com
どこにダウンロードしたファイルを配置するかですが、私はダウンロードしたファイルを/usr/localに配置しました。ディレクトリの用途からここにしようと思いました。このインストールの工程が完了すると、ローカルPCでもgcloudコマンドが使用できる様になります。
ここで、gcloudコマンドをいくつか実行するので、コマンドについて確認します。
gcloud init - CloudSDKの初期化を行うコマンドです。Cloud SDK をインストールした後に実行するコマンドです gcloud auth list - 認証情報が保存されているアカウントのリストが表示されます。 gcloud config list - プロパティのリストを表示します gcloud info - Cloud SDK 環境と有効な SDK 設定に関する情報を表示します gcloud help - コマンドに関する情報を表示します
GCP側の準備
AppEngineにデプロイするためにいくつか事前に作業をします。まずは自分が操作するプロジェクトをセットしましょう。gcloud config listを実行し、project の項目を確認します。
もし、対象が間違っていたらgcloud config set project ProjectIDを実行し、操作したいプロジェクトをセットします。
次に、gcloud app create コマンドを実行し、AppEngineを使用できるようにします。その後は作成したアプリケーションファイルがあるディレクトリに移動してgcloud app deploy でデプロイします。
下記にあるように、deployコマンド時はapp.yamlを指定することができます(app.yamlに関しては別途説明)。指定しないとカレントディレクトリにあるapp.yamlを対象としてデプロイします。
GoのWebアプリ
Goでウェブアプリを作成します。簡単な検証用に作成したので、本当に簡単な処理しか入れていないですが、下記を参照してください。
今回の記事でポイントになりそうな箇所を抜き出しました。
ここでは、AppEngineのパッケージをインポートしています。ローカルPCで開発するときは、go get google.golang.org/appengineでパッケージをダウンロードしてください。
import ( "google.golang.org/appengine" "google.golang.org/appengine/datastore" )
/put にアクセスした時にdatastoreputを実行します。datastoreputを見てもらえるとわかると思いますが、datastoreputは内部でp関数を呼び出しており、p関数ではGCPのDatastoreにてエンティティの作成を行う処理を書いています。つまり、/putにアクセスするとデータが登録されます。
func main() { http.HandleFunc("/put", datastoreput) appengine.Main() }
func datastoreput(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Put") p() }
ここではエンティティを作成しています。KindはGameDataKindで作成されます。
func p(ctx context.Context) { gamedata := &GameData{ Title: "nukitashi", Eval: 80, } key := datastore.NewIncompleteKey(ctx, "GameDataKind", nil) if _, err := datastore.Put(ctx, key, gamedata); err != nil { errors.New("my error 1") } }
まずはGameData構造体を使用して登録するデータを作成しています(gamedata)。datastoreのNewIncompleteKeyを実行し、不完全キーを作成します。そして、Putを使用してDatastoreにデータを登録します。この時にエンティティが作成されます。
datastoreパッケージの詳細は下記です。 cloud.google.com
- まとめ まずは、CloudSDKをインストールしましょう。そして、GCPのプロジェクトに対してAppEngineを使用できるようにして、自分で作成したアプリをデプロイする。
Datastoreにデータを登録したいときは、datastoreパッケージにある処理を使用して行いましょう。
他にも、ローカルPCでWebアプリを試す方法もありますが、一旦今回はここまでで。