从旧版捆绑服务迁出

旧版捆绑服务提供的大多数功能现在由 Cloud 客户端库提供。如需了解详情,请参阅下面列出的建议替代方案。

如果您的项目无法迁移到未捆绑的解决方案,则您可以继续 在 Java 11/17 应用中使用旧版捆绑服务作为备用。这种方法可让您灵活地在迁移周期的后期迁移到未捆绑的服务。

App Engine 捆绑式服务的迁移路径

Blobstore

如需存储和检索数据,请通过 Google Cloud 客户端库使用 Cloud Storage。 如需开始使用,请参阅使用 Cloud Storage

Datastore

您可以使用 Datastore 模式的 Firestore 来替代 Datastore API。FirestoreDatastore 的最新版本,我们建议您使用适用于 Datastore 的 Cloud 客户端库

图片

您可以从 Cloud Storage 传送图片,直接传送图片或使用第三方内容分发网络 (CDN)。

如需调整图片大小、转换和处理图片,请使用图片处理库(例如 ImageJ2imgscalrthumbnailator

如需使用某个第三方库,请将该库添加为依赖项,并更新代码以调用该库的 API。

App Engine Images 服务还通过使用传送网址处理图片大小调整来避免向应用发出动态请求。如果您想实现类似功能,可以提前重新调整图片大小,并将其上传到 Cloud Storage 以供传送。或者,您也可以使用具有调整图片大小功能的第三方内容分发网络 (CDN) 服务。

日志记录

我们建议您更新应用以使用 Cloud Logging,它支持以下功能,例如在日志浏览器中查看日志、下载日志、按严重程度过滤消息以及将应用消息与特定请求相关联。或者,如果您更喜欢简单而不是数据准确性,则可以将结构化日志写入 stdoutstderr。如需了解详情,请参阅写入和查看日志

邮件

如需发送电子邮件,请使用第三方邮件提供程序,例如 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 运行时环境

命名空间

借助 Namespaces API,多租户应用只需为每个租户指定唯一的命名空间字符串,即可跨租户划分数据。

Datastore 直接支持多租户,但其他 Google Cloud 服务不支持。如果您的多租户应用使用其他 Google Cloud 服务,则需要手动处理多租户。要实现完全隔离的服务实例,您可以使用 Cloud Resource Manager API 以编程方式创建新项目,并访问不同项目的资源。

OAuth

请使用 OAuth 2.0 APIoauth2.tokeninfo 方法,而不是使用 App Engine OAuth 服务来验证 OAuth 2.0 令牌。

您可以托管任何全文搜索数据库,例如 Compute Engine 上的 Elasticsearch,并通过您的服务访问该数据库。

任务队列

使用 Cloud Tasks REST API、RPC API 或 Cloud 客户端库将异步代码执行任务加入队列,并使用 Java 11/17 App Engine 标准服务作为推送目标。如需了解详情,请参阅从任务队列迁移到 Cloud Tasks

对于 Java 11/17,请参阅以下与 Cloud Tasks API 进行交互的示例程序

在许多情况下,您可能会使用拉取队列(例如,将由单独工作器拉取和处理的任务或消息加入队列),此时,Pub/Sub 是一个很好的替代方案,它可以提供类似的功能和传送保证。

用户身份验证

如需替代 Users API,请使用用户身份验证页面上说明的任何基于 HTTP 的身份验证机制。