Python App Engine スタンダード環境のクイックスタート

このクイックスタートでは、短いメッセージを表示する小さな App Engine アプリケーションを作成する方法について説明します。

始める前に

このクイックスタートを実行してデプロイする前に、次の手順で App Engine 用に GCP プロジェクトを設定し、Cloud SDK をインストールする必要があります。

  1. GCP Console を使用して、新しい GCP プロジェクトと App Engine アプリケーションを作成します。

    App Engine に移動

    プロンプトが表示されたら、App Engine アプリケーションを配置するリージョンを選択します。App Engine アプリケーションを作成すると、ダッシュボードが開きます。

  2. Cloud SDK をダウンロードしてインストールします。Cloud SDK ページの指示に沿って、gcloud コマンドライン ツールで GCP プロジェクト ID を初期化して設定します。

    SDK をダウンロード

  3. 次のコマンドを実行して、Python 用の App Engine 拡張機能が含まれている gcloud コンポーネントをインストールします。

    gcloud components install app-engine-python
    
  4. Python 開発用に環境を準備します。ご使用のシステムに最新バージョンの Python、pipvirtualenv、その他関連ツールをインストールしておくことをおすすめします。詳細については、Python 開発環境の設定ガイドをご覧ください。

App Engine のロケーション

App Engine はリージョナルです。つまり、アプリを実行するインフラストラクチャは特定のリージョンに配置され、そのリージョン内のすべてのゾーンで冗長的に利用できるように Google によって管理されます。

レイテンシ、可用性、耐久性の要件を満たすことが、アプリを実行するリージョンを選択する際の主な要素になります。一般に、アプリのユーザーに最も近いリージョンを選択できますが、アプリで使用されている他の GCP プロダクトやサービスのロケーションを考慮する必要があります。使用するサービスが複数のロケーションにまたがっていると、アプリのレイテンシだけでなく、料金にも影響します。

App Engine は次のリージョンで利用できます。

  • northamerica-northeast1(モントリオール)
  • us-central(アイオワ)
  • us-west2(ロサンゼルス)
  • us-east1(サウスカロライナ)
  • us-east4(バージニア北部)
  • southamerica-east1(サンパウロ)*
  • europe-west(ベルギー)
  • europe-west2(ロンドン)
  • europe-west3(フランクフルト)
  • asia-northeast1(東京)
  • asia-south1(ムンバイ)
  • australia-southeast1(シドニー)

* サンパウロ リージョンをご利用のお客様には、すべてのリージョナル プロダクト SLA が引き続き有効です。ただし、北米と南米を対象とするマルチリージョン機能およびクロスリージョン機能は、可用性またはパフォーマンスが一時的に低下する可能性があります。

アプリのリージョンを設定した後で変更することはできません。

App Engine アプリケーションをすでに作成している場合は、gcloud app describe コマンドを実行するか、GCP Console の App Engine ダッシュボードを開くことで、リージョンを表示できます。App Engine アプリケーションのリージョンは http://[YOUR_PROJECT_ID].appspot.com に表示されます。

Hello World アプリをダウンロード

Python 用にシンプルな Hello World アプリが用意されているため、Google Cloud Platform へのアプリのデプロイをすぐに体験できます。次の手順に沿って Hello World をローカルマシンにダウンロードしてください。

  1. Hello World サンプルアプリ レポジトリのクローンをローカルマシンに作成します。

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples
    
  2. 次に、サンプルコードを含むディレクトリに移動します。

    cd python-docs-samples/appengine/standard/hello_world
    

または、.zip ファイルとしてサンプルをダウンロードして展開します。

アプリケーションをテストする

SDK に含まれるローカルの開発用サーバー(dev_appserver.py)を使用して、アプリケーションをテストします。

  1. アプリの app.yaml 構成ファイルがある hello_world ディレクトリ内から、次のコマンドを使用してローカルの開発用サーバーを起動します。

    dev_appserver.py app.yaml
    

    ローカルの開発用サーバーが起動し、ポート 8080 でリクエストを待機します。問題が発生する場合は、ここをクリックしてください。

  2. ウェブブラウザで http://localhost:8080/ にアクセスしてアプリを表示します。

ローカル開発サーバー(dev_appserver.py)の実行

ローカルの開発用サーバーを実行するには、ディレクトリをフルパスで指定して dev_appserver.py を実行するか、PATH 環境変数に dev_appserver.py を追加します。

  • 元の App Engine SDK をインストールした場合、ツールは次の場所に配置されています。

    [PATH_TO_APP_ENGINE_SDK]/dev_appserver.py
    
  • Google Cloud SDK をインストールした場合、ツールは次の場所に配置されています。

    [PATH_TO_CLOUD_SDK]/google-cloud-sdk/bin/dev_appserver.py
    

    ヒント: Google Cloud SDK ツールを PATH 環境変数に追加し、シェルでコマンドの補完を有効にするには、次のコマンドを実行します。

    [PATH_TO_CLOUD_SDK]/google-cloud-sdk/install.sh
    

ポート番号の変更方法など、ローカルの開発用サーバーの実行について詳しくは、ローカルの開発用サーバーのリファレンスをご覧ください。

変更する

アプリケーションの開発中は、開発用サーバーを起動したままにすることができます。開発用サーバーはソースファイル内の変更を監視し、必要に応じてファイルを再読み込みします。

  1. では試してみましょう。開発用サーバーを起動したまま main.py を編集して、Hello, World! を 別の文字列に変更します。
  2. http://localhost:8080/ を再読み込みして結果を確認します。

アプリケーションをデプロイする

アプリを App Engine にデプロイするには、app.yaml ファイルが保存されているアプリケーションのルート ディレクトリ内から次のコマンドを実行します。

gcloud app deploy

オプションのフラグをご覧ください。

一般的な gcloud コマンドフラグ

  • アプリのバージョンを一意に識別する ID を指定するには --version フラグを含めます。これを含めない場合、自動的に生成されます。例: --version [YOUR_VERSION_ID]
  • gcloud ツールでデフォルトとして初期設定したものに代わる GCP プロジェクト ID を指定するには、--project フラグを含めます。例: --project [YOUR_PROJECT_ID]

例:

gcloud app deploy --version pre-prod-5 --project my-sample-app

コマンドラインからアプリをデプロイする方法の詳細については、Python アプリのデプロイをご覧ください。すべてのコマンドフラグのリストについては、gcloud app deploy リファレンスをご覧ください。

アプリケーションを表示する

ブラウザを起動して http://[YOUR_PROJECT_ID].appspot.com でアプリを表示するには、次のコマンドを実行します。

gcloud app browse

これで完了です。

このクイックスタートは以上です。

このクイックスタート後のクリーンアップの詳細については、以下の説明をご覧ください。また、デプロイしたアプリケーションを活用できる次のステップへのリンクも併せてご覧ください。

この Hello World アプリについて詳しくは、Hello World コードレビューセクションをご覧ください。

クリーンアップ

請求を有効にしている場合は、GCP プロジェクトを削除すると課金が発生しません。これでそのプロジェクト内のすべてのリソースへの課金が停止されます。

  1. GCP Console で [プロジェクト] ページに移動します。

    プロジェクト ページに移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[プロジェクトの削除] をクリックします。 プロジェクト名の横にあるチェックボックスを選択し、[プロジェクトの削除] をクリックする
  3. ダイアログにプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

次のステップ

基本的な Flask アプリを開発する

Google App Engine スタンダード環境で実行する基本的な Python 2.7 アプリケーションを開発し、デプロイする方法について説明します。Google App Engine とその関連サービスをこれまで使用したことがない場合、特に App Engine と Python 言語の組み合わせを使用したことがない場合は、Flask ガイドをご覧ください。このガイドでは、スタートガイドに記載されている各タスクについて詳しく説明しています。詳細については、App Engine スタンダード環境で Flask を使ってみるをご覧ください。

カスタム ドメインを使用する

App Engine アプリには、appspot.com の代わりに独自のカスタム ドメインを使用することもできます。詳しくは、カスタム ドメインと SSL を使用するをご覧ください。

Hello World コードレビュー

Hello World は最もシンプルな App Engine アプリです。1 つのサービス、1 つのバージョンのみで、すべてのコードがアプリのルート ディレクトリにあります。このセクションでは、このアプリの各ファイルを詳しく説明します。

main.py

この Python スクリプトはリクエストに対して、HTTP ヘッダーとメッセージ Hello, World! で応答します。

import webapp2

class MainPage(webapp2.RequestHandler):
    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.write('Hello, World!')

app = webapp2.WSGIApplication([
    ('/', MainPage),
], debug=True)

app.yaml

app.yaml 構成ファイルは、アプリのいくつかのオプションを定義し、どの URL にどのハンドラ スクリプトを使用するかを記述します。

runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /.*
  script: main.app

この構成ファイルは、上から下へ順に、アプリケーションに関する次の情報を記述しています。

  • このコードは python27 ランタイム環境で API バージョン 1 を実行します。
  • このアプリケーションは threadsafe です。そのため、1 つのインスタンスで複数のリクエストを同時に処理できます。スレッドセーフは先進的な機能であるため、アプリケーションがスレッドセーフに対応するよう適切に設計されていない場合、動作にエラーが生じることがあります。
  • パスが正規表現 /.*(すべての URL)に合致する場合、その URL に対するリクエストはすべて、main Python モジュールの app オブジェクトで処理されます。

このファイルの構文は YAML 形式です。構成オプションの全リストについては、app.yaml リファレンスをご覧ください。

さらに詳しく

プラットフォーム全体について学ぶ

App Engine アプリの開発とデプロイの概要を理解したところで、Google Cloud Platform の残りの部分についても学習しましょう。App Engine だけでなくプラットフォーム全体を使用するアプリケーションの作成方法を学ぶチュートリアルについては、ゲストブックの作成のクイックスタートをご覧ください。このクイックスタートでは、このシンプルなアプリケーションを拡張して、認証済み Google アカウントからパブリック ページにメッセージを投稿できる本格的なゲストブック アプリケーションを作成します。

App Engine スタンダード環境の詳細

App Engine についてさらに理解を深めるためのトピックをご紹介します。

このページは役立ちましたか?評価をお願いいたします。