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

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

料金

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

始める前に

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

  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. 次の前提条件をインストールします。

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

      gcloud components install app-engine-python
      
  5. 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(フランクフルト)
  • europe-west6(チューリッヒ)
  • asia-northeast1(東京)
  • asia-northeast2(大阪)
  • asia-east2(香港)
  • asia-south1(ムンバイ)
  • australia-southeast1(シドニー)

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

App Engine アプリケーションがすでに作成されている場合は、gcloud app describe コマンドを実行するか、GCP 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 環境変数に 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 2 アプリのデプロイをご覧ください。すべてのコマンドフラグの一覧については、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)に一致する場合、その URL に対するすべてのリクエストは main Python モジュール内にある app オブジェクトで処理されます。

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

さらに詳しく

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

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

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

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

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

フィードバックを送信...

Python 2 の App Engine スタンダード環境