dispatch.yaml 構成ファイル

リージョン ID

REGION_ID は、アプリの作成時に選択したリージョンに基づいて Google が割り当てる省略形のコードです。一部のリージョン ID は、一般的に使用されている国や州のコードと類似しているように見える場合がありますが、このコードは国または州に対応するものではありません。2020 年 2 月以降に作成されたアプリの場合、REGION_ID.r が App Engine の URL に含まれています。この日付より前に作成されたアプリの場合、URL のリージョン ID は省略可能です。

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

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

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

アプリに含めることができるのは 1 つの dispatch.yaml ファイルのみです。そのファイル内のルーティング ルールは、すべてのアプリのサービスとバージョンに適用されます。ルーティング ルールは、cron ファイルで使用される URL にも適用されます。

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

dispatch.yaml ファイルは、Go のソースコードと同じディレクトリに配置する必要があります。

ディスパッチ ファイルをデプロイする前に、そのファイルに定義されているすべてのサービスがすでに App Engine にデプロイされていることを確認する必要があります。dispatch.yaml ファイルをデプロイするには、dispatch.yaml を含むディレクトリから gcloud app deploy コマンドを実行します。

gcloud app deploy dispatch.yaml
デプロイ コマンドの詳細については、Go 1.11 アプリをデプロイするをご覧ください。

構文

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

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

ディスパッチ ルールは順序に依存し、URL に一致する最初のルールのみが適用されます。

要素 説明
service

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

url

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

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

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

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

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