使用 Azure Functions 开发无服务器 Node.js 应用
Azure Functions 提供功能强大的无服务器基础结构,使你能够轻松开发可缩放的按需 HTTP 终结点。 通过使用 JavaScript 或 TypeScript,可以创建响应各种事件的无服务器应用程序,使你能够专注于编写代码,而无需担心管理服务器。 本指南可帮助你开始使用 Azure Functions 开发无服务器 Node.js 应用,并与其他 Azure 服务无缝集成。
什么是 Function 资源?
Azure Function 资源是一个 Azure 地理位置中所有相关函数的逻辑单元。 资源可以包含单个函数或多个函数,这些函数可以彼此独立,也可以与输入或输出绑定相关。 可以从多个常用函数中进行选择,也可以创建自己的函数。
函数资源设置包含常用的无服务器配置,包括环境变量、身份验证、日志记录和 CORS。
持久有状态函数
Durable Functions 在 Azure 中保留状态或管理长期运行的函数。 使用 JavaScript 创建你的第一个持久函数。
静态 Web 应用包括函数
开发静态前端客户端应用程序(如 Angular、React 或 Vue)时,如果还需要无服务器 API,可以使用 静态 Web 应用,将两者与函数一起打包。
从客户端应用到 API 的代理
如果打算使用静态 Web 应用部署 API,则无需代理客户端应用程序的 API 调用。 部署 Azure Functions 应用为托管应用时,系统会为您建立一个代理。
使用静态 Web 应用和 Azure Functions 在本地开发时,Azure 静态 Web 应用 CLI 提供本地代理。
需要为 Azure 函数配置的常见安全设置
要确保 Azure 函数安全,应配置下列常见设置:
- 配置设置
- CORS - 配置客户端域。 请勿使用
*
,指示所有域。 - HTTPS 的 TLS/SSL 设置 - API 默认接受 HTTP 和 HTTPS 请求。 在 TLS/SSL 设置中启用“仅限 HTTPS”。 由于函数应用托管在安全子域上,因此可以立即使用它(带有
https
)并延迟购买域名,并使用域的证书,直到准备就绪。 - 部署槽位 - 创建一个部署槽位(例如
stage
或preflight
),并推送到该槽位。 准备就绪后,将此阶段槽交换到生产环境。 不要习惯手动推送到生产环境。 基本代码应该能够指示槽位上的版本或提交。
开发 Azure Functions 的先决条件
用于 HTTP 请求的简单 JavaScript 函数
函数是含有请求和上下文信息的导出异步函数。 Azure 门户的以下部分屏幕截图显示了函数代码。
import { app, HttpRequest, HttpResponseInit, InvocationContext } from "@azure/functions";
export async function status(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
context.log(`Http function processed request for url "${request.url}"`);
return {
status: 200,
jsonBody: {
env: process.env
}
};
};
app.http('status', {
route: "status",
methods: ['GET'],
authLevel: 'anonymous',
handler: status
});
使用 Visual Studio Code 和扩展在本地开发函数
使用 Visual Studio Code 创建第一个函数。 Visual Studio Code 通过 Azure Functions 扩展简化了许多细节。
此扩展有助于使用常用模板创建 JavaScript 和 TypeScript 函数。
与其他 Azure 服务集成
无服务器函数消除了许多服务器配置和管理,因此你可以只关注所需的代码。
- 低代码函数:使用 Azure Functions,可以使用 触发器绑定创建由其他 Azure 服务触发或输出到其他 Azure 服务的函数。
- 高代码函数:若要进行更多控制,请使用 Azure SDK 协调和控制其他 Azure 服务。