従来のバンドル サービスで提供される機能の大部分が Cloud クライアント ライブラリで提供されるようになりました。詳細については、下記のおすすめの代替方法をご覧ください。
バンドルされていないソリューションへの移行がプロジェクトでできない場合、代替として Java 11 / 17 アプリで従来のバンドル サービスの使用を継続できる可能性があります。このアプローチでは、移行サイクルの後半でバンドルされていないサービスに移行できます。
App Engine バンドル サービスの移行方法の概要
Blobstore
データを格納および取得するには、Cloud クライアント ライブラリを介して Cloud Storage を使用します。ご利用にあたっては、Cloud Storage の使用。
Datastore
Datastore API の代わりに、Datastore モードの Firestore を使用できます。Firestore は Datastore の最新バージョンであり、Datastore 用の Cloud クライアント ライブラリを使用することをおすすめします。
画像
画像の配信には、Cloud Storage から行う方法、直接配信する方法、サードパーティのコンテンツ配信ネットワーク(CDN)を使用する方法があります。
画像のサイズ変更、変換、操作を行うには、ImageJ2、imgscalr、thumbnailator
こうしたサードパーティ ライブラリを使用するには、ライブラリを依存関係として追加し、ライブラリの API を呼び出すようにコードを更新します。
また、App Engine Images サービスでは、サービス提供 URL を使用して画像のサイズ変更を処理することで、アプリケーションへの動的リクエストを回避する機能も提供されます。同様の機能は、サイズが変更された画像を事前に生成し、Cloud Storage にアップロードして配信することでも実現できます。または、画像のサイズ変更機能が用意されているサードパーティ コンテンツ配信ネットワーク(CDN)サービスを利用することもできます。
ロギング
Cloud Logging を使用するように、アプリを更新することをおすすめします。Cloud Logging では、ログ エクスプローラのログの表示、ログのダウンロード、重大度によるメッセージのフィルタリング、特定のリクエストとのアプリ メッセージの関連付けなどの機能がサポートされています。または、データの精度よりも簡素化を求める場合、構造化ログを stdout
または stderr
に書き込むこともできます。詳細については、ログの書き込みと表示をご覧ください。
メール
メールを送信するには、SendGrid、Mailgun、Mailjet などのサードパーティのメール プロバイダを使用します。これらのサービスはいずれも、アプリケーションからメールを送信するための 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 API の oauth2.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 ベースの認証メカニズムのいずれかを使用します。