app.yaml によるアプリの構成

App Engine アプリを構成するには、app.yaml ファイルを使用します。このファイルには、CPU、メモリ、ネットワーク リソース、ディスク リソース、スケーリングをはじめとする、環境変数を含む全般的な設定が含まれています。新しい Java 11 以降のバージョンを選択するか、古い Eclipse Jetty 9.3 または Java 8 バージョンを使用できます。Eclipse Jetty 9.3 と Java 8 の場合は、Maven または Gradle を使用できます。

app.yaml ファイルの概要

バージョンや URL など、Java アプリのすべてのランタイム構成を app.yaml ファイルに指定できます。このファイルは、特定のサービス バージョンのデプロイ記述子として機能します。

追加サービス用に app.yaml ファイルを作成してデプロイするには、その前に、default サービス用の app.yaml ファイルを作成する必要があります。

次の app.yaml は、Java バージョン 8、11、17 以降のアプリを構成する方法を示しています。新しいバージョンを使用するには app.yaml ファイルを更新する必要があることに留意してください。新しいバージョンの使用の詳細については、Java ランタイムをご覧ください。

バージョン 17 以降

runtime: java
env: flex
runtime_config:
operating_system: "ubuntu22"
runtime_version: "21"
handlers:
- url: /.*
script: this field is required, but ignored

manual_scaling:
instances: 1

バージョン 11

runtime: java
env: flex
runtime_config:
operating_system: "ubuntu18"
runtime_version: "11"
handlers:
- url: /.*
script: this field is required, but ignored

manual_scaling:
instances: 1

バージョン 8

runtime: java
env: flex

handlers:
- url: /.*
  script: this field is required, but ignored

アプリのサービスの複雑さによっては、対応する app.yaml ファイルの一部の要素を定義するだけで済む場合もあります。次の例では、Java アプリをフレキシブル環境に配置する場合に必要となる内容について示します。

app.yaml ファイルには一意の名前を指定できます。ただし、その場合はデプロイ コマンドでもそのファイル名を指定する必要があります。たとえば、app.yaml ファイルに service-name-app.yaml または app.flexible.yaml という名前を指定した場合は、次のいずれかを使用してアプリをデプロイする必要があります。

gcloud app deploy service-name-app.yaml
gcloud app deploy app.flexible.yaml
アプリで複数のサービスと app.yaml ファイルを構造化する方法については、ウェブサービスの構造化をご覧ください。

すべての構成要素

この構成ファイルでサポートされるすべての要素の一覧については、app.yaml リファレンスをご覧ください。

Java 仮想マシンの指標の収集を有効にする

Java 仮想マシン(JVM)プロセスの一般的な指標を収集するように、Java の App Engine フレキシブル環境を構成します。これらの指標は、Cloud Monitoring と同じ JVM モニタリング プラグインを使用して収集されます。App Engine の指標の一覧については、Google Cloud 指標ガイドをご覧ください。

アプリの JVM 指標を収集する場合:

  • appengine.googleapis.com/flex/instance/jvm/gc/count
  • appengine.googleapis.com/flex/instance/jvm/gc/time

app.yaml の環境変数で次の JMX システム プロパティを設定して、アプリをデプロイする必要があります。

JAVA_USER_OPTS: "-Djava.rmi.server.hostname=172.17.0.1 -Dcom.sun.management.jmxremote.port=10403 -
Dcom.sun.management.jmxremote.rmi.port=10403 -Dcom.sun.management.jmxremote.local.only=false -
Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"