リージョン ID
REGION_ID
は、アプリの作成時に選択したリージョンに基づいて Google が割り当てる省略形のコードです。一部のリージョン ID は、一般的に使用されている国や州のコードと類似しているように見える場合がありますが、このコードは国または州に対応するものではありません。2020 年 2 月以降に作成されたアプリの場合、REGION_ID.r
は App Engine の URL に含まれています。この日付より前に作成されたアプリの場合、URL のリージョン ID は省略可能です。
詳しくは、リージョン ID をご覧ください。
App Engine アプリの設定を構成する際には、app.yaml
ファイルを使用します。このファイルでは、URL パスとリクエスト ハンドラや静的ファイルとの対応関係を指定します。app.yaml
ファイルには、ランタイムや最新バージョンの ID など、アプリコードについての情報も記載されています。
アプリ内の各サービスにはそれぞれ独自の app.yaml
ファイルがあり、デプロイ記述子として機能します。アプリ内の追加サービス用に app.yaml
ファイルを作成してデプロイする際は、事前に default
サービス用の app.yaml
ファイルを作成する必要があります。
ディレクトリ構造
アプリでの複数サービスの構造化の詳細については、App Engine でのウェブサービスの構造化をご覧ください。例
PHP 5 アプリケーションの app.yaml
ファイルの例を次に示します。
runtime: php55 api_version: 1 handlers: # Serve images as static resources. - url: /(.+\.(gif|png|jpg))$ static_files: \1 upload: .+\.(gif|png|jpg)$ application_readable: true # Serve php scripts. - url: /(.+\.php)$ script: \1
上の例では、gif
、png
または jpg
の拡張子を持つファイルを静的リソースとして提供します。これらのファイルは、ランタイムにアプリケーション コードから読み取りができるように構成されています。
この例ではすべての PHP スクリプトの処理も行っています。url: /([^/]+\.php)
式を使用すると、スクリプト ハンドラの対象をルートレベルのスクリプトに制限できます。既存のアプリケーションでは、Apache mod_rewrite $_GET['q']
ルーティングをシミュレートすると便利な場合があります。
より詳細な app.yaml
の構成を以下に示します。
runtime: php55 api_version: 1 handlers: - url: / script: home.php - url: /index\.html script: home.php - url: /stylesheets static_dir: stylesheets - url: /(.*\.(gif|png|jpg))$ static_files: static/\1 upload: static/.*\.(gif|png|jpg)$ - url: /admin/.* script: admin.php login: admin - url: /.* script: not_found.php
構文
app.yaml
の構文は YAML 形式です。
YAML 形式ではコメントがサポートされています。ハッシュ(#
)記号で始まる行は無視されます。
# This is a comment.
URL とファイルパスのパターンは、要素照合とクラス照合を除き、POSIX 拡張正規表現構文を使用します。グループ化した一致への後方参照(例: \1
)は、Perl 拡張(\w \W \s \S \d \D
)と同様にサポートされます。
ランタイムとアプリの要素
要素 | 説明 |
---|---|
application |
これらのコマンドの詳細については、アプリのデプロイをご覧ください。 アプリケーション ID は、Google Cloud コンソールでアプリケーションを作成したときに指定した Google Cloud コンソール プロジェクト ID です。 |
api_version |
必須。アプリで使用される特定のランタイム環境における API のバージョンです。 このフィールドは、新しい App Engine ランタイムで非推奨になりました。
Google がランタイム環境の API の新バージョンのサポートを発表しても、デプロイされたアプリはその作成時に使用された API を引き続き使用します。アプリを新バージョンの API にアップグレードするには、この値を変更して、アプリを App Engine に再デプロイします。値を
現在、App Engine の |
default_expiration |
省略可。アプリケーションのすべての静的ファイル ハンドラにグローバルなデフォルト キャッシュ期間を設定します。特定の静的ファイル ハンドラを対象にキャッシュ期間を構成することもできます。設定する値は、数値と単位の文字列をスペースで区切ったものです。単位には、日数を表す d、時間数を表す h、分数を表す m、秒数を表す s を指定できます。たとえば、 runtime: php55 api_version: 1 default_expiration: "4d 5h" handlers: # ... 詳細については、キャッシュの有効期限をご覧ください。 |
env_variables
|
省略可。
env_variables: MY_VAR: "my value"ここで、 MY_VAR と my value は、定義する環境変数の名前と値です。環境変数の各エントリは、env_variables 要素の下でスペース 2 つ分インデントされています。値が割り当てられていない環境変数は、デフォルトで "None" に設定されます。
これらの変数の値を取得する際は、 echo getenv('MY_VAR');または echo $_SERVER['MY_VAR']; |
error_handlers |
省略可。エラータイプごとに表示されるカスタム エラーページの構成に使用します。 この要素には次の要素を設定できます。
error_handlers: - file: default_error.html - error_code: over_quota file: over_quota.html |
handlers |
必須。URL パターンと処理方法の説明のリストです。App Engine で URL を処理するには、アプリケーション コードを実行するか、画像、CSS、JavaScript など、コードと一緒にアップロードされた静的ファイルを提供します。 |
inbound_services |
省略可。アプリケーションが受信リクエストを受け取るには、これらのサービスを有効にする必要があります。PHP 5 アプリ用のサービスを有効にするには、 使用できる受信サービスは次のとおりです。
inbound_services: - mail - warmup |
instance_class |
省略可。このサービスのインスタンス クラス。 サービスのスケーリングに応じて、次の値を使用できます。
|
module |
注: モジュールは名称がサービスに変わりました。 gcloud CLI でアプリを管理するには、代わりにサービスの要素を使用します。 |
runtime |
必須。アプリで使用されるランタイム環境の名前です。たとえば、PHP 5 を指定するには、次を使用します。 runtime: php55 |
service |
サービスは以前「モジュール」と呼ばれていました。
gcloud CLI または gcloud CLI ベースのプラグイン(例:
サービスを作成する場合には必須です。 service: service-name 注: module: service-name |
service_account |
省略可。 service_account: [SERVICE_ACCOUNT_NAME]@[PROJECT_ID].iam.gserviceaccount.com |
skip_files |
省略可。
skip_files: - ^(.*/)?#.*#$ - ^(.*/)?.*~$ - ^(.*/)?.*\.py[co]$ - ^(.*/)?.*/RCS/.*$ - ^(.*/)?\..*$
デフォルトのパターンでは、名前が
上の正規表現リストを拡張するには、上のリストをコピーして skip_files: - ^(.*/)?#.*#$ - ^(.*/)?.*~$ - ^(.*/)?.*\.py[co]$ - ^(.*/)?.*/RCS/.*$ - ^(.*/)?\..*$ - ^(.*/)?.*\.bak$
ディレクトリ全体をスキップするには、リストにディレクトリ名を追加します。たとえば、 skip_files: - logs/ |
version |
このコマンドの使用の詳細については、アプリのデプロイをご覧ください。 App Engine にデプロイするアプリケーション コードのバージョン ID。
バージョン ID には、小文字、数字、ハイフンを使用できます。接頭辞
注: バージョン名は、常に番号で指定される数値インスタンスと区別するために、英字で始まる必要があります。これにより、
アプリケーションの各バージョンには |
ハンドラ要素
handlers
要素は、app.yaml
構成ファイルの必須要素です。この要素は、URL パターンと処理方法の説明リストを提供します。App Engine で URL を処理するには、アプリケーション コードを実行するか、画像、CSS、JavaScript など、コードと一緒にアップロードされた静的ファイルを提供します。
パターンは、app.yaml
ファイルの上から下へ順に評価されます。URL とパターンが一致する最初の組み合わせが、リクエストの処理に使用されます。
以下の表は、スクリプト、静的ファイル、静的ディレクトリ、その他の設定の動作を制御する、handlers
要素のサブ要素を示しています。
要素 | 説明 |
---|---|
application_readable |
省略可。ブール値。デフォルトでは、静的ファイル ハンドラで宣言されたファイルが静的データとしてアップロードされ、エンドユーザーにのみ提供されます。アプリケーションでは読み取れません。このフィールドを true に設定すると、ファイルはコードデータとしてもアップロードされ、アプリケーションでも読み取れるようになります。両方のアップロードが、コードデータと静的データのストレージ リソース割り当てとして課金されます。 このフィールドは、新しい App Engine ランタイムで非推奨になりました。 |
expiration
|
省略可。このハンドラで処理する静的ファイルがウェブプロキシとウェブブラウザでキャッシュに保存される有効期限。設定する値は、数値と単位の文字列をスペースで区切ったものです。単位には、日数を表す d 、時間数を表す h 、分数を表す m 、秒数を表す s を指定できます。たとえば、"4d 5h" と指定すると、キャッシュの有効期限はファイルが最初にリクエストされてから 4 日と 5 時間後に設定されます。省略した場合は、アプリケーションの default_expiration が使用されます。詳細については、キャッシュの有効期限をご覧ください。 |
http_headers |
省略可。静的ファイル ハンドラまたはディレクトリ ハンドラのレスポンスに HTTP ヘッダーを設定できます。 handlers: - url: /images static_dir: static/images http_headers: X-Foo-Header: foo X-Bar-Header: bar value vary: Accept-Encoding # ... CORS サポートこの機能の重要な用途の 1 つは、別の App Engine アプリでホストされているファイルへのアクセスなど、クロスオリジン リソース シェアリング(CORS)をサポートすることです。
たとえば、ゲームアプリ 以下の例では、静的ファイル ハンドラが必要なレスポンス ヘッダー値を返しています。 handlers: - url: /images static_dir: static/images http_headers: Access-Control-Allow-Origin: https://mygame.uc.r.appspot.com # ... 注: アセットに対するアクセスをすべてのユーザーに許可するには、 |
mime_type |
省略可。指定すると、このハンドラで処理するすべてのファイルが、指定した MIME タイプを使用して処理されます。指定しないと、ファイル名の拡張子からファイルの MIME タイプが決定されます。同じファイルが複数の拡張子を使用してアップロードされている場合、最終的な拡張子はアップロードが行われた順序によって決まります。 使用可能な MIME メディアタイプについては、IANA MIME メディアタイプのウェブサイトをご覧ください。 |
redirect_http_response_code |
省略可。
handlers: - url: /youraccount/.* script: accounts.php secure: always redirect_http_response_code: 301
ユーザーのリクエストがリダイレクトされると、HTTP ステータス コードが |
script |
省略可。アプリケーションのルート ディレクトリを起点として、このスクリプトまでのパスを指定します。 ... handlers: - url: /profile/(.*)/(.*) script: /employee/\2/\1.php # specify a script 新しい App Engine ランタイムでは、このフィールドの動作が変更されています。 |
secure |
省略可。secure の設定は、スクリプト ハンドラと静的ファイル ハンドラを含むすべての URL ハンドラで使用できます。secure 要素には次の値を使用できます。
handlers: - url: /youraccount/.* script: accounts.php secure: always
開発用ウェブサーバーでは HTTPS 接続はサポートされていません。開発用ウェブサーバーでは
HTTPS でカスタム ドメインを使用するには、そのドメインの SSL 証明書を有効にして構成する必要があります。 Google アカウントのログインとログアウトは常に保護された接続を使用して実行されます。アプリケーションの URL の構成方法とは関係ありません。 |
static_dir
|
省略可。アプリケーションのルート ディレクトリから、静的ファイルを含むディレクトリへのパス。
各ファイルは、ディレクトリの
このディレクトリ内のすべてのファイルは、静的ファイルとしてアプリと一緒にアップロードされます。App Engine は、静的ファイルをアプリのファイルと分けて格納し、処理します。デフォルトでは、アプリのファイル システムで静的ファイルを使用できません。これを変更するには、 handlers: # All URLs beginning with /stylesheets are treated as paths to # static files in the stylesheets/ directory. - url: /stylesheets static_dir: stylesheets # ... |
static_files
|
省略可。静的ファイル ハンドラを使用して、URL パターンと、アプリケーションとともにアップロードされる静的ファイルへのパスを関連付けます。URL パターンの正規表現を使用して、ファイルパスの構成で使用する正規表現のグループを定義できます。 handlers: # All URLs ending in .gif .png or .jpg are treated as paths to # static files in the static/ directory. The URL pattern is a # regular expression, with a grouping that is inserted into the # path to the file. - url: /(.*\.(gif|png|jpg))$ static_files: static/\1 upload: static/.*\.(gif|png|jpg)$ # ...
App Engine は、静的ファイルをアプリケーション ファイルと分けて格納し、処理します。デフォルトでは、アプリケーションのファイル システムで静的ファイルを使用できません。これを変更するには、 静的ファイルとアプリケーション コードファイルを同じファイルにすることはできません。静的ファイルのパスが動的ハンドラで使用するスクリプトへのパスと一致する場合、動的ハンドラではスクリプトを使用できません。 |
upload |
省略可。このハンドラによって参照されるすべてのファイルのファイルパスと一致する正規表現。ハンドラでは、アプリケーション ディレクトリ内のどのファイルが、指定した |
url |
以下の要素と一緒に使用すると、URL パターンの動作の一部が変わります。
|
スケーリングの要素
次の表の要素は、アプリケーションのスケーリングを構成します。App Engine アプリのスケーリングの詳細については、スケーリングの種類をご覧ください。
要素 | 説明 |
---|---|
automatic_scaling |
省略可。F1 以上のインスタンス クラスを使用するアプリケーションにのみ適用されます。 この要素を指定して、サービスのインスタンス数、レイテンシ、同時接続数の上限と下限の設定など、自動スケーリングのデフォルト設定を変更します。 この要素には次の要素を設定できます。
automatic_scaling: target_cpu_utilization: 0.65 min_instances: 5 max_instances: 100 min_pending_latency: 30ms max_pending_latency: automatic max_concurrent_requests: 50 |
basic_scaling |
B1 以上のインスタンス クラスを使用するアプリケーションは、この要素または この要素は、インスタンス クラス B1 以上の基本スケーリングを有効にし、次の要素を含めることができます。
basic_scaling: max_instances: 11 idle_timeout: 10m |
manual_scaling |
B1 以上のインスタンス クラスを使用するアプリケーションは、この要素または この要素を使用すると、B1 以上のインスタンス クラスを手動でスケーリングできます。また、次のような要素を追加することもできます。
manual_scaling: instances: 5 |