使用 Core Tools 在本地创建和运行 Azure Functions

已完成

使用 Azure Functions Core Tools 可以在本地计算机上通过命令行开发和运行函数。

你希望在你自己的计算机上而不是在 Azure 门户的函数编辑器中在本地构建你的第一个函数(一个简单的利息计算器)。 你不确定是否要使用开发环境(如 Visual Studio 或 Visual Studio Code,这两种环境都可以扩展以直接支持 Azure Functions)。 最终,你决定从命令行和基本文本编辑器使用 Core Tools。

在此单元中,你将了解如何使用 Core Tools 在本地创建和运行函数。 让我们先详细了解 Core Tools,然后再在下一个单元的练习中使用它们,到时将使用 Azure Cloud Shell 为你介绍这些概念。

什么是 Azure Functions Core Tools?

Azure Functions Core Tools 是一个独立的运行时,以及一套命令行工具,可用于在本地计算机上开发、运行和部署函数代码。

Core Tools 支持多个与函数相关的功能,包括:

  • 生成在本地开发函数所需的文件和文件夹。
  • 提供本地运行时,以便在计算机上测试和调试函数。
  • 将函数发布到 Azure。

使用 Core Tools 时,可以通过命令行完成这些任务。 使用你喜欢的任何文本编辑器编写代码并修改配置。 你还需要 Azure CLI 或 Azure PowerShell 来登录到 Azure,创建 Azure 资源并部署项目文件。

Core Tools 打包为一个名为 func 的命令行实用工具。 如果通过命令行运行 func 而不使用任何其他命令,则它会显示版本信息和使用指南。 现在不需要阅读它,但它类似以下内容:

A portion of the help text output by func.

Visual Studio 和 Visual Studio Code 都使用 Core Tools 提供集成的本地调试体验。

下面是有关函数的一些基本概念。

函数应用和函数项目

在本地开发函数时,在函数项目中工作。 项目是一个文件夹,它包含用于定义函数的代码和配置文件。 此代码项目部署到 Azure 中的函数应用资源。 在函数应用实例中,所有函数共享一组通用的配置值和资源。

每个函数应用都面向特定的语言堆栈,每个堆栈都有自己的特定于语言的项目要求。 幸运的是,你永远不需要自己手动创建函数项目。 可以使用 Core Tools 用你喜欢的语言从头开始生成函数项目和函数。

Core Tools 版本

由于 Core Tools 包含 Azure Functions 运行时,因此你使用的 Core Tools 的主版本必须始终与 Azure 中 Functions 运行时的主版本匹配。 目前,版本 4.x 是 Functions 运行时的建议版本,也是支持所有语言的唯一版本。 虽然本教程讨论和使用 Core Tools 版本 4.x,但你无需在你自己的计算机上安装任何内容。 在本教程中,你只需在浏览器中的 Azure Cloud Shell 环境中使用 Core Tools。 Cloud Shell 已有合适的 Core Tools、Azure CLI 和 Node.js 版本,并已安装代码编辑器。

本地开发 vs.使用 Azure 门户进行开发

虽然 Azure 门户确实为函数代码提供内置编辑器,但你只能将其用于特定的语言堆栈。 你也不能使用门户编辑在本地开发并部署到 Azure 的函数。 当你开始使用任何本地开发工作流时,你无法使用 Azure 门户对函数代码进行更改。

Core Tools 支持对 Azure Functions 支持的所有语言堆栈进行本地开发。

在本地创建函数

让我们进一步了解如何使用 Core Tools 创建函数并在本地运行它们。 稍后在本教程中,了解如何发布到 Azure。

使用 func init 创建新的函数项目

若要创建新的函数项目,请在命令行上运行 func init

Output from func init creating a JavaScript function project.

func init 询问你要用于应用的语言运行时。 它会相应地定制项目文件夹的内容。

当你创建新的函数项目时,项目文件夹中包含的文件取决于所选的语言运行时。 无论你选择哪种运行时,始终都会存在两个最关键的项目文件:

  • host json 存储函数应用的运行时配置值,例如日志记录选项。 在本地和 Azure 中运行函数时,都会使用存储在此文件中的设置。
  • local.settings.json 存储仅适用于使用 Core Tools 在本地运行的函数应用的配置值。 此文件包含两种类型的设置:
    • 本地运行时设置:用于配置本地函数运行时本身。
    • 自定义应用程序设置:根据应用的需求添加和配置这些设置。 应用的所有函数都可以访问和使用这些设置。

func init 生成的函数项目中没有任何函数。 在下一部分中,了解如何添加一个。

使用 func new 创建新函数

项目中的每个单独函数都需要代码和配置来定义其行为。 在函数项目文件夹中运行 func new 会创建一个新函数,以及你开始开发所需的所有文件。

Output from func new creating a JavaScript function.

在询问你要使用哪种类型的函数触发器以及要为函数命名的名称后,func new 会使用函数项目的所选语言生成一个完整的、发布就绪的起始实现。 起始代码演示了如何使用你选择的触发器类型,并会帮助你快速入门。 将函数的正文替换为你自己的实现,你便准备好构建、运行、测试和发布了。

在本教程的下一部分中,你将使用 func new 创建 HTTP 触发的函数,并修改起始实现以执行单利计算。

在本地运行函数

函数不是可以自行运行的程序。 它们必须被托管。 Azure Functions 主机为函数代码之外的所有功能提供动力:它加载配置、侦听触发器和 HTTP 请求、启动函数写入语言的工作进程、编写日志输出等等。 在 Azure 中,函数应用在启动时自动运行主机。

可以使用 Core Tools 运行你自己的 Azure Functions 主机实例,并在发布函数之前在本地试用这些函数。 通过在发布函数之前运行函数,可以确保正确地加载配置和代码,并通过对其进行真实 HTTP 调用来测试函数,而无需使用 Azure 资源。

若要在本地启动函数主机,请从函数项目文件夹运行 func start。 在输出的末尾,Core Tools 会显示可用于调用你的每个函数的本地 URL。 当主机正在运行时,可以使用任何执行 HTTP 调用的工具或库(如 curl)来与函数进行交互。 Core Tools 会将主机生成的所有日志输出实时写入终端。

func start output showing a function invocation URL.