以前のランタイムのサポート

以前のランタイムには、オープンソース コミュニティで管理されなくなった言語バージョンが含まれています。App Engine をご利用のお客様の多くが、引き続きこれらの言語バージョンを使用されているため、Google は、App Engine スタンダード環境で次のランタイムに対する長期的なサポートを提供します。

Google は、以前のランタイムをサポート終了フェーズに移行します。詳しくは、サポート スケジュールをご覧ください。

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 11 / 17 に移行できます。詳しくは、Java 8 から Java 11 以降への移行をご覧ください。

Google はアプリコードを変更することなく、Java 6 と Java 7 のアプリを Java 8 ランタイムに自動的に移行できました。ただし、Java 11 には下位互換性がないため、アプリを Java 11 ランタイムに自動的に移行することはできません。Java 11 への移行時には Java 6、Java 7、Java 8 のアプリを大幅に変更する必要があるため、こうしたアプリを Java 8 ランタイムで引き続き実行できます。

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 1.12 に移行するをご覧ください。

PHP 5.5

PHP 5.5 ランタイムは 2013 年 5 月 16 日にリリースされました。このランタイムでは、オープンソース バージョンから多くの機能が削除され、カスタム サンドボックス内でアプリが実行されます。

Google は現在、このランタイムをオープンソースの状態に戻し、サンドボックスのモダナイゼーションを行っています。今後、リクエストパスを正規化してパフォーマンスを最適化するためにさらに更新を行います。こうした変更により、近い将来 PHP 5.5 ランタイムをサポートできるようになります。

PHP 5.5 ランタイムに Google が行った変更により、App Engine のバンドル サービスを Google Cloud サービスに置き換えて、サポート終了になる前に PHP 7 / 8 に移行できます。詳しくは、アプリを PHP 5.5 から PHP 7 / 8 以降に移行するをご覧ください。

サポートが終了する以前のランタイムのデプロイを有効にする

App Engine のランタイム ライフサイクル ポリシーに基づき、サポート終了のランタイムを使用したアプリケーションはデプロイできなくなります。ランタイムに影響する主な日程については、サポート スケジュールをご覧ください。

組織でサポート終了のタイムラインに達したランタイムのデプロイを再度有効にする場合は、constraints/appengine.runtimeDeploymentExemption を使用して、新しい組織のポリシーを定義します。デプロイを再度有効にするためのこの組織ポリシーは一般提供になります。サポート終了日以降の以前のランタイムの継続的な使用は試験運用版として扱われ、pre-GA サービス利用規約が適用されます。

組織のポリシーを作成または変更するには、アカウントに roles/orgpolicy.policyAdmin ロールが必要です。

ポリシーを使用してデプロイを再度有効にする

デプロイを有効にするポリシーを作成するには、Google Cloud CLI または Google Cloud コンソールを使用して、特定の組織内での指定環境へのデプロイを許可します。

コンソール

  1. Google Cloud コンソールの [組織のポリシー] ページに移動します。
    [組織のポリシー] に移動

    [組織のポリシー] ページに、利用可能な組織のポリシーの制約リストが表示されます。

  2. 新しいポリシーを追加するプロジェクト、フォルダ、または組織を選択します。

  3. リストで [Runtime Deployment Exemption (App Engine)] ポリシーを探します。リストの上部にある [フィルタ] フィールドを使用できます。

  4. ポリシーの名前をクリックします。コンテキスト メニューから [ポリシーを編集] を選択することもできます。

  5. [ポリシーを管理] をクリックします。

  6. [適用先] で [カスタマイズ] を選択します。

  7. [ポリシーの適用] で [置換] を選択します。

  8. [ルール] の下の [ルールを追加] をクリックします。

  9. [ポリシーの値] で [カスタム] を選択します。

  10. [ポリシータイプ] で [許可] を選択します。

  11. [カスタム値] で、組織に適用するランタイムを指定します。次の値がサポートされています。

    • python27: Python 2.7 を使用するアプリケーションを許可します
    • java8: Java 8 を使用するアプリケーションを許可します。
    • php55: PHP 5.5 を使用するアプリケーションを許可します
    • 複数のランタイムを明示的に許可するには、python27java8php55 を一緒に指定します。デフォルトでは、ポリシーが設定されていない場合、ランタイムは許可されません。
  12. [完了] をクリックします。

  13. [保存] をクリックします。

変更が適用されると、このポリシーにより、指定した環境でサポート終了の 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 を使用するアプリケーションを許可します
    • 複数の言語ランタイムを明示的に許可するには、python27java8php55 を一緒に指定します。デフォルトでは、ポリシーが設定されていない場合、言語ランタイムは許可されません。