对旧版运行时的支持

旧版运行时包括开源社区不再维护的第一代语言版本。由于许多 App Engine 客户仍然依赖于这些第一代语言版本,Google 在 App Engine 标准环境中为以下旧版运行时提供了长期支持:

Google 正在将旧版运行时过渡到停止提供支持阶段。如需了解详情,请参阅支持时间表

我们的承诺

旧版运行时已于 2024 年 1 月 30 日终止支持

旧版运行时已进行了以下更改:

  • 旧版运行时的组件已尽可能恢复到未分支的开源状态。我们不得不严格限制和修改某些运行时,以便在我们的数据中心内安全地运行您的应用。通过更改运行时在我们的数据中心内的运行方式,我们可以长期为这些运行时提供一个安全且可扩缩的环境。

  • 添加了完整的构建系统,用于支持软件包代码库、惯用的组件版本和资源代码库。

安全更新

当社区停止维护其语言的版本时,您的应用可能会出现漏洞;在公开的渠道中,这些漏洞并没有相应的修复程序。因此,在某些 App Engine 运行时环境中继续运行您的应用会比升级到具有社区支持语言的运行时环境存在更高的风险。

我们无法保证修复您的应用使用的每个 API。您可能会发现,只有较新语言版本的库才会提供修复程序。

对 App Engine 捆绑式服务的支持

Python 2.7、Java 8、Go 1.11、PHP 5.5 运行时提供了捆绑的 App Engine 服务和 API,例如 Blobstore、Memcache、任务队列。

您可以在部分第二代运行时中继续访问其中的许多捆绑服务和 API:

您的应用可以通过语言惯用库调用捆绑服务 API,并访问与旧版运行时相同的功能。新版运行时提供了这些捆绑服务,从而提供更大的灵活性,让您可以选择迁移到未捆绑的服务,或继续使用 App Engine 旧版捆绑服务。

如果流水线中有任何弃用情况,我们将遵循我们的标准弃用政策并提供替代方案建议。我们预计大多数应用都不需要更改代码或重新部署。

每个运行时环境的当前状态

Python 2.7

我们于 2012 年 2 月 27 日发布了 Python 2.7 运行时环境。虽然我们已从此运行时环境的大部分内容中移除了我们的修改和限制,但我们将进一步更新,使构建流程、请求路径和软件包可用性标准化。对该运行时环境的这些更改使 Google Cloud 能够在 2020 年 1 月 1 日(也就是 Python 社区结束对 Python 2.7 提供官方支持的日期)之后支持 Python 2.7 运行时环境。

我们对 Python 2.7 运行时所做的更改以及 2021 年秋季通知中所提到的更改将使大部分捆绑的 App Engine 服务恢复到 Python 3。在支持终止之前,这些服务可让您更轻松地迁移到 Python 3 和/或将捆绑服务替换为等效的 Google Cloud 服务。如需了解迁移,请参阅以下指南:

Java 8

我们于 2017 年 6 月 28 日发布了 Java 8 运行时环境。此运行时环境针对 App Engine 略有修改,并为导入 Java 软件包提供了广泛的支持。

我们将对此运行时环境进行以下更新:

  • 将 Java 运行时环境恢复到开源状态。

  • 使请求路径标准化。

  • 升级到 Jetty 9.4。

这些更改将使 Google Cloud 能够在可预见的未来支持 Java 8 运行时环境。

支持终止之前,我们对 Java 8 运行时所做的更改使您可以将捆绑的 App Engine 服务替换为 Google Cloud 服务,并迁移到 Java 11/17。请参阅有关从 Java 8 迁移到 Java 11+ 的信息。

我们能够自动将 Java 6 和 Java 7 应用迁移到 Java 8 运行时环境,而无需更改应用代码。但是,Java 11 不具备向后兼容性,导致我们无法自动将应用迁移到 Java 11 运行时环境。迁移到 Java 11 时,您可能需要对 Java 6、Java 7、Java 8 应用进行重大更改,因此您可以继续在 Java 8 运行时环境中运行这些应用。

Go 1.11

我们于 2019 年 3 月 20 日发布了 Go 1.11 运行时环境,并且建议将 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 服务,并升级到受支持的 Go 版本。如需详细了解如何迁移,请参阅将 App Engine 应用迁移到 Go 1.12

PHP 5.5

我们于 2013 年 5 月 16 日发布了 PHP 5.5 运行时环境。此运行时环境从开源版本中移除了许多功能,并在自定义沙盒中运行应用。

目前,我们正在将此运行时环境恢复到其开源状态,并对沙盒进行现代化改造。我们将进一步更新,使请求路径标准化并优化性能。这些更改使我们能够在可预见的未来支持 PHP 5.5 运行时环境。

支持终止之前,我们对 PHP 5.5 运行时所做的更改使您可以将捆绑的 App Engine 服务替换为 Google Cloud 服务,并迁移到 PHP 7/8。请参阅有关将应用从 PHP 5.5 迁移到 PHP 7/8 的信息。

为终止支持的旧版运行时启用部署

根据 App Engine 运行时生命周期政策,您将无法再使用已终止支持的运行时部署应用。如需了解影响运行时的关键日期,请参阅支持时间表

如果您的组织想要为已终止支持的旧版运行时重新启用部署,则您可以使用 constraints/appengine.runtimeDeploymentExemption 定义新的组织政策。 用于重新启用部署的此组织政策已正式发布。在支持终止日期后继续使用旧版运行时是实验性的,并受“正式发布前产品条款”的约束。

要创建或更改组织政策,您的账号必须具有 roles/orgpolicy.policyAdmin 角色。

使用政策重新启用部署

如需创建启用部署的政策,请使用给定组织内已终止对指定环境的支持的 Google Cloud CLI 或 Google Cloud 控制台。

控制台

  1. 转到 Google Cloud 控制台中的“组织政策”页面。
    转到“组织政策”

    “组织政策”页面会显示可用组织政策限制条件的列表。

  2. 选择要添加新政策的项目、文件夹或组织。

  3. 在列表中找到运行时部署豁免 (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。如果未设置任何政策,则默认不允许任何语言运行时。