部署到 Azure Functions
本指南解释了如何在使用 Azure Functions 将基于 Node.js 的函数应用部署到 Azure 时,避免常见问题。
Azure Functions 是一个无服务器部署平台。您无需维护基础设施即可部署代码。在 Azure Functions 中,基本构建块是函数应用。函数应用在 Azure 中提供了一个执行上下文,您的函数在此上下文下运行。它由一个或多个 Azure 统一管理、部署和扩展的独立函数组成。您可以将多个函数组织起来,作为一个单一的逻辑单元进行集体管理。
如果 Prisma ORM 的 Rust 引擎二进制文件导致捆绑包大小过大、构建缓慢或部署问题(例如,在无服务器或边缘环境中),您可以在不使用它们的情况下使用它,只需配置您的 generator 块
generator client {
provider = "prisma-client-js" // or "prisma-client"
engineType = "client"
}
无需 Rust 二进制文件的 Prisma ORM 已于 v6.16.0 起 正式发布。
请注意,在这种情况下您需要使用驱动适配器。
使用此架构时
- 不会下载或附带 Rust 查询引擎二进制文件。
- 数据库连接池由您安装的原生 JS 数据库驱动程序维护(例如,PostgreSQL 的
@prisma/adapter-pg)。
此设置可以简化无服务器或边缘运行时的部署。在此处文档中了解更多信息。
好奇我们为什么放弃 Rust 引擎?请查看这篇博客文章,了解我们为何从 Rust 二进制引擎转向全 TypeScript 方法,以实现更快、更轻的 Prisma ORM。
先决条件
- 一个现有的带有 Prisma ORM 的函数应用项目
须知事项
虽然 Prisma ORM 与 Azure 函数配合良好,但在部署应用程序之前仍需注意几点。
定义多个二进制目标
部署函数应用时,Azure 函数远程构建所使用的操作系统与托管您的函数所使用的操作系统不同。因此,我们建议在 Prisma schema 中指定以下 binaryTargets 选项
generator client {
provider = "prisma-client-js"
binaryTargets = ["native", "debian-openssl-1.1.x"]
}
连接池
通常,当您使用 FaaS(函数即服务)环境与数据库交互时,每次函数调用都可能导致与数据库建立新的连接。这对于持续运行的 Node.js 服务器来说不是问题。因此,池化数据库连接以获得更好的性能是有益的。为了解决这个问题,您可以使用 Prisma Accelerate。对于其他解决方案,请参阅无服务器环境连接管理指南。
总结
要深入了解 Prisma Client 的 API,请浏览函数处理程序并查阅 Prisma Client API 参考