Azure Functions 开发人员指南

在 Azure Functions 中,特定函数共享一些核心技术概念和组件,不受所用语言或绑定限制。 跳转学习某个特定语言或绑定的详细信息之前,请务必通读此通用概述。

本文假定你已阅读 Azure Functions 概述

函数代码

函数是 Azure Functions 的基本概念。 函数包含两个重要部分,即可以用各种语言编写的代码,以及一些配置,function.json 文件。 对于编译语言,此配置文件是从代码中的注释自动生成的。 对于脚本语言,必须自己提供配置文件。

Function.json 文件定义函数触发器、绑定和其他配置设置。 每个函数有且只有一个触发器。 运行时使用此配置文件确定要监视的事件,以及如何将数据传入函数执行和从函数执行返回数据。 下面是一个示例 function.json 文件。

{
    "disabled":false,
    "bindings":[
        // ... bindings here
        {
            "type": "bindingType",
            "direction": "in",
            "name": "myParamName",
            // ... more depending on binding
        }
    ]
}

bindings 属性配置两个触发器和绑定。 每个绑定共享一些通用设置和一些特定于个别类型的绑定的设置。 每个绑定都需要以下设置:

属性 值/类型 注释
type 字符串 绑定类型。 例如,queueTrigger
direction 'in', 'out' 表示绑定是用于接收数据到函数中或是从函数发送数据。
name 字符串 将用于函数中绑定数据的名称。 对于 C#,它将是参数名称;对于 JavaScript,它是键/值列表中的键。

函数应用

函数应用在 Azure 中提供用于运行函数的执行上下文。 函数应用由一个或多个共同管理、部署和缩放的独立函数组成。 函数应用中的所有函数共享相同的定价计划、连续部署和运行时版本。 将函数应用视为组织和共同管理函数的一种方法。

Note

函数应用中的所有函数必须使用相同的语言编写。 在 Azure Functions 运行时的先前版本中,这不是必需的。

文件夹结构

特定函数应用中所有函数的代码均位于根项目文件夹中,其中包含主机配置文件和一个或多个子文件夹。 每个子文件夹包含单独函数的代码,表示形式如下:

FunctionApp
 | - host.json
 | - Myfirstfunction
 | | - function.json
 | | - ...  
 | - mysecondfunction
 | | - function.json
 | | - ...  
 | - SharedCode
 | - bin

在 2.x 版 Functions 运行时中,函数应用中的所有函数都必须使用相同的语言辅助角色。

host.json 文件包含一些特定于运行时的配置,位于函数应用的根文件夹中。 bin 文件夹包含函数应用所需的包和其他库文件。 查看函数应用项目的语言特定要求:

以上是 Function app 的默认(和推荐)文件夹结构。 如果要更改函数代码的文件位置,请修改 function.json 文件的 scriptFile 部分。 我们还建议使用包部署将项目部署到 Azure 中的函数应用。

Note

如果手动部署包,请确保将 host.json 文件和函数文件夹直接部署到 wwwroot 文件夹。 请勿在部署中包含 wwwroot 文件夹。 否则,最后将得到 wwwroot\wwwroot 文件夹。

使用本地工具和发布

可以使用各种工具创作和发布各种函数应用,包括 Visual StudioVisual Studio CodeIntelliJEclipseAzure Functions Core Tools。 有关详细信息,请参阅在本地对 Azure Functions 进行编码和测试

如何编辑 Azure 门户中的函数

通过 Azure 门户中内置的函数编辑器可直接内联更新代码和 function.json 文件。 建议仅用于小的更改或概念证明 - 最佳做法是使用 VS Code 等本地开发工具。

并行执行

多个触发事件发生的速度超过了单线程函数运行的处理速度时,运行时可并行多次调用函数。 无论应用是在消耗量托管计划还是常规应用服务托管计划上运行,每个 Function App 实例都可能使用多个线程并行处理并发函数调用。 每个 Function App 实例中并发函数的最大调用数根据所用触发器类型以及 Function App 中其他函数所用资源而有所不同。

Functions 运行时版本控制

可使用 FUNCTIONS_EXTENSION_VERSION 应用设置配置 Functions 运行时的版本。 例如,值“~2”表示 Function App 将使用 2.x 作为其主版本。 Function Apps 在发布后,将升级到各自新的次要版本。 有关详细信息(包括如何查看函数应用的确切版本),请参阅如何针对 Azure Functions 运行时版本

存储库

Azure Functions 代码为开放源,位于 GitHub 存储库:

绑定

下面是所有受支持的绑定表。

下表显示了 Azure Functions 运行时的两个主要版本支持的绑定。

类型 1.x 2.x1 触发器 输入 输出
Blob 存储
Cosmos DB
事件中心
HTTP 和 Webhook
Microsoft Graph
Excel 表
Microsoft Graph
OneDrive 文件
Microsoft Graph
Outlook 电子邮件
Microsoft Graph
事件
Microsoft Graph
身份验证令牌
移动应用
通知中心
队列存储
SendGrid
服务总线
表存储
计时器

1 在 2.x 中,除了 HTTP 和 Timer 以外,所有绑定都必须注册。 请参阅注册绑定扩展

对来自绑定的错误怀有疑问? 请查看 Azure Functions 绑定错误代码文档。

报告问题

项目 说明 链接
运行时 脚本主机、触发器和绑定及语言支持 提出问题
模板 创建模板的代码问题 提出问题
门户 用户界面或体验问题 提出问题

后续步骤

有关详细信息,请参阅以下资源: