レガシー バンドル サービスからの移行

従来のバンドル サービスで提供される機能の大部分が Cloud クライアント ライブラリで提供されるようになりました。詳細については、下記のおすすめの代替方法をご覧ください。

バンドルされていないソリューションへの移行がプロジェクトでできない場合、代替として Java 11 / 17 アプリで従来のバンドル サービスの使用を継続できる可能性があります。このアプローチでは、移行サイクルの後半でバンドルされていないサービスに移行できます。

App Engine バンドル サービスの移行方法の概要

Blobstore

データを格納および取得するには、Cloud クライアント ライブラリを介して Cloud Storage を使用します。ご利用にあたっては、Cloud Storage の使用

Datastore

Datastore API の代わりに、Datastore モードの Firestore を使用できます。FirestoreDatastore の最新バージョンであり、Datastore 用の Cloud クライアント ライブラリを使用することをおすすめします。

画像

画像の配信には、Cloud Storage から行う方法、直接配信する方法、サードパーティのコンテンツ配信ネットワーク(CDN)を使用する方法があります。

画像のサイズ変更、変換、操作を行うには、ImageJ2imgscalrthumbnailator

こうしたサードパーティ ライブラリを使用するには、ライブラリを依存関係として追加し、ライブラリの API を呼び出すようにコードを更新します。

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

ロギング

Cloud Logging を使用するように、アプリを更新することをおすすめします。Cloud Logging では、ログ エクスプローラのログの表示、ログのダウンロード、重大度によるメッセージのフィルタリング、特定のリクエストとのアプリ メッセージの関連付けなどの機能がサポートされています。または、データの精度よりも簡素化を求める場合、構造化ログを stdout または stderr に書き込むこともできます。詳細については、ログの書き込みと表示をご覧ください。

メール

メールを送信するには、SendGridMailgunMailjet などのサードパーティのメール プロバイダを使用します。これらのサービスはいずれも、アプリケーションからメールを送信するための API を提供しています。現時点では、受信メッセージングにおすすめのサードパーティのプロバイダはございません。

Memcache

アプリケーション データをキャッシュに保存するには、Memorystore for Redis を使用します。

モジュール

アプリケーションが実行しているサービスの情報を取得および変更するには、環境変数と App Engine Admin API を組み合わせて使用します。

サービス情報 アクセス方法
現在のアプリケーション ID GAE_APPLICATION 環境変数
現在のプロジェクト ID GOOGLE_CLOUD_PROJECT 環境変数
現在のサービス名 GAE_SERVICE 環境変数
現在のサービス バージョン GAE_VERSION 環境変数
現在のインスタンス ID GAE_INSTANCE 環境変数
デフォルトのホスト名 Admin API の apps.get メソッド
サービスのリスト Admin API の apps.services.list メソッド
特定のサービスのバージョンのリスト Admin API の apps.services.versions.list メソッド
特定のサービスのデフォルト バージョン(トラフィック分割を含む) Admin API の apps.services.get メソッド
特定のバージョンで実行中インスタンスのリスト Admin API の apps.services.versions.instances.list メソッド

アプリケーションが実行しているサービスに関する利用可能なデータの詳細については、Java 11 / 17 ランタイム環境をご覧ください。

Namespace

Namespaces API では、テナントごとに一意の名前空間文字列を指定するだけで、マルチテナント アプリでテナント間のデータを分割できます。

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

OAuth

App Engine OAuth サービスを使用して OAuth 2.0 トークンを確認する代わりに、OAuth 2.0 APIoauth2.tokeninfo メソッドを使用します。

Compute Engine 上で Elasticsearch のような全文検索データベースをホストし、サービスからアクセスします。

タスクキュー

Cloud Tasks REST API、RPC API、または Cloud クライアント ライブラリを使用して非同期コードを実行するタスクをキューに入れ、Java 11 / 17 App Engine 標準サービスを push ターゲットとして使用します。詳細については、タスクキューから Cloud Tasks への移行をご覧ください。

Java 11 / 17 については、次の Cloud Tasks API を操作するサンプル プログラムをご覧ください。

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

ユーザー認証

Users API の代わりに、ユーザー認証で説明されている HTTP ベースの認証メカニズムのいずれかを使用します。