0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【ハンズオン】はじめてのGoogle Cloud App Engine

Posted at

はじめに

本記事では、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作成

  1. ダッシュボードの「プロダクト」から、「すべてのプロダクトを表示」をクリックします
    スクリーンショット 2025-05-02 9.56.51.png
  2. 「サーバーレス」の「App Engine」をクリックします
    image.png
  3. 「アプリケーションを作成」ボタンをクリックします
    image.png
  4. リージョンの各項目に下図赤枠の設定を入力し、「次へ」をクリックします
    (リージョンのasia-northeast1は東京リージョンです)
    image.png
  5. しばらく待って、下図のメッセージ「Your App Engine application has been created. 〜」が表示されたら、GAEの利用準備完了です
    赤枠内のプログラミング言語と環境は、このハンズオンではデフォルト(言語:Python、環境:標準)のままにしておきます
    image.png

Step2 Pythonアプリケーション作成

ローカルで以下のコードを実装したmain.pyを作成します。今回のハンズオンではFlaskGunicornを利用します。

main.py
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.txt1も以下の内容で作成します。

requirements.txt
Flask
gunicorn

Step3 設定ファイル作成

main.pyと同じディレクトリに以下設定内容のapp.yamlを作成します。

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を設定する
  • instance_class : F1では28時間の無料インスタンス時間/日が適用されます

Step4 アプリケーションのデプロイ

main.pyが格納されているディレクトリをターミナルで開き、以下のコマンドを実行してください。

zsh
gcloud app deploy

以下のようにデプロイ内容の確認を求められるので、内容に問題がなければ「Y」を入力し、エンターキーを押します。

zsh
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が表示されるのでコピーしておきます。

zsh
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を貼り付けアクセスします。
HelloWorld.png
ブラウザ上に、Pythonアプリの実行結果が表示されました。

CLIからgcloud app browseコマンドを実行することで、アクセスすることも可能です。

Step6 App Engineサービスの無効化(課金対策)

  1. 左側ナビゲーションメニューから「設定」をクリックします
    スクリーンショット 2025-05-02 13.35.53.png
  2. 「アプリケーションを無効にする」ボタンをクリックします
    スクリーンショット 2025-05-02 13.41.30.png
  3. 下図赤枠にアプリケーションIDを入力し、「無効にする」をクリックします
    スクリーンショット 2025-05-02 13.43.01.png
  4. Step5でアクセスしたURLを再度開き、Not Foundになることを確認します

サービスの無効化を怠ると、公開しているURLへ大量にアクセスされて無料枠を使い切ってしまい、多額の請求をされる可能性があるので注意してください。
参考:App Engineの料金

最後に

今回はPythonとFlaskで簡単にサーバーレス環境を作りましたが、GAEでは他にもGoやJava、Node.js、PHP、Rubyがサポートされています(2025年5月現在)。

このハンズオンも、途中でrequirements.txtを書き忘れる等、いくつかのケアレスミスで何度かつまずきましたが、初めてでも2〜3時間程度でアプリを動かすところまで到達できたので、学習コストとしては低いように感じられました。

学習のハードルは予想よりだいぶ低く感じられましたので、クラウドサービスの入門としてGAEを使ってみても良いかもしれません。

  1. pip install コマンドでインストールするパッケージ一覧を記述したファイル。GAEではデプロイと同時に、このファイルに記載されたパッケージを自動的にインストールする。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?