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

リージョン ID

REGION_ID は、アプリを作成するときに選択するリージョンに基づいて Google が割り当てるコードです。既存のアプリでは省略可能でしたが、新しいアプリでは App Engine の URL に REGION_ID.r を含めることが必須になります。

詳しくは、リージョン ID をご覧ください。

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

料金

このガイドの実行に伴う費用は発生しません。このサンプルアプリを実行するだけなら、無料の割り当てを超過することはありません。

始める前に

このクイックスタートを実行してデプロイする前に、Cloud SDK をインストールして、App Engine 用に Google Cloud プロジェクトを設定します。

  1. Cloud SDK をダウンロードしてインストールします。

    SDK をダウンロード

    : Cloud SDK がすでにインストールされている場合は、次のコマンドを実行して更新します。

    gcloud components update
    
  2. 新しいプロジェクトを作成します。

    gcloud projects create [YOUR_PROJECT_ID] --set-as-default
    

    プロジェクトが作成されたことを確認します。

    gcloud projects describe [YOUR_PROJECT_ID]
    

    次のようなプロジェクトの詳細が表示されます。

    createTime: year-month-hour
    lifecycleState: ACTIVE
    name: project-name
    parent:
    id: '433637338589'
    type: organization
    projectId: project-name-id
    projectNumber: 499227785679
    
  3. プロジェクトで App Engine アプリを初期化し、そのリージョンを選択します。

    gcloud app create --project=[YOUR_PROJECT_ID]
    

    プロンプトが表示されたら、App Engine アプリケーションを配置するリージョンを選択します。

  4. プロジェクトで課金が有効になっていることを確認します。アプリケーションを App Engine にデプロイするには、請求先アカウントをプロジェクトにリンクする必要があります。

    課金を有効にする

  5. 次の前提条件でインストールします。

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

      gcloud components install app-engine-python
      

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

App Engine のロケーション

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

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

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

  • northamerica-northeast1(モントリオール)
  • us-central(アイオワ)
  • us-west2(ロサンゼルス)
  • us-east1(サウスカロライナ)
  • us-east4(北バージニア)
  • southamerica-east1(サンパウロ)
  • europe-west(ベルギー)
  • europe-west2(ロンドン)
  • europe-west3(フランクフルト)
  • europe-west6(チューリッヒ)
  • asia-northeast1(東京)
  • asia-northeast2(大阪)
  • asia-east2(香港)
  • asia-south1(ムンバイ)
  • australia-southeast1(シドニー)

設定したアプリのリージョンは変更できません。

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

このクイックスタートでは、Flask ウェブ フレームワークで作成された、App Engine にデプロイ可能なシンプルな Python アプリのデモを行います。このサンプルでは Flask を使用していますが、上記の要件を満たすウェブ フレームワークも使用可能です。代わりに使用できるフレームワークとしては、DjangoPyramidBottleweb.py などが挙げられます。

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 でリクエストを待機します。問題が発生する場合は、ここをクリックしてください。

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

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

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

  • 元の 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 ツールでデフォルトとして初期設定したものに代わる Google Cloud プロジェクト ID を指定するには、--project フラグを指定します。例: --project [YOUR_PROJECT_ID]

例:

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

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

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

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

gcloud app browse

参考情報

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

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

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

クリーンアップ

課金されないようにするには、Google Cloud プロジェクトを削除します。これにより、プロジェクト内のすべてのリソースへの課金が停止します。

  1. GCP Console で [リソースの管理] ページに移動します。

    [リソースの管理] ページに移動

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

次のステップ

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

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

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

appspot.com の代わりに独自のカスタム ドメインを使用して、App Engine アプリを提供できます。詳細については、カスタム ドメインと 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)に一致する場合、その URL に対するすべてのリクエストは main Python モジュール内にある app オブジェクトで処理されます。

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

詳細

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

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

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

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