リージョン 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 でのウェブサービスの構造化をご覧ください。例
Python 2 アプリケーションの app.yaml
ファイルの例を次に示します。
runtime: python27 api_version: 1 threadsafe: true handlers: - url: / script: home.app - url: /index\.html script: home.app - url: /stylesheets static_dir: stylesheets - url: /(.*\.(gif|png|jpg))$ static_files: static/\1 upload: static/.*\.(gif|png|jpg)$ - url: /admin/.* script: admin.app login: admin - url: /.* script: not_found.app
script:
ディレクティブには、.py
で終わるファイルパスを指定できます。この場合、スクリプトは CGI を使用します。また、パッケージ名をドットで区切った Python モジュールのパスを指定することもできます。この場合、スクリプトは WSGI を使用します。
構文
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 の |
auto_id_policy |
省略可。エンティティ ID を自動的に設定している場合、自動 ID ポリシーを設定すると、使用するメソッドを変更できます。有効なオプションは次のとおりです。
|
builtins |
省略可。Python 2 SDK には、一般的なアプリケーション機能向けの複数の組み込みハンドラが含まれています。 このフィールドは Python 3 ランタイムで非推奨になりました。 使用できる組み込みハンドラは次のとおりです。
builtins: - deferred: on - appstats: on
builtins: - name: on これは次と同等です。 includes: - $PYTHON_LIB/google/appengine/ext/builtins/name/
たとえば、次の handlers: - url: /.* script: main.app builtins: - appstats: on ハンドラの結果リストは次のようになります。 [/_ah/stats, /.*]
includes: - included.yaml さらに、 handlers: - url: /.* script: main.app builtins: - appstats: on ハンドラの結果リストは次のようになります。 [/.*, /_ah/stats]
|
default_expiration |
省略可。アプリケーションのすべての静的ファイル ハンドラにグローバルなデフォルト キャッシュ期間を設定します。特定の静的ファイル ハンドラを対象にキャッシュ期間を構成することもできます。設定する値は、数値と単位の文字列をスペースで区切ったものです。単位には、日数を表す d、時間数を表す h、分数を表す m、秒数を表す s を指定できます。たとえば、 runtime: python27 api_version: 1 threadsafe: true default_expiration: "4d 5h" handlers: # ... 詳細については、キャッシュの有効期限をご覧ください。 |
env_variables
|
省略可。
os.environ 辞書で利用できます。env_variables: DJANGO_SETTINGS_MODULE: "myapp.settings" |
error_handlers |
省略可。エラータイプごとに表示されるカスタム エラーページの構成に使用します。 この要素には次の要素を設定できます。
error_handlers: - file: default_error.html - error_code: over_quota file: over_quota.html |
handlers |
必須。URL パターンと処理方法の説明のリストです。App Engine で URL を処理するには、アプリケーション コードを実行するか、画像、CSS、JavaScript など、コードと一緒にアップロードされた静的ファイルを提供します。 |
includes
|
省略可。 includes: - lib/user_admin.yaml App Engine では、インクルードしたパスが次の順序で解決されます。
インクルードされた |
inbound_services |
省略可。アプリケーションが受信リクエストを受け取るには、これらのサービスを有効にする必要があります。Python 2 アプリ用にサービスを有効にするには、 使用できる受信サービスは次のとおりです。
inbound_services: - mail - warmup |
instance_class |
省略可。このサービスのインスタンス クラス。 サービスのスケーリングに応じて、次の値を使用できます。
|
libraries |
省略可。Python 2.7 ランタイムには、一部のサードパーティ ライブラリが含まれています。これらの一部はデフォルトで使用できますが、それ以外は使用前に構成が必要です。 このフィールドは Python 3 ランタイムで非推奨になりました。 libraries: - name: PIL version: "1.1.7" - name: webob version: "latest"
開発中のアプリケーションにユーザーが存在しない場合には、新しいバージョンを追跡する必要はありません。ただし、アプリケーションを実際に使用している場合、下位互換性のない新しいライブラリ バージョンがアプリケーションで使用される可能性があります。 使用可能なサードパーティ ライブラリの一覧については、サードパーティ ライブラリをご覧ください。ローカル ディレクトリにインストールすることで、追加のピュア Python サードパーティ ライブラリを使用できます。 フレキシブル環境を使用している場合は、フレキシブル環境での Python ライブラリの使用をご覧ください。 |
module |
注: モジュールは名称がサービスに変わりました。 gcloud CLI でアプリを管理するには、代わりにサービスの要素を使用します。 |
runtime |
必須。アプリで使用するランタイム環境の名前。たとえば、Python 2.7 を指定するには、次のコマンドを使用します。 runtime: python27 |
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/ |
threadsafe |
必須。同時リクエストを利用するようにアプリケーションを構成します。Python のスレッド ライブラリを使用している場合は、 このフィールドは Python 3 ランタイムで非推奨になりました。 threadsafe: [true | false]
注: Python 2.7 アプリケーションには、 |
version |
このコマンドの使用の詳細については、アプリのデプロイをご覧ください。 App Engine にデプロイするアプリケーション コードのバージョン ID。
バージョン ID には、小文字、数字、ハイフンを使用できます。接頭辞
注: バージョン名は、常に番号で指定される数値インスタンスと区別するために、英字で始まる必要があります。これにより、
アプリケーションの各バージョンには |
vpc_access_connector |
省略可。サーバーレス VPC アクセス コネクタを使用するようにアプリケーションを構成して、アプリケーションが VPC ネットワークの内部リソースにリクエストを送信できるようにします。詳細については、VPC ネットワークへの接続をご覧ください。
vpc_access_connector: name: "projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME" egress_setting: all-traffic |
ハンドラ要素
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.app login: required secure: always redirect_http_response_code: 301
ユーザーのリクエストがリダイレクトされると、HTTP ステータス コードが |
script |
省略可。アプリケーションのルート ディレクトリを起点として、このスクリプトまでのパスを指定します。 handlers: # The root URL (/) is handled by the WSGI application named # "app" in home.py. No other URLs match this pattern. - url: / script: home.app # The URL /index.html is also handled by the home.py script. - url: /index\.html script: home.app # A regular expression can map parts of the URL to the # path of the script. - url: /browse/(books|videos|tools) script: \1.catalog.app # All other URLs use the WSGI application named in "app" # in not_found.py. - url: /.* script: not_found.app
Python の 新しい App Engine ランタイムでは、このフィールドの動作が変更されています。 |
secure |
省略可。secure の設定は、スクリプト ハンドラと静的ファイル ハンドラを含むすべての URL ハンドラで使用できます。secure 要素には次の値を使用できます。
handlers: - url: /youraccount/.* script: accounts.app login: required 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 |