構成ファイル

サービスの各バージョンは、サービスの名前とバージョンを指定する .yaml ファイルで定義します。YAML ファイルは通常、その中で定義するサービスと同じ名前にしますが、必ずしもそうする必要はありません。複数のバージョンのサービスをデプロイする場合は、同じディレクトリ内に複数の yaml ファイルを(バージョンごとに 1 つずつ)作成します。

通常、サービスごとにディレクトリを作成し、そこにサービスの YAML ファイルと関連するソースコードを配置します。オプションのアプリケーションレベルの構成ファイル(dispatch.yamlcron.yamlindex.yamlqueue.yaml)は、最上位のアプリ ディレクトリに配置されます。以下の例には、3 つのサービスが示されています。service1service2 では、ソースファイルは YAML ファイルと同じレベルに配置されています。service3 には、2 つのバージョンの YAML ファイルがあります。

YAML サービスの階層グラフ

小さいシンプルなプロジェクトでは、すべてのアプリファイルを 1 つのディレクトリに配置します。

小さい YAML サービスの階層グラフ

すべての YAML ファイルには、バージョン パラメータを含める必要があります。デフォルト サービスを定義するには、service: default パラメータを明示的に記述するか、このパラメータをファイルに記述しないようにします。

サービスごとの構成ファイルによって、特定のサービスまたはバージョンのスケーリング タイプとインスタンス クラスを定義します。指定するスケーリング タイプに応じて、異なるスケーリング パラメータを使用します。スケーリングを指定していない場合は、デフォルトで自動スケーリングになります。スケーリングとインスタンス クラスの設定については、app.yaml リファレンスをご覧ください。

各サービスに対して、URL リクエストから特定のスクリプトへのマッピング設定や、静的ファイルを識別する設定を行うことで、サーバー効率を高めることもできます。このような設定も yaml ファイルに記載されます。詳細については、app.yaml リファレンスをご覧ください。

デフォルト サービス

すべてのアプリケーションにはデフォルト サービスが 1 つあります。デフォルト サービスは、app.yamlservice: default 設定を使用して定義できますが、必ずしも定義する必要はありません。デフォルト サービスには、サービスに関連するすべての構成パラメータが適用されます。

オプションの構成ファイル

以下の構成ファイルを使うと、アプリのすべてのサービスに適用されるオプション機能を制御できます。

  • dispatch.yaml
  • queue.yaml
  • index.yaml
  • cron.yaml
  • dos.yaml

これらの構成ファイルの更新を App Engine にデプロイするには、そのファイルが配置されているディレクトリから次のコマンドを実行します。

    gcloud app deploy [CONFIG_FILE]

ウェブ リクエストを処理するデフォルト サービスとバックエンド処理用の別のサービス(my-service)の 2 つのサービスがあるアプリケーションの WAR ディレクトリ構造に、さまざまなファイルを構成する例を示します。

最上位の EAR ディレクトリが「my-application」であれば、ファイル my-application/META-INF/appengine-application.xml を次のように定義します。

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<appengine-application xmlns="http://appengine.google.com/ns/1.0">
  <application>my-application</application>
</appengine-application>

2 つのサービス my-application/defaultmy-application/my-service 用の WAR ディレクトリを作成します。

ここで各 WAR に、サービスのパラメータを指定する appengine-web.xml ファイルを作成します。このファイルにはサービスのバージョン名を含める必要があります。デフォルト サービスを定義するには、<service>default</service> パラメータを明示的に記述するか、このパラメータをファイルに記述しないようにします。以下に、デフォルト サービスを定義した my-application/default/WEB-INF/appengine-web.xml ファイルを示します。

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <application>my-application</application>
  <module>default</module>
  <version>uno</version>
  <threadsafe>true</threadsafe>
</appengine-web-app>

バックグラウンド リクエストを処理するサービスを定義した my-application/my-service/WEB-INF/appengine-web.xml ファイルは次のとおりです。

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
  <application>my-application</application>
  <module>my-service</module>
  <version>uno</version>
  <threadsafe>true</threadsafe>
  <manual-scaling>
    <instances>5</instances>
  </manual-scaling>
</appengine-web-app>

最後に、サービスを列挙した my-application/META-INF/application.xml ファイルを定義します。デフォルト サービスは最初に記述する必要があるので注意してください。

<?xml version="1.0"
encoding="UTF-8"?>

<application
  xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/application_5.xsd"
  version="5">

  <description>GAE Java SuperFun app</description>
  <display-name>SuperFun</display-name>

  <!-- Services -->
  <!-- The default service should be listed first -->
  <module>
    <web>
      <web-uri>default</web-uri>
      <context-root>default</context-root>
    </web>
  </module>
  <module>
    <web>
      <web-uri>my-service</web-uri>
      <context-root>my-service</context-root>
    </web>
  </module>

</application>

App Engine では <context-root> 要素が無視されるため、サービスをアドレス指定する際に HTTP クライアントでこの要素を URL パスの前に追加する必要はありません。

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

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

Java 8 の App Engine スタンダード環境