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

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} で入手できます。

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

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

Blobstore

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

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

Capabilities

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

WebSocket

スタンダード環境と同様に、フレキシブル環境では WebSocket がサポートされません。WebSocket を使用する必要がある場合は、Compute Engine または GKE を使用できます。

Cloud Datastore

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

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

この場合、ndbObjectify など、スタンダード環境で使用できる ORM ライブラリは、スタンダード環境外ではサポートされません。

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

Images

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

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

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

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

ロギング

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

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

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

メール

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

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

Memcache

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

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

モジュール

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

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

ソケット

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

タスクキュー

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

別のワーカーに pull され、処理されるタスクやメッセージをキューに追加するなど、pull キューを使用する多くの場合に、Cloud Pub/Sub は、類似の機能や配信の保証を提供するため、最適な代案になります。

URL 取得

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

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 サービスは利用できないため、app.yaml を使用して管理者のみが URL にアクセスできるようにすることはできないので注意してください。アプリケーション内でこのロジックを扱う必要があります。

次のステップ

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

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

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

Go の App Engine フレキシブル環境