Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
尽可能在本地开发环境中创建和验证你的 "Azure Functions" 代码项目。 通过使用 Azure Functions Core Tools,可以获取本地运行时版本的 Azure Functions,该版本与用于集成开发、调试和部署的常用开发工具集成。 本地函数甚至可以连接到实时Azure服务。
本文提供有关本地开发的一些通用指南,例如使用 local.settings.json 文件。 它还链接到特定于开发环境的指南。
小窍门
有关如何在本地开发函数的详细信息,请参阅链接的特定于 IDE 的指南文章。
本地开发环境
在本地计算机上开发函数的方式取决于 语言 和工具首选项。 选择 文章顶部的首选语言。
小窍门
所有本地开发都依赖于 Azure Functions Core Tools 来提供 Functions 运行时,以便在本地环境中进行调试。
使用这些开发环境以首选语言在本地编写函数代码:
| 环境 | 说明 |
|---|---|
| Visual Studio | Azure Functions工具包含在 Azure 开发Visual Studio工作负荷中。 可以将 C# 函数代码编译并部署为Azure作为.NET类库。 包含用于本地测试的核心工具。 若要了解详细信息,请参阅 |
| Visual Studio Code | Visual Studio Code 的 Azure Functions 扩展为 Visual Studio Code 添加了 Functions 支持。 需要 Core Tools。 支持在 Linux、macOS 和 Windows 上进行开发。 若要了解详细信息,请参阅 使用 Visual Studio Code 创建第一个函数。 |
| 命令提示符或终端 | Azure Functions Core Tools提供核心运行时和模板来创建可启用本地开发的函数。 支持在 Linux、macOS 和 Windows 上进行开发。 若要了解详细信息,请参阅 使用命令行在 Azure 中创建 C# 函数。 |
| 环境 | 说明 |
|---|---|
| Maven | Maven 原型使用 Core Tools 来开发 Java 函数。 支持在 Linux、macOS 和 Windows 上进行开发。 若要了解详细信息,请参阅 使用 Java 和 Maven 创建第一个函数。 |
| Visual Studio Code | Visual Studio Code 的 Azure Functions 扩展为 Visual Studio Code 添加了 Functions 支持。 需要 Core Tools。 支持在 Linux、macOS 和 Windows 上进行开发。 若要了解详细信息,请参阅 使用 Visual Studio Code 创建第一个函数。 |
| IntelliJ IDEA | 通过 Maven 原型和核心工具,可以使用 IntelliJ 开发函数。 有关详细信息,请参阅 使用 IntelliJ Azure中创建第一个 Java 函数。 |
| 日蚀 | Maven 原型和 Core Tools 允许使用 Eclipse 开发函数。 若要了解详细信息,请参阅 使用 Ecplise Azure创建第一个 Java 函数。 |
| 环境 | 说明 |
|---|---|
| Visual Studio Code | Visual Studio Code 的 Azure Functions 扩展为 Visual Studio Code 添加了 Functions 支持。 需要 Core Tools。 支持在 Linux、macOS 和 Windows 上进行开发。 若要了解详细信息,请参阅 使用 Visual Studio Code 创建第一个函数。 |
| 命令提示符或终端 | Azure Functions Core Tools提供核心运行时和模板来创建可启用本地开发的函数。 支持在 Linux、macOS 和 Windows 上进行开发。 若要了解详细信息,请参阅 从命令行Azure创建 Node.js 函数。 |
| 环境 | 说明 |
|---|---|
| Visual Studio Code | Visual Studio Code 的 Azure Functions 扩展为 Visual Studio Code 添加了 Functions 支持。 需要 Core Tools。 支持在 Linux、macOS 和 Windows 上进行开发。 若要了解详细信息,请参阅 使用 Visual Studio Code 创建第一个函数。 |
| 命令提示符或终端 | Azure Functions Core Tools提供核心运行时和模板来创建可启用本地开发的函数。 支持在 Linux、macOS 和 Windows 上进行开发。 若要了解详细信息,请参阅从命令行Azure创建 PowerShell 函数。 |
| 环境 | 说明 |
|---|---|
| Visual Studio Code | Visual Studio Code 的 Azure Functions 扩展为 Visual Studio Code 添加了 Functions 支持。 需要 Core Tools。 支持在 Linux、macOS 和 Windows 上进行开发。 若要了解详细信息,请参阅 使用 Visual Studio Code 创建第一个函数。 |
| 命令提示符或终端 | Azure Functions Core Tools提供核心运行时和模板来创建可启用本地开发的函数。 支持在 Linux、macOS 和 Windows 上进行开发。 若要了解详细信息,请参阅从命令行Azure创建 Python 函数。 |
其中每个本地开发环境允许创建函数应用项目,并使用预定义的函数模板创建新函数。 每个环境都会使用 Core Tools,以便可以在自己的计算机上针对真实的 Functions 运行时进行测试和调试,就像您测试任何其他应用程序一样。 您还可以从任意环境将函数应用项目发布到 Azure。
本地项目文件
Functions 项目目录中包含项目根文件夹中的以下文件,无论使用何种语言:
| 文件名 | 说明 |
|---|---|
| host.json | 有关详细信息,请参阅 host.json 参考。 |
| local.settings.json | 核心工具在本地运行时使用的设置,包括应用设置。 若要了解详细信息,请参阅本地设置文件。 |
| .gitignore | 防止意外将 local.settings.json 文件发布到 Git 存储库。 若要了解详细信息,请参阅本地设置文件。 |
| .vscode\extensions.json | 在 Visual Studio Code 中打开 project 文件夹时使用的设置文件。 |
project中的其他文件取决于语言和特定函数。 有关详细信息,请参阅相应语言的开发人员指南。
本地设置文件
该文件 local.settings.json 存储本地开发工具使用的应用设置和设置。 仅在本地运行项目时,才使用 local.settings.json 文件中的设置。 将您的项目发布到 Azure 时,请将任何必需的设置添加到函数应用的设置中。
重要
local.settings.json由于该文件可能包含机密(如连接字符串),因此请谨慎将其提交到源代码管理。 支持 Functions 的工具提供了一种方法,可以将 local.settings.json 文件中的设置与您部署的工程中的函数应用的 应用程序设置进行同步。
该文件 local.settings.json 具有以下结构:
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "<language worker>",
"AzureWebJobsStorage": "<connection-string>",
"MyBindingConnection": "<binding-connection-string>",
"AzureWebJobs.HttpExample.Disabled": "true"
},
"Host": {
"LocalHttpPort": 7071,
"CORS": "*",
"CORSCredentials": false
},
"ConnectionStrings": {
"SQLConnectionString": "<sqlclient-connection-string>"
}
}
在本地运行项目时,支持这些设置:
| 设置 | 说明 |
|---|---|
IsEncrypted |
如果此设置设置为 true,则所有值都使用本地计算机密钥进行加密。 与 func settings 命令配合使用。 默认值为 false。 当本地计算机上的 local.settings.json 文件中包含机密(如服务连接字符串)时,可能需要对其进行加密。 主机在运行时会自动对设置解密。 在尝试读取本地加密设置之前,请使用 func settings decrypt 命令。 |
Values |
在本地运行project时使用的应用程序设置的集合。 这些键值(string-string)对对应于您在 Azure 中的函数应用的应用程序设置,例如 AzureWebJobsStorage。 许多触发器和绑定都有一个用于引用连接字符串应用设置的属性,例如 Blob 存储触发器的 Connection。 对于此类属性,你需要一个在 Values 数组中定义的应用程序设置。 在下表中查看常用设置的列表。 值必须是字符串,而不能是 JSON 对象或数组。 设置名称不能包含双下划线 ( __),也不应包含冒号 (:)。 双下划线字符由运行时保留,并保留冒号以支持依赖项注入。 |
Host |
在本地运行项目时,本部分中的设置会自定义 Functions 主机进程。 这些设置与 host.json 设置分开,这些设置在Azure中运行项目时也适用。 |
LocalHttpPort |
设置运行本地 Functions 主机时使用的默认端口(func host start 和 func run)。
--port 命令行选项优先于此设置。 例如,在 Visual Studio IDE 中运行时,可以通过导航到“项目属性 -> 调试”窗口,并在命令中明确指定可在“应用程序参数”字段中提供的端口号来更改端口号。 |
CORS |
定义跨域资源共享 (CORS)可以使用的来源。 以逗号分隔的列表提供来源,其中不含空格。 支持通配符值 (*),它允许来自任何来源的请求。 |
CORSCredentials |
设置为 true 时,允许 withCredentials 请求。 |
ConnectionStrings |
一个集合。 请勿将该集合用于您的函数绑定使用的连接字符串。 此集合仅由通常从配置文件的 ConnectionStrings 节获取连接字符串的框架使用,例如 Entity Framework。 此对象中的连接字符串添加到提供者类型为 System.Data.SqlClient 的环境中。 此集合中的项不会与其他应用设置一起发布到 Azure。 必须将这些值显式添加到函数应用设置的 Connection strings 集合中。 如果要在函数代码中创建 SqlConnection,请将连接字符串的值与其他连接一起存储在门户中的 应用程序设置 中。 |
以下应用设置在本地运行时可以包括在 Values 数组中:
| 设置 | 值 | 说明 |
|---|---|---|
AzureWebJobsStorage |
存储帐户连接字符串,或UseDevelopmentStorage=true |
包含 Azure 存储帐户的连接字符串。 如果使用 HTTP 之外的触发器,则是必需的。 有关详细信息,请查看 AzureWebJobsStorage 文档。在本地安装了 Azurite Emulator,并将 AzureWebJobsStorage 设置为 UseDevelopmentStorage=true 时,Core Tools 将使用模拟器。 有关详细信息,请参阅 Local storage emulator。 |
AzureWebJobs.<FUNCTION_NAME>.Disabled |
true|false |
要在本地运行时禁用函数,请向集合添加 "AzureWebJobs.<FUNCTION_NAME>.Disabled": "true",其中 <FUNCTION_NAME> 是函数的名称。 若要了解详细信息,请参阅 如何禁用 Azure Functions 中的函数。 |
FUNCTIONS_WORKER_RUNTIME |
dotnetdotnet-isolatednodejavapowershellpython |
指示 Functions 运行时的目标语言。 对于 Functions 运行时版本 2.x 及更高版本来说是必需的。 Core Tools 为您的项目生成此设置。 要了解详细信息,请查看 FUNCTIONS_WORKER_RUNTIME 文档。 |
FUNCTIONS_WORKER_RUNTIME_VERSION |
~7 |
指示在本地运行时使用 PowerShell 7。 如果未设置,则使用 PowerShell Core 6。 仅当在本地运行时才使用此设置。 PowerShell 运行时版本由 powerShellVersion 站点配置确定,该配置在 Azure 平台运行时可在门户中设置 设置。 |
若要了解如何在 values 函数代码中将数组中的值用作环境变量,请参阅开发人员指南中的 环境变量 。
若要了解如何在 values 函数代码中将数组中的值用作环境变量,请参阅开发人员指南中的 环境变量 。
若要了解如何在 values 函数代码中将数组中的值用作环境变量,请参阅开发人员指南中的 环境变量 。
若要了解如何在 values 函数代码中将数组中的值用作环境变量,请参阅开发人员指南中的 环境变量 。
同步设置
在本地开发函数时,请在部署代码的函数应用的应用设置中包含应用所需的任何本地设置。 可能还需要将当前设置从函数应用下载到本地项目。 虽然你可以在Azure portal中手动配置应用设置,但以下工具还允许你在项目中将应用设置与本地设置同步:
触发器和绑定
在本地开发函数时,请考虑触发和绑定行为。 对于 HTTP 触发器,可以在本地计算机上使用 http://localhost/ 调用 HTTP 终结点。 对于非 HTTP 触发的函数,请使用多个选项在本地运行:
- 可以使用以实时Azure服务为目标的连接字符串在本地开发期间测试绑定。 在 local.settings.json 文件中的
Values数组中添加适当的 connection string 设置。 执行此操作时,测试期间的本地执行可能会影响你的生产服务。 相反,请考虑设置单独的实时服务,在开发和测试期间使用,然后在生产期间切换到不同的服务。 - 对于基于存储的触发器,请使用本地存储模拟器。
- 使用特殊管理员终结点手动运行非 HTTP 触发器函数。 有关详细信息,请参阅 手动运行非 HTTP 触发的函数。
在本地测试期间,必须在本地运行 Core Tools (func.exe) 提供的主机。 有关详细信息,请参阅 Azure Functions Core Tools。
HTTP 测试工具
在开发过程中,可以在 Web 浏览器支持 HTTP GET 方法时从 Web 浏览器调用任何函数终结点。 但是,对于支持有效负载的其他 HTTP 方法(例如 POST 或 PUT),需要使用 HTTP 测试工具来创建这些 HTTP 请求并将其发送到函数终结点。
注意
对于请求必须包括敏感数据的方案,请确保使用一个工具来保护数据,并减少向公众暴露任何敏感数据的风险。 应保护的敏感数据可能包括:凭据、机密、access令牌、API 密钥、地理位置数据和个人数据。
通过选择脱机或本地工作的 HTTP 测试工具来保护数据的安全,不会将数据同步到云,也不需要登录到联机帐户。 某些工具还可以通过实施特定的安全功能来保护数据免受意外泄露。
避免使用集中存储 HTTP 请求历史记录(包括敏感信息)的工具,这些工具不遵循最佳做法,也不尊重数据隐私安全。
请考虑使用以下工具之一,安全地将 HTTP 请求发送到函数终结点:
- Visual Studio Code,带有来自 Visual Studio Marketplace 的.http 文件扩展名,例如 REST Client
- Visual Studio支持从版本 17.8 开始的 .http 文件
- PowerShell Invoke-RestMethod
- Microsoft Edge - 网络控制台工具
- Bruno
- curl
本地存储模拟器
在本地开发期间,测试使用 Azure 存储绑定的函数时(包括队列存储、Blob 存储和表存储),可以使用本地Azurite 模拟器,而无需连接到远程存储服务。 Azurite 与 Visual Studio Code 和 Visual Studio 集成,还可以使用 npm 从命令提示符运行它。 有关详细信息,请参阅 使用 Azurite 模拟器进行本地Azure Storage开发。
local.settings.json 文件的 Values 集合中的以下设置告知本地 Functions 主机使用 Azurite 建立默认 AzureWebJobsStorage 连接:
"AzureWebJobsStorage": "UseDevelopmentStorage=true"
使用此设置值时,任何在本地运行并使用 AzureWebJobsStorage 作为连接的 Azure 存储触发器或绑定都会连接到 Azurite。 在本地执行期间使用storage仿真时,请记住以下注意事项:
- 必须安装并运行 Azurite。
- 在发布到Azure之前,应使用与Azure服务的实际storage连接进行测试。
- 发布您的项目时,请勿将
AzureWebJobsStorage设置为UseDevelopmentStorage=true进行发布。 在 Azure 中,AzureWebJobsStorage设置必须始终是您的函数应用所使用的存储帐户的连接字符串。 有关详细信息,请参阅AzureWebJobsStorage。
相关文章
- 若要了解有关使用 Visual Studio 开发本地函数的详细信息,请参阅 使用 Visual Studio 开发 Azure Functions。
- 若要详细了解如何在 Mac、Linux 或 Windows 计算机上使用 Visual Studio Code 本地开发函数,请参阅 Develop Azure Functions,方法是使用 Visual Studio Code。
- 若要详细了解如何从命令提示符或终端开发函数,请参阅 Work with Azure Functions Core Tools。