はじめに
本記事では、Google Cloud App Engine(GAE)のスタンダード環境にアプリケーションをデプロイし、実行するまでの手順を説明します。
この記事で触れないこと
- Google Cloudのアカウント作成、設定手順
- Google Cloudプロジェクトの作成手順
- Google Cloud CLIのインストール手順(こちらを参照してください)
- サーバーレスの説明
事前条件
- Google Cloudに請求情報が登録されていること(GAEの環境構築時に必要)
- Google Cloud CLIがインストールされていること(アプリケーションのデプロイ時に必要)
免責事項
本記事で使用している画面キャプチャ、ロゴ、商標等の知的財産権は、それぞれの権利所有者に帰属します。
引用しているGoogle Cloudの画面については、Google LLCのガイドラインに基づき、教育・技術共有を目的として引用しています。
また、記事の内容は筆者の個人的見解に基づくものであり、所属企業・団体の立場や意見を代表するものではありません。
Google Cloud App Engine(GAE)とは
Google Cloud上で動作するサーバーレスプラットフォームです。
特に、以下2つの環境があります。
- スタンダード環境
- 特定の言語とバージョン向けに最適化されたアプリケーション実行環境
- 最小インスタンス数はゼロまでスケールダウン可能(スケール・トゥ・ゼロ)
- 無料枠が利用可能
- フレキシブル環境
- Dockerコンテナ実行環境
- スタンダード環境ではサポートされていないプログラミング言語やバージョンの利用が可能
- 最小インスタンス数はゼロにできない
- 無料枠なし
ハンズオン
以下、環境の作成から動作確認、課金されないように無効化するまでの手順です。
Step1 App Engine作成
- ダッシュボードの「プロダクト」から、「すべてのプロダクトを表示」をクリックします
- 「サーバーレス」の「App Engine」をクリックします
- 「アプリケーションを作成」ボタンをクリックします
- リージョンの各項目に下図赤枠の設定を入力し、「次へ」をクリックします
(リージョンのasia-northeast1は東京リージョンです)
- しばらく待って、下図のメッセージ「Your App Engine application has been created. 〜」が表示されたら、GAEの利用準備完了です
赤枠内のプログラミング言語と環境は、このハンズオンではデフォルト(言語:Python、環境:標準)のままにしておきます
Step2 Pythonアプリケーション作成
ローカルで以下のコードを実装したmain.py
を作成します。今回のハンズオンではFlaskとGunicornを利用します。
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return 'Hello, World from App Engine Standard Environment in Tokyo!'
if __name__ == '__main__':
app.run(host='127.0.0.1', port=80, debug=True)
あわせて、requirements.txt
1も以下の内容で作成します。
Flask
gunicorn
Step3 設定ファイル作成
main.py
と同じディレクトリに以下設定内容のapp.yaml
を作成します。
runtime: python312
entrypoint: gunicorn -b :$PORT main:app
instance_class: F1
automatic_scaling:
min_instances: 0
max_instances: 1
設定値について
- runtime : 使用するPythonのランタイムを指定(適切なバージョンに変更してください)
- 設定例として、Python3.10で動作確認したプログラムをデプロイする場合は
python310
を設定する
- 設定例として、Python3.10で動作確認したプログラムをデプロイする場合は
- instance_class : F1では28時間の無料インスタンス時間/日が適用されます
Step4 アプリケーションのデプロイ
main.py
が格納されているディレクトリをターミナルで開き、以下のコマンドを実行してください。
gcloud app deploy
以下のようにデプロイ内容の確認を求められるので、内容に問題がなければ「Y」を入力し、エンターキーを押します。
Services to deploy:
descriptor: [/Users/yoda/AppEngine/app.yaml]
source: [/Users/yoda/AppEngine]
target project: [YOUR_PROJECT_ID]
target service: [default]
target version: [yyyyMMddthhmmss]
target url: [https://YOUR_PROJECT_ID.***.com]
target service account: [YOUR_PROJECT_ID@***.com]
Do you want to continue (Y/n)?
「YOUR_PROJECT_ID」には、自身のプロジェクトIDが表示されます
ターミナルに以下のメッセージが表示されます。
Deployed serviceから始まる行に、URLが表示されるのでコピーしておきます。
Beginning deployment of service [default]...
╔════════════════════════════════════════════════════════════╗
╠═ Uploading 0 files to Google Cloud Storage ═╣
╚════════════════════════════════════════════════════════════╝
File upload done.
Updating service [default]...done.
Setting traffic split for service [default]...done.
Deployed service [default] to [https://YOUR_PROJECT_ID.***.com]
You can stream logs from the command line by running:
$ gcloud app logs tail -s default
To view your application in the web browser run:
$ gcloud app browse
Step5 ブラウザでアクセス
お好みのブラウザに、前項でコピーしたURLを貼り付けアクセスします。
ブラウザ上に、Pythonアプリの実行結果が表示されました。
CLIからgcloud app browse
コマンドを実行することで、アクセスすることも可能です。
Step6 App Engineサービスの無効化(課金対策)
- 左側ナビゲーションメニューから「設定」をクリックします
- 「アプリケーションを無効にする」ボタンをクリックします
- 下図赤枠にアプリケーションIDを入力し、「無効にする」をクリックします
- Step5でアクセスしたURLを再度開き、Not Foundになることを確認します
サービスの無効化を怠ると、公開しているURLへ大量にアクセスされて無料枠を使い切ってしまい、多額の請求をされる可能性があるので注意してください。
参考:App Engineの料金
最後に
今回はPythonとFlaskで簡単にサーバーレス環境を作りましたが、GAEでは他にもGoやJava、Node.js、PHP、Rubyがサポートされています(2025年5月現在)。
このハンズオンも、途中でrequirements.txt
を書き忘れる等、いくつかのケアレスミスで何度かつまずきましたが、初めてでも2〜3時間程度でアプリを動かすところまで到達できたので、学習コストとしては低いように感じられました。
学習のハードルは予想よりだいぶ低く感じられましたので、クラウドサービスの入門としてGAEを使ってみても良いかもしれません。
-
pip install コマンドでインストールするパッケージ一覧を記述したファイル。GAEではデプロイと同時に、このファイルに記載されたパッケージを自動的にインストールする。 ↩