dispatch.yaml 構成ファイル

ルーティング ルールをオーバーライドするには、dispatch.yaml を使用します。dispatch.yaml を使用すると、URL 内のパスまたはホスト名に基づいて、特定のサービス(以前はモジュールと呼ばれていました)に受信リクエストを送信できます。

詳細については、リクエストのルーティング方法をご覧ください。

ディスパッチ ファイルのデプロイ

dispatch.yaml ファイルは、root ディレクトリまたはデフォルト サービスを定義するディレクトリ内になければなりません。

dispatch.yaml ファイルをデプロイするには、次のコマンドを使用します。ディスパッチ ファイルをデプロイする前に、そのファイルに定義されているすべてのサービスがすでに App Engine にデプロイされていることを確認する必要があります。

gcloud

dispatch.yaml が含まれているディレクトリから gcloud app deploy コマンドを実行します。

gcloud app deploy dispatch.yaml

appcfg

dispatch.yaml ファイルが格納されているディレクトリで appcfg update_dispatch コマンドを実行し、-A オプションを使用して GCP プロジェクト ID を指定します。

appcfg.py -A [YOUR_PROJECT_ID] update_dispatch .

appcfg.py update コマンドでサービスを更新すると、dispatch.yaml ファイルもデプロイされます。

デプロイ コマンドの詳細については、Python アプリのデプロイをご覧ください。

構文

dispatch.yaml ファイル内のルート要素は dispatch: であり、以下に示すサブ要素で指定されるルーティング定義の一覧を含みます。

ディスパッチ ファイルで定義するルールは、HTTP URL パターンを使用し、サブドメインの区切りに「.」を使用する必要があります。HTTPS の「-dot-」表記で定義した URL はサポートされません。

ディスパッチ ルールは順序に依存しており、cron ファイルに定義した URL にも適用できます。

要素 説明
service

url パターンに一致するリクエストを処理するサービスの名前を指定します。サービスは、以前はモジュールと呼ばれていました。

url

url 要素には、引用符で囲んだ URL パターンを定義します。これには、100 文字以下のホスト名と URL パスを含めることができます。service 要素では、url 要素の URL パターンと一致する受信リクエストを処理するサービス名を指定します。

ヒント: url 要素では、* ワイルドカード文字などの glob パターンを定義できますが、これらのパターンはホスト名の前と URL パスの最後でのみ使用できます。

ホスト名と URL パスで構成可能な URL パターン。Glob 文字を使用してパターンを照合できます。Glob 文字を指定できるのは、パターンの先頭と末尾のみです。

ディスパッチ ルールは、cron の構成タスクキューの構成で使用される URL にも適用されます。

/_ah/ で始まる URL パスは、ディスパッチ ファイルによってルーティングされません。

以下のディスパッチ ファイルのサンプルでは、http://simple-sample.appspot.com 宛てのリクエストや、http://simple-sample.appspot.com/favicon.ico などのリクエストを default サービスにルーティングしています。すべての静的コンテンツが、default サービスから配信されます。http://simple-sample.appspot.com/mobile/ などのモバイル リクエストはモバイル フロントエンドにルーティングされ、http://simple-sample.appspot.com/work/ などのワーカー リクエストは静的バックエンドにルーティングされます。

dispatch:
  # Default service serves the typical web resources and all static resources.
  - url: "*/favicon.ico"
    service: default

  # Default service serves simple hostname request.
  - url: "simple-sample.appspot.com/"
    service: default

  # Send all mobile traffic to the mobile frontend.
  - url: "*/mobile/*"
    service: mobile-frontend

  # Send all work to the one static backend.
  - url: "*/work/*"
    service: static-backend

多数のリクエストに一致する可能性がある汎用的なルーティング ルールが適切である場合は、より広いスコープでルールを定義できます。次に例を示します。

# Send any path that begins with “simple-sample.appspot.com/mobile” to the mobile-frontend service.
- url: "simple-sample.appspot.com/mobile*"
  service: mobile-frontend

# Send any domain/sub-domain with a path that starts with “work” to the static backend service.
- url: "*/work*"
  service: static-backend

次のように、より厳密な式を記述することもできます。

# Matches the path "/fun", but not "/fun2" or "/fun/other"
- url: "*/fun"
  service: mobile-frontend

# Matches the hostname 'customer1.myapp.com', but not '1.customer1.myapp.com.
- url: "customer1.myapp.com/*"
  service: static-backend

制限

ディスパッチ ファイルには最大 20 個のルーティング ルールを含めることができます。URL 文字列を指定するときに、100 文字を超えるホスト名やパスは使用できません。

すべてのディスパッチ ルールの削除

すべてのディスパッチ ルールを削除するには:

  1. dispatch.yaml ファイルの内容を次のように編集します。

    dispatch:
    
  2. dispatch.yaml ファイルを App Engine にデプロイします。

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

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

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