[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["很难理解","hardToUnderstand","thumb-down"],["信息或示例代码不正确","incorrectInformationOrSampleCode","thumb-down"],["没有我需要的信息/示例","missingTheInformationSamplesINeed","thumb-down"],["翻译问题","translationIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2025-08-21。"],[[["\u003cp\u003eMost functionalities from legacy bundled services are now provided by Cloud Client Libraries, offering a modern approach to App Engine development.\u003c/p\u003e\n"],["\u003cp\u003eIf unbundled solutions are not immediately feasible, you can still use legacy bundled services as a temporary fallback, allowing a phased migration to newer services.\u003c/p\u003e\n"],["\u003cp\u003eAfter migrating away from legacy bundled services, consider transitioning from App Engine to Cloud Run, which enhances the App Engine experience with improved features.\u003c/p\u003e\n"],["\u003cp\u003eFor services like Blobstore, Datastore, Images, Logging, Mail, Memcache, Search, and Task Queues, use recommended Google Cloud or third-party alternatives, detailed within the document.\u003c/p\u003e\n"],["\u003cp\u003eTo obtain information and modify your application's running services, you can utilize environment variables in conjunction with the App Engine Admin API, as the document clearly presents the way to do so for each service.\u003c/p\u003e\n"]]],[],null,["# Migrate off of legacy bundled services\n\nGo Java PHP Python\n\nMost of the functionality provided by the legacy bundled services is\nnow provided by the [Cloud Client Libraries]().\nFor more information, see the recommended alternatives listed below.\n\nIf migrating to an unbundled solution is not an option for your project, then\nyou may be able to continue\n[using legacy bundled services in your\napps](/appengine/docs/standard/\n\n/services/access)\nas a fallback. This approach gives you flexibility to move to unbundled services\nlater in the migration cycle.\n| **Note**: Not all the legacy bundled services available for have a corresponding service in , so those will need to be migrated to either a Google Cloud or third-party service before porting to .\n\nAfter you migrate off of legacy bundled services, you can continue using App Engine\nor migrate to Cloud Run. Cloud Run is designed to improve upon the App Engine experience, and incorporates many of the best features of both the\nstandard environment and the flexible environment. To compare\nfeatures and understand how to migrate, see the\n[App Engine and Cloud Run comparison guide](/appengine/migration-center/run/compare-gae-with-run).\n\n\u003cbr /\u003e\n\nMigration paths for App Engine bundled services\n-----------------------------------------------\n\n### Blobstore\n\nTo store and retrieve data, use [Cloud Storage](/storage) through the\n[Cloud Client Libraries](/storage/docs/reference/libraries). To get started, see\n[Using Cloud Storage](/appengine/docs/standard/using-cloud-storage).\n\n### Datastore\n\n### Images\n\nYou can [serve images from Cloud Storage](/appengine/docs/standard/serving-static-files#serving_files_from), serve them\ndirectly, or use a third-party content delivery network (CDN).\n\nThe App Engine Images service also provided functionality to avoid\ndynamic requests to your application by handling image resizing using a serving\nURL. If you want similar functionality, you can generate the re-sized images\nahead of time and upload them to Cloud Storage for serving.\nAlternatively, you could use a third-party content delivery network (CDN)\nservice that offers image resizing.\n\n### Logging\n\nWe recommend that you update your app to use Cloud Logging, which supports\nfeatures such as viewing logs in the Logs Explorer, downloading logs,\nfiltering messages by severity, and correlating app messages with specific\nrequests. Alternatively, if you prefer simplicity over data accuracy, you can write structured logs to `stdout` or `stderr`.\nFor more information, see\n[Writing and viewing logs](/appengine/docs/standard/writing-application-logs).\n\n### Mail\n\nTo send email, use a third-party mail provider such as [SendGrid](https://sendgrid.com/),\n[Mailgun](https://www.mailgun.com/), or\n[Mailjet](https://www.mailjet.com/). All of\nthese services offer APIs to send emails from applications. A recommended\nthird-party alternative for inbound messaging is not available at this time.\n\n### Memcache\n\nTo cache application data, [use Memorystore for Redis](/appengine/docs/standard/using-memorystore).\n\n### Modules\n\nTo obtain information and modify your application's running services, use a\ncombination of environment variables and the App Engine Admin API:\n\nFor more information about the data available about your application's\nrunning services, see\n[runtime environment](/appengine/docs/standard/\n\n/runtime#environment_variables).\n\n### OAuth\n\nInstead of using the App Engine OAuth service to verify OAuth 2.0 tokens,\nuse the\n[`oauth2.tokeninfo`](https://developers.google.com/apis-explorer/#search/oauth2/oauth2/v2/oauth2.tokeninfo)\nmethod of the\n[OAuth 2.0 API](https://developers.google.com/identity/protocols/OAuth2).\n\n### Search\n\nHost any full-text search database such as Elasticsearch on Compute Engine and\naccess it from your service.\n\n### Task queue\n\nQueue tasks for asynchronous code execution using the\n[Cloud Tasks](/tasks/docs) REST API, RPC API, or the Cloud Client Libraries,\nand use a\n\nApp Engine standard service\nas a Push target. For more information, see\n[Migrating from Task Queues to Cloud Tasks](/tasks/docs/migrating).\n\nIn many cases where you might use pull queues, such as queuing up tasks or\nmessages that will be pulled and processed by separate workers,\n[Pub/Sub](/appengine/docs/standard/writing-and-responding-to-pub-sub-messages)\ncan be a good alternative as it offers similar functionality and delivery\nguarantees.\n\n### User authentication\n\nFor an alternative to the Users API, use any of the HTTP-based authentication\nmechanisms described on the\n[User authentication](/appengine/docs/standard/authenticating-users) page.\n\n\u003cbr /\u003e"]]