App Engine 第 1 世代の以前のランタイム(Python 2.7、Java 8、Go 1.11、PHP 5.5 など)はサポートが終了しており、2026 年 1 月 31 日に非推奨になります。非推奨となった後は、過去に組織のポリシーを使用して以前のランタイムのデプロイを再度有効にしていた場合でも、これらのランタイムをデプロイできなくなります。既存のアプリケーションは、非推奨となる日付以降も引き続き稼働し、トラフィックも受け続けます。できるだけ早く、ランタイムのサポートされている最新バージョンに移行することをおすすめします。
Google の取り組み
以前のランタイムは、2024 年 1 月 30 日にサポートが終了しました。
以前のランタイムには次の変更が行われています。
可能な限り、以前のランタイムのコンポーネントは、フォークされていないオープンソースの状態に戻されています。データセンターでアプリを安全に実行するには、一部のランタイムを厳格に制限して次の点を修正する必要がありました。Google のデータセンターでのランタイムの運用方法を変更することで、こうしたランタイムのために安全でスケーラブルな環境を長期にわたって提供できます。
パッケージ リポジトリ、慣用的なコンポーネント ビルド、アセット リポジトリをサポートする完全なビルドシステムが追加されています。
セキュリティに関する更新
コミュニティで言語バージョンの保守が中止されると、解決策が公開されていない脆弱性にアプリがさらされる可能性があります。そのため、一部の App Engine ランタイムでアプリの実行を継続すると、コミュニティでサポートされている言語が含まれるランタイムにアップグレードするよりもリスクが高くなります。
アプリで使用するすべての API の修正を commit することはできません。言語の新しいバージョン用のライブラリでのみ使用できる修正が見つかる場合もあります。
App Engine のバンドル サービスのサポート
Python 2.7、Java 8、Go 1.11、PHP 5.5 のランタイムには、App Engine サービスと Blobstore、Memcache、タスクキューなどの API がバンドルされています。
次に示す第 2 世代ランタイムでは、バンドル サービスや API の多くに引き続きアクセスできます。
アプリは、言語特有のライブラリを使用して、バンドル サービスの API を呼び出し、以前のランタイムと同じ機能にアクセスできます。柔軟性を高めるために、バンドル サービスはより新しいランタイムで提供され、バンドルされていないサービスに移行するか、以前の App Engine バンドル サービスの使用を継続するかを選択できます。
パイプラインに非推奨がある場合は、標準非推奨ポリシーに従って代替案を提案します。大部分のアプリでは、コードの変更や再デプロイが必要になることはありません。
各ランタイムのタイムライン
次のセクションでは、各ランタイムのライフサイクル ステータスとサポートの状況について説明します。
Python 2.7
Python 2.7 ランタイムは 2012 年 2 月 27 日にリリースされました。このランタイムの大部分の変更と制限はすでに排除されていますが、ビルドプロセス、リクエストパス、パッケージの可用性を正規化するためにさらに更新を行う予定です。ランタイムに対するこうした変更により、Python コミュニティでの Python 2.7 の公式サポートが終了した 2020 年 1 月 1 日以降、 Google Cloud での Python 2.7 ランタイムのサポートが実現します。
Python 2.7 ランタイムに対する変更と 2021 年秋のお知らせで行われた変更により、バンドルされた App Engine サービスのほとんどを Python 3 に移行できます。これらのサービスを利用することで、Python 3 への移行を簡単に行うだけでなく、サポート終了になる前にバンドル サービスを同等の Google Cloud サービスに置き換えることもできます。移行については、次のガイドをご覧ください。
Java 8
Java 8 ランタイムは 2017 年 6 月 28 日にリリースされました。このランタイムは App Engine 用にわずかに変更され、Java パッケージのインポートが幅広くサポートされています。
Google はこのランタイムに対して次の更新を行います。
Java ランタイムをオープンソースの状態に戻します。
リクエストパスを正規化します。
Jetty 9.4 にアップグレードします。
こうした変更により、当面は Google Cloud で Java 8 ランタイムがサポートされます。
Java 8 ランタイムに Google が行った変更により、App Engine のバンドル サービスを Google Cloud サービスに置き換えて、サポート終了になる前に最新の Java ランタイムに移行できます。詳しくは、Java 8 から最新の Java ランタイムへの移行をご覧ください。
Google はアプリコードを変更することなく、Java 6 と Java 7 のアプリを Java 8 ランタイムに自動的に移行できました。ただし、Java 11 には下位互換性がないため、アプリを Java 11 ランタイムに自動的に移行することはできません。
Go 1.11
Go 1.11 ランタイムは 2019 年 3 月 20 日にリリースされ、Go 1.6-1.9 アプリを Go 1.11 ランタイムに移行することが推奨されました。Go 1.11 ランタイムは、Go 1.6~Go 1.11 で構築されたアプリの長期的な状態です。
アプリを Go 1.11 で実行すると、App Engine のバンドル サービスや API を Google Cloud サービスに置き換えて、サポート終了になる前サポート対象バージョンにアップグレードできます。移行の詳細については、App Engine アプリを最新の Go ランタイムに移行するをご覧ください。
PHP 5.5
PHP 5.5 ランタイムは 2013 年 5 月 16 日にリリースされました。このランタイムでは、オープンソース バージョンから多くの機能が削除され、カスタム サンドボックス内でアプリが実行されます。
Google は現在、このランタイムをオープンソースの状態に戻し、サンドボックスのモダナイゼーションを行っています。今後、リクエストパスを正規化してパフォーマンスを最適化するためにさらに更新を行います。こうした変更により、近い将来 PHP 5.5 ランタイムをサポートできるようになります。
PHP 5.5 ランタイムに Google が行った変更により、App Engine のバンドル サービスを Google Cloud サービスに置き換えて、サポート終了になる前に最新の PHP ランタイムに移行できます。詳しくは、アプリを PHP 5.5 から最新の PHP ランタイムに移行するをご覧ください。
サポートが終了する以前のランタイムのデプロイを有効にする
2026 年 1 月 31 日以降、appengine.runtimeDeploymentExemption 組織のポリシーでは、非推奨フェーズに達した以前のランタイムのデプロイはサポートされなくなります。
App Engine のランタイム ライフサイクル ポリシーに基づき、サポート終了のランタイムを使用したアプリケーションはデプロイできなくなります。ランタイムに影響する主な日程については、サポート スケジュールをご覧ください。
組織でサポート終了のタイムラインに達したランタイムのデプロイを再度有効にする場合は、constraints/appengine.runtimeDeploymentExemption を使用して、新しい組織のポリシーを定義します。デプロイを再度有効にするためのこの組織ポリシーは一般提供になります。サポート終了日以降の以前のランタイムの継続的な使用は試験運用版として扱われ、pre-GA サービス利用規約が適用されます。
組織のポリシーを作成または変更するには、アカウントに roles/orgpolicy.policyAdmin ロールが必要です。
ポリシーを使用してデプロイを再度有効にする
デプロイを有効にするポリシーを作成するには、特定の組織内での指定環境へのサポートが終了した Google Cloud CLI または Google Cloud コンソールを使用します。
コンソール
Google Cloud コンソールの [組織のポリシー] ページに移動します。
[組織のポリシー] に移動[組織のポリシー] ページに、利用可能な組織のポリシーの制約リストが表示されます。
新しいポリシーを追加するプロジェクト、フォルダ、または組織を選択します。
リストで [Runtime Deployment Exemption (App Engine)] ポリシーを探します。リストの上部にある [フィルタ] フィールドを使用できます。
ポリシーの名前をクリックします。コンテキスト メニューから [ポリシーを編集] を選択することもできます。
[ポリシーを管理] をクリックします。
[適用先] で [カスタマイズ] を選択します。
[ポリシーの適用] で [置換] を選択します。
[ルール] の下の [ルールを追加] をクリックします。
[ポリシーの値] で [カスタム] を選択します。
[ポリシータイプ] で [許可] を選択します。
[カスタム値] で、組織に適用するランタイムを指定します。次の値がサポートされています。
python27: Python 2.7 を使用するアプリケーションを許可しますjava8: Java 8 を使用するアプリケーションを許可します。php55: PHP 5.5 を使用するアプリケーションを許可します- 複数のランタイムを明示的に許可するには、
python27、java8、php55を一緒に指定します。デフォルトでは、ポリシーが設定されていない場合、ランタイムは許可されません。
[完了] をクリックします。
[保存] をクリックします。
変更が適用されると、このポリシーにより、指定した環境でサポート終了の App Engine ランタイムのデプロイが有効になります。
gcloud
次のコマンドを実行します。
gcloud resource-manager org-policies \ allow appengine.runtimeDeploymentExemption \ --organization=ORGANIZATION_NUMBER RUNTIME_ID
次のように置き換えます。
ORGANIZATION_NUMBERは、ポリシーを適用する組織の番号に置き換えます。RUNTIME_IDは、デプロイを許可するランタイムに置き換えます。RUNTIME_IDは、次のいずれかのランタイム ID に置き換えます。python27: Python 2.7 を使用するアプリケーションを許可しますjava8: Java 8 を使用するアプリケーションを許可します。php55: PHP 5.5 を使用するアプリケーションを許可します- 複数の言語ランタイムを明示的に許可するには、
python27、java8、php55を一緒に指定します。デフォルトでは、ポリシーが設定されていない場合、言語ランタイムは許可されません。