[ GCP ] メガネと学ぶ GCP (6) AppEngine で hello world してみる

[ GCP ] メガネと学ぶ GCP (6) AppEngine で hello world してみる

こんばんは、七色メガネです。

今回は、Google Cloud Platform で提供される App Engine を使用して、 helloWorld を表示する簡単なwebアプリを作成していたいと思います。

 

AppEngine ってなに?

AppEngineとは、GCPのコンピューティング・ジャンルで提供されるサービスの一つで、Webアプリの開発の為のPaaSです。詳しくは下記の記事をご覧ください。

[ GCP ] メガネと学ぶ Google Cloud Platform (2) コンピュート・サービスについて

 

Webアプリを作成する

今回のテストで取る手順は次の通りです。

  1. AppEngine を起動する
  2. サーバプログラム(weserver.go) と 表示するHTMLファイル(index.html) を用意する。
  3. デプロイ用の構成ファイル(app.yaml) を用意する。
  4. ローカル環境で開発用サーバを立て、デプロイのテストをする。
  5. AppEngine上のサーバへデプロイし、意図通りの動作が為されていることを確認する。

 

1. AppEngine を起動する

まずはGCPコンソール上で、AppEngineを起動します。GCPコンソールのメニューから AppEngine を洗濯してください。

リージョンは asia-northeast1 を選択します。東京リージョンですね。

使用する言語と環境を選択します。
今回は言語はGOで、環境はStandardを選択します。

ここまで選択したら、コンソール上での操作は終了です。ComuputeEngineでインスタンスを作成した時よりも、ずっと設定が少ないですね。

2. サーバプログラム(weserver.go) と 表示するHTMLファイル(index.html) を用意する。

次に、サーバ用のプログラムとHTMLファイルを用意します。
前回あたりの記事でlocalhostにwebサーバを立てたので、今回はそのプログラムを流用します。
使用するのは次の2ファイルです。

  • webserver.go
  • index.html

サーバ用プログラムについては、AppEngine 用に書き換えてあるところがあるので解説します。

変更箇所にコメントで <<add>> を記載しています。

  1. add1
    GOのAppEngine用のライブラリを追加しています。
    このライブラリは次のコマンドでインストールしてください。
  2. add2
    ディレクトリ構造が変わったので、パスを変更しています。今回は全てのファイルを同一レベルに配置します。
  3. add3
    アドレスをlistenする関数を、AppEngine用のものに変更しています。

関数 Main() は、AppEngine における主要なエントリーポイントになります。ポートの指定は受け付けず、デフォルトで 8080番 へのアクセスをlistenします。環境変数 $PORT を更新することで、対応ポートを変更することができます。

 

これでサーバ用のプログラムは準備ができました。
HTMLファイルはなんでも良いです。中身が気になる方は前回の記事を参照してください。

3.  デプロイ用の構成ファイル(app.yaml) を用意する。

次にデプロイ用の構成ファイルを作成します。

構成ファイルは yaml 形式で記載し、名称は必ず app.yaml とします。
記載内容は次のようにします。

  • runtime
    アプリで使用されるランタイム環境の名前です。今回はgoを使用しています。
  • api_version
    このアプリで使用するAPIのバージョンです。go1 を指定すると、デプロイ時の最新のランタイム環境が使用されます。
  • url
    正規表現を使用したURLパターンです。
  • script
    スクリプトパスの指定です。goの場合は常に _go_app を指定します。

 

4.  ローカル環境で開発用サーバを立て、デプロイのテストをする。

ここまでで使用するファイルが全て用意できました。
作成したファイルは全て、同一ディレクトリ上に配置しておきます。

配置したら、ローカル環境でデプロイのテストをしてみます。
この操作をするに当たって、次の準備が必要です。

  1. Google Cloud SDK のインストール
  2. Python2 系のインストール

準備ができたら、 app.yaml を配置した場所に移動し、次のコマンドを実行します。

  • python3 系では動きませんので、python2 を明示的に指定します。
  • dev_appserver.py がサーバを立てるプログラムです。場所がわからないときは which コマンドを使いましょう。

 

コマンドを実行すると、サーバが立ち上がります。
localhost の 8080 番にアクセスして動作を確認しましょう。

問題なく表示できています。コンソール上にレスポンスも表示されているので確認します。

200 の正常コードが返却されているので、問題ないことが確認できました。

5.  AppEngine上のサーバへデプロイし、意図通りの動作が為されていることを確認する。

ローカルでの確認が済んだので、AppEngineでのデプロイを行います。今回はGCPコンソールの Cloud Shell (ターミナルのようなもの)からデプロイ操作を行います。

まずはGCPコンソールから Cloud Shell を開きます。

Cloud Shell が表示されるので、ここに先ほど作成したファイルを転送します。
ここではgitを使用します。

次のコマンドを叩いて今回作成したプログラムをダウンロードしてください。
すると serverTest というディレクトリが作成されるかと思います。

serverTest の中に作成したファイルが配置されているので、そこへ移動します。今回は app.yaml もここにあるので、この場所で次のコマンドを実行してデプロイを行います。

実行後少し待つと、デプロイが完了します。
次のコマンドを実行して、表示されたURLへ飛んでみましょう。

無事、正常に表示されました。ローカルではないので、これでもちろん全世界のどこからでもこのページにアクセスすることができます。

 

まとめ

  • AppEngine上でプログラムをデプロイするだけで、簡単にWebアプリを公開できる。
  • AppEngine を使用して開発する場合は、google.golang.org/appengine ライブラリを使用する。

 

以上です。ここまでご覧いただき、ありがとうございました!

 

参考

プログラマのためのGoogle Cloud Platform入門

GoogleCloudPlatformカテゴリの最新記事