スタンダード環境からフレキシブル環境へのサービスの移行

App Engine フレキシブル環境は、App Engine SDK に存在する API ライブラリを備えていません。アプリケーションを App Engine スタンダード環境からフレキシブル環境に移行することを決定した場合、すべての Google Cloud Platform 環境で利用可能なサービスと API を使用するようコードを更新する必要があります。

特定のサービスと API をスタンダード環境からフレキシブル環境に移行する手順については、以下の説明をご覧ください。

スタンダード環境とフレキシブル環境の違い

ここで説明する主な違い以外にも、スタンダード環境からフレキシブル環境に移行する際に注意すべき相違点があります。

  • フレキシブル環境では、/_ah/ を含むパスがブロックされません。スタンダード環境のアプリケーションで /_ah/ を含むパスを使用して特定のサービスにアクセスしている場合は、以下の該当するサービスのセクションをご覧ください。

  • 費用制限は App Engine スタンダード環境にのみ適用されます。フレキシブル環境では、予算を作成してアラームを設定することを検討してください。

App Identity

フレキシブル環境で実行する場合、環境変数Google Compute Engine メタデータ サービスを組み合わせて使用して、アプリケーションに関する情報を取得できます。

アプリケーション情報 アクセスする方法
アプリケーション / プロジェクト ID GOOGLE_CLOUD_PROJECT 環境変数またはメタデータ サーバーの /project/project-id リソース
デフォルトのホスト名 App Engine Admin API の apps.get メソッド
サービス アカウント名 メタデータ サーバーの /instance/service-accounts リソース
OAuth 2.0 アクセス トークン メタデータ サーバーの /instances/service-accounts リソース。Compute Engine サービス アカウント認証情報での認証をご覧ください。

次の機能は直接利用できません。

  • プロジェクトのデフォルトの Cloud Storage バケットはありません。アプリケーションでバケットを使用する場合、Cloud Storage バケットを作成し、バケット名としてプロジェクト ID を使用します。これにより、アプリケーションの GOOGLE_CLOUD_PROJECT 環境変数をバケット名として使用できるようになります。
  • デフォルトのサービス アカウントでは blob に署名できません。これに対処するには、Google Identity and Access Management(IAM)の API を使用するか、デプロイ時にアプリケーションにサービス アカウント秘密鍵を提供します。
  • 同様に、署名の検証用に公開証明書を取得する組み込み API はありません。ただし、各サービス アカウントの公開証明書を https://www.googleapis.com/robot/v1/metadata/x509/{service account email} で入手できます。
  • App Engine フレキシブル環境では、App Engine の SystemProperty API を使用できません。ただし、環境変数の定義で説明しているように、app.yaml に環境変数を設定し、System.env を使用してそれらの環境変数の値を取得できます。

バックグラウンド スレッド

フレキシブル環境にはサンドボックス制限がないため、リクエスト環境の外に存在するスレッドやプロセスを自由に作成できます。通常、言語の組み込みスレッドまたはマルチプロセッシング ツール以外に何も使用する必要はありません。

Blobstore

Blobstore サービスの使用は、スタンダードとフレキシブルの両方の環境でほとんど Cloud Storage に置き換えられました。Cloud Storage でデータの保存や取得を行うには、Google Cloud クライアント ライブラリを使用してください。

詳細については、次のガイドをご覧ください。

Capabilities

スタンダード環境の外には、Capabilities サービスに似た機能はありません。

WebSocket

App Engine フレキシブル環境では WebSocket をサポートしています。詳細については、次のガイドをご覧ください。

Cloud Datastore

Cloud Datastore API を使用すると、どこからでも Cloud Datastore にアクセスできます。Cloud Datastore でデータの保存や取得を行うには、Google Cloud クライアント ライブラリを使用します。

App Engine ライブラリまたは Google Cloud クライアント ライブラリを使用する場合、または API を直接呼び出す場合でも、同じ Cloud Datastore データを利用できます。

詳細については、次のガイドをご覧ください。

Images

Images サービスは、スタンダード環境外では利用できません。ただし、アプリケーションから直接、または Cloud Storage から直接、簡単に画像を提供できます。

画像処理を行う必要がある場合、ImageJ2imgscalrthumbnailator などの任意の画像処理ライブラリをインストールして使用できます。

また、Images サービスには、提供用 URL を使って画像のサイズ変更を処理することでアプリケーションへの動的リクエストを回避する機能も提供されています。類似の機能が必要な場合は、前もってサイズ変更された画像を生成し、Cloud Storage にアップロードして提供できます。あるいは、画像のサイズ変更を提供するサードパーティ コンテンツ配信ネットワーク(CDN)サービスを利用することもできます。

詳細については、次のガイドをご覧ください。

ロギング

スタンダード環境と同様に、フレキシブル環境でもロギングが自動的に機能します。ただし、異なる形式でログが収集されます。ログはリクエストによってバンドルされず、stdout および stderr からのログが別々に収集されます。

アプリケーション ロギング、ログをグループ化する機能、追加のメタデータをログに記録する機能をよりきめ細かく制御するには、Stackdriver Logging API を Google Cloud クライアント ライブラリとともに直接使用します。

詳細については、次のガイドをご覧ください。

メール

App Engine メールサービスは、スタンダード環境外では利用できません。メールを送信する場合は、SendGridMailgunMailjet などのサードパーティのメール プロバイダを使用する必要があります。これらのサービスはすべて、どんな場所で実行されるアプリケーションからもメールを送信できる API を備えています。

次のガイドは、フレキシブル環境でこれらのサービスを使用する方法を示しています。

Memcache

Memcache サービスは現在、App Engine フレキシブル環境では利用できません。近日中に Memcache サービスのアルファ版が提供されます。サービスが提供されたときに通知を受け取ることをご希望の場合は、この早期アクセス フォームに入力してください。

Memcache サービスに直ちにアクセスする必要がある場合、Redis Labs が提供するサードパーティの Memcache サービスを利用できます。このサービスにアクセスするには、Redis Labs Memcache を使用したアプリケーション データのキャッシュをご覧ください。

サードパーティのフルマネージド サービスである Redis Labs Redis Cloud を使用することもできます。このサービスにアクセスするには、Redis Labs Redis を使用したアプリケーション データのキャッシュをご覧ください。

Modules

Modules API はスタンダード環境外では利用できません。ただし、環境変数App Engine Admin API を組み合わせて使用することで、アプリケーションで実行されているサービスに関する情報を取得したり、そうしたサービスを変更したりすることは可能です。

サービス情報 アクセスする方法
現在のサービス名 GAE_SERVICE 環境変数
現在のサービス バージョン GAE_VERSION 環境変数
現在のインスタンス ID GAE_INSTANCE 環境変数
デフォルトのホスト名 App Engine Admin API の apps.get メソッド
サービスのリスト App Engine Admin API の apps.services.list メソッド
サービスのバージョンのリスト App Engine Admin API の apps.services.versions.list メソッド
トラフィック分割を含む、サービスのデフォルト バージョン App Engine Admin API の apps.services.get メソッド
バージョンの実行中インスタンスのリスト App Engine Admin API の apps.services.versions.instances.list メソッド

アプリケーションでのサービスやバージョンのデプロイ管理にも App Engine Admin API を使用できます。

名前空間

スタンダード環境外でマルチテナンシーを直接サポートしているのは Cloud Datastore のみです。他のサービスの場合、マルチテナンシーを手動で処理する必要があります。完全に分離されたサービス インスタンスを得るには、Cloud Resource Manager API を使ってプログラムで新規プロジェクトを作成し、プロジェクトでリソースにアクセスできます。

OAuth

OAuth サービスは、フレキシブル環境では利用できません。OAuth 2.0 トークンを確認する必要がある場合は、OAuth 2.0 APIoauth2.tokeninfo メソッドを使用します。

Remote

Remote(リモート)API サービスは、フレキシブル環境には該当しません。フレキシブル環境からアクセス可能な Cloud Datastore などの大部分のバッキング サービスは、どこからでもアクセス可能です。

Search(検索)サービスは現在、スタンダード環境外では利用できません。Google Compute Engine の ElasticSearch など、任意の全文検索データベースをホストすることができ、スタンダードとフレキシブルの両環境からアクセスできます。

ソケット

フレキシブル環境にはサンドボックス制限がないため、アウトバウンド ソケットを通常の方法で開いて使用できます。

タスクキュー

第 1 世代のスタンダード環境外で push タスクキュー サービスを使用するには、Cloud Tasks を使用します。

pull されて別個のワーカーで処理されるタスクやメッセージをキューに追加する場合など、pull キューを使用する多くのケースでは、類似の機能と配信の確実性を備えている Cloud Pub/Sub が適切な代替策となり得ます。

URL 取得

URL 取得サービスは、フレキシブル環境では使用できません。ただし、サンドボックスの制限はないため、ご使用のアプリで任意の HTTP ライブラリを使用して URL 取得機能を利用できます。Java 用の Google HTTP クライアント ライブラリまたは OkHttp を使用することをおすすめします。

Users

Users サービスは、スタンダード環境外では利用できません。フレキシブル環境では、たとえば次のような任意の HTTP ベースの認証メカニズムを使用できます。

  • Google Identity Platform。Google ユーザー アカウントを認証、承認するための多くのオプションを備えています。
  • Firebase Authentication。ユーザー名 / パスワードを使用した認証を提供し、Google、Facebook、Twitter などと連携した ID を提供します。
  • Auth0。さまざまな ID プロバイダおよびシングル サインオン機能を使った認証を提供します。
  • OAuth 2.0OpenID Connect。任意のプロバイダからのフェデレーション ID を提供します。Google は OpenID Connect の ID プロバイダです。その他複数のプロバイダも利用できます。

Users サービスを利用できないため、appengine-web.xml を使用して、管理者のみが URL にアクセスできるようにすることはできません。アプリケーション内でこのロジックを扱う必要があります。

次のステップ

フレキシブル環境とスタンダード環境の主な違いと、両方の環境を使用するアプリケーションのガイドラインについては、App Engine スタンダード環境ユーザーのための App Engine フレキシブル環境をご覧ください。

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

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

Java の App Engine フレキシブル環境に関するドキュメント