使用 Azure Functions 开发Node.js无服务器解决方案

Azure Functions 提供无服务器代码基础结构,使你能够创建响应式按需 HTTP 终结点。 无服务器应用由用于响应各种事件的 JavaScript 或 TypeScript 代码组成。

函数提供:

  • Web 服务的抽象 - 你专注于代码,而不是基础结构。

  • 与 Azure 服务集成 - 使用事件触发进出 Azure 服务

  • 与 JavaScript 包集成 - 将你喜欢的 npm 包与无服务器代码配合使用

  • Azure 无服务器社区示例库

什么是 Function 资源?

Azure Function 资源是一个 Azure 地理位置中所有相关函数的逻辑单元。 资源可以包含单个函数或多个函数,这些函数可以彼此独立,也可以与输入或输出绑定相关。 可以从多个常用函数中进行选择,也可以创建自己的函数。

函数资源设置包含常用的无服务器配置,包括环境变量、身份验证、日志记录和 CORS。

持久有状态函数

Durable Functions 在 Azure 中保留状态或管理长期运行的函数使用 JavaScript 创建你的第一个持久函数

静态 Web 应用包括函数

开发静态前端客户端应用程序(如 Angular、React 或 Vue)时(也需要无服务器 API),请配合使用静态 Web 应用和函数,以将两者捆绑在一起。

从客户端应用到 API 的代理

如果打算使用静态 Web 应用部署 API,则无需代理客户端应用程序的 API 调用。 代理是为你建立的,包括本地和远程开发。

使用静态 Web 应用和 Azure Functions 在本地开发时, Azure 静态 Web 应用 CLI 提供本地代理。

需要为 Azure 函数配置的常见安全设置

要确保 Azure 函数安全,应配置下列常见设置:

  • 配置设置
    • 配置设置 - 为不会影响安全性的设置创建应用程序设置。
    • 机密和密钥 - 对于影响安全性的任何设置,请创建 Azure 密钥库并从密钥库拉取这些设置。
    • 平台设置上的 FTP 状态 - 默认全部允许。 需要选择“仅限 FTP”或完全禁用 FTP 来提高安全性
  • API CORS - 配置客户端域。 请勿使用 *,指示所有域。
  • HTTPS 的 TLS/SSL 设置 - API 默认接受 HTTP 和 HTTPS 请求。 在 TLS/SSL 设置中启用“仅限 HTTPS”。 由于函数应用托管在安全子域上,因此可以立即使用它(带有 https)并延迟购买域名,并使用域的证书,直到准备就绪。
  • 部署槽位 - 创建一个部署槽位(例如 stagepreflight),并推送到该槽位。 准备就绪后,将此阶段槽交换到生产环境。 不要习惯手动推送到生产环境。 基本代码应该能够指示槽位上的版本或提交。

开发 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 服务。

后续步骤

使用下表详细了解 Azure Functions 与 Node.js

要了解 示例
什么是 Contoso 房地产 Contoso 房地产
使用 Azure Functions 构建无服务器 API MicrosoftDocs/mslearn-build-api-azure-functions
Node.js 将 Express API 重构为无服务器 Azure Functions API MicrosoftDocs/mslearn-module-shifting-nodejs-express-apis-to-serverless
使用 Azure Functions 和 Blob 存储上传和分析文件 Azure-Samples/msdocs-storage-bind-function-service