快速入门:在 Azure 中使用 Visual Studio Code 创建 JavaScript 函数

使用 Visual Studio Code 来创建一个响应 HTTP 请求的 JavaScript 函数。 在本地测试代码,然后将代码部署到 Azure Functions 的无服务器环境。

完成本快速入门会从你的 Azure 帐户中扣取最多几美分的费用。

本文还有一个基于 CLI 的版本

配置环境

在开始之前,请确保已满足下列要求:

创建本地项目

在本部分,你将使用 Visual Studio Code 在 JavaScript 中创建一个本地 Azure Functions 项目。 稍后在本文中,你要将函数代码发布到 Azure。

  1. 在活动栏中选择“Azure”图标,然后在“Azure:函数”区域中选择“创建新项目...”图标。

    选择“创建新项目”

  2. 为项目工作区选择目录位置,然后选择“选择” 。

    备注

    这些步骤已设计为在工作区之外完成。 在这种情况下,请不要选择属于工作区内的项目文件夹。

  3. 根据提示提供以下信息:

    Prompt 选择
    选择函数项目的语言 选择 JavaScript
    为项目的第一个函数选择模板 选择 HTTP trigger
    提供函数名称 键入 HttpExample
    授权级别 选择 Anonymous,这使任何人都可以调用你的函数终结点。 若要了解授权级别,请参阅授权密钥
    选择打开项目的方式 选择 Add to workspace

    Visual Studio Code 将使用此信息生成一个包含 HTTP 触发器的 Azure Functions 项目。 可以在资源管理器中查看本地项目文件。 若要详细了解所创建的文件,请参阅生成的项目文件

在本地运行函数

Visual Studio Code 与 Azure Functions Core Tools 相集成,便于你在发布到 Azure 之前在本地开发计算机上运行此项目。

  1. 若要调用函数,请按 F5 启动函数应用项目。 来自 Core Tools 的输出会显示在“终端” 面板中。 应用将在“终端”面板中启动。 可以看到 HTTP 触发函数的 URL 终结点在本地运行。

    本地函数 VS Code 输出

    如果在 Windows 上运行时遇到问题,请确保用于 Visual Studio Code 的默认终端未设置为“WSL Bash”。

  2. 运行 Core Tools 后,转到“Azure:Functions”区域。 在“Functions”下,展开“本地项目” > “Functions” 。 右键单击 (Windows) 或按 Ctrl - 单击 (macOS) HttpExample 函数,然后选择“立即执行函数...”。

    立即在 Visual Studio Code 中执行函数

  3. 在“输入请求正文”中,你将看到请求消息正文值 { "name": "Azure" }。 按 Enter 将此请求消息发送给函数。

  4. 当函数在本地执行并返回响应时,Visual Studio Code 中将引发通知。 函数执行的相关信息将显示在“终端”面板中。

  5. 按 Ctrl + C 停止 Core Tools 并断开调试器的连接

确认该函数可以在本地计算机上正确运行以后,可以使用 Visual Studio Code 将项目直接发布到 Azure。

登录 Azure

在发布应用之前,必须先登录到 Azure。

  1. 打开 Visual Studio Code,然后单击 View -> Command Palette...

  2. 输入 Sign In to Azure Cloud,以搜索 Azure 中国环境。

  3. 在搜索结果中单击 Azure China

  4. 窗口的右下角将出现一个弹出窗口。

    弹出窗口

  5. 打开页面 https://microsoft.com/deviceloginchina ,然后输入该代码进行身份验证。

将项目部署到 Azure

在本部分,你将在 Azure 订阅中创建一个函数应用和相关资源,然后部署代码。

重要

部署到现有函数应用将覆盖该应用在 Azure 中的内容。

  1. 在活动栏中选择“Azure”图标,然后在“Azure:函数”区域中,选择“部署到函数应用...”按钮。

    将项目发布到 Azure

  2. 根据提示提供以下信息:

    Prompt 选择
    选择 Azure 中的函数应用 选择 + Create new Function App。 (请不要选择本文中未介绍的 Advanced 选项。)
    输入函数应用的全局唯一名称 键入在 URL 路径中有效的名称。 将对你键入的名称进行验证,以确保其在 Azure Functions 中是唯一的。
    选择运行时 选择你一直在本地运行的 Node.js 版本。 可以使用 node --version 命令来检查你的版本。
    选择新资源的位置 为了获得更好的性能,请选择你附近的区域

    在 Azure 中创建单个资源时,扩展会在通知区域显示这些资源的状态。

    Azure 资源创建通知

    完成后,将使用基于函数应用名称的名称在订阅中创建以下 Azure 资源:

    • 一个资源组:相关资源的逻辑容器。
    • 一个标准 Azure 存储帐户:用于维护项目的状态和其他信息。
    • 一个消耗计划:用于定义无服务器函数应用的基础主机。
    • 一个函数应用:提供用于执行函数代码的环境。 可以通过函数应用将函数分组为逻辑单元,以便在同一托管计划中更轻松地管理、部署和共享资源。
    • 一个连接到函数应用的 Application Insights 实例:用于跟踪无服务器函数的使用情况。
  3. 创建函数应用并应用了部署包之后,会显示一个通知。

    提示

    默认情况下,会根据你提供的函数应用名称创建函数应用所需的 Azure 资源。 默认情况下,还会在函数应用所在的新资源组中创建这些资源。 如果要自定义这些资源的名称或重复使用现有资源,则需要使用高级创建选项来发布项目

  4. 在此通知中选择“查看输出”以查看创建和部署结果,其中包括你创建的 Azure 资源。 如果错过了通知,请选择右下角的响铃图标以再次查看。

    创建完成通知

在 Azure 中运行函数

  1. 返回侧栏中的“Azure: Functions”区域,然后展开你的订阅、新的函数应用和“Functions” 。 右键单击 (Windows) 或按 Ctrl - 单击 (macOS) HttpExample 函数,然后选择“立即执行函数...”。

    立即在 Azure 的 Visual Studio Code 中执行函数

  2. 在“输入请求正文”中,你将看到请求消息正文值 { "name": "Azure" }。 按 Enter 将此请求消息发送给函数。

  3. 当函数在 Azure 中执行并返回响应时,Visual Studio Code 中将引发通知。

更改代码并重新部署到 Azure

  1. 在“VSCode 资源管理器”视图中,选择 ./HttpExample/index.js 文件。

  2. 将该文件替换为以下代码,以构造 JSON 对象并将其返回。

    module.exports = async function (context, req) {
    
        try {
            context.log('JavaScript HTTP trigger function processed a request.');
    
            // Read incoming data
            const name = (req.query.name || (req.body && req.body.name));
            const sport = (req.query.sport || (req.body && req.body.sport));
    
            // fail if incoming data is required
            if (!name || !sport) {
    
                context.res = {
                    status: 400
                };
                return;
            }
    
            // Add or change code here
            const message = `${name} likes ${sport}`;
    
            // Construct response
            const responseJSON = {
                "name": name,
                "sport": sport,
                "message": message,
                "success": true
            }
    
            context.res = {
                // status: 200, /* Defaults to 200 */
                body: responseJSON,
                contentType: 'application/json'
            };
        } catch(err) {
            context.res = {
                status: 500
            };
        }
    }
    
  3. 在本地重新运行函数应用。

  4. 在“输入请求正文”提示符下将请求消息正文更改为 { "name": "Tom","sport":"basketball" }。 按 Enter 将此请求消息发送给函数。

  5. 查看通知中的响应:

    {
      "name": "Tom",
      "sport": "basketball",
      "message": "Tom likes basketball",
      "success": true
    }
    
  6. 将函数重新部署到 Azure。

疑难解答

使用下表解决在使用此快速入门时遇到的最常见问题。

问题 解决方案
无法创建本地函数项目? 确保已安装 Azure Functions 扩展
无法在本地运行函数? 确保已安装 Azure Functions Core Tools
在 Windows 上运行时,请确保用于 Visual Studio Code 的默认终端 shell 未设置为“WSL Bash”。
无法将函数部署到 Azure? 请查看输出中的错误信息。 此外,还可点击右下角的响铃图标查看输出。 你是否已发布到现有的函数应用? 该操作会在 Azure 中覆盖该应用的内容。
无法运行基于云的函数应用? 请记住使用查询字符串来提交参数。

清理资源

若要继续执行下一步骤将 Azure 存储队列绑定添加到函数,需要保留到目前为止构建的所有资源。

否则,可以使用以下步骤删除函数应用及其相关资源,以免产生任何额外的费用。

  1. 在 Visual Studio Code 中,选择 Azure 图标以打开 Azure 资源管理器。
  2. 在“资源组”部分中,找到资源组。
  3. 右键单击资源组,然后选择“删除”。

若要详细了解 Functions 的费用,请参阅估算消耗计划成本

后续步骤

你已使用 Visual Studio Code 通过简单的 HTTP 触发函数创建了函数应用。 在下一篇文章中,你将通过连接到 Azure Cosmos DB 或 Azure 存储来扩展该函数。 若要详细了解如何连接到其他 Azure 服务,请参阅将捆绑项添加到 Azure Functions 中的现有函数。 要详细了解安全性,请参阅保护 Azure Functions