Azure Functions 为在 Azure 容器应用中开发、部署和管理容器化函数应用提供集成支持。 如果需要与其他微服务、API、网站、工作流或任何容器托管程序在同一环境中运行,请使用 Functions 应用的 Azure 容器应用。
容器应用托管允许在完全受支持的、托管的基于容器的环境中运行函数,并内置支持开源监视、mTLS、Dapr 和 Kubernetes 事件驱动的自动缩放(KEDA)。
通过在调用 Microsoft.App
时设置 kind=functionapp
,您可以使用 az containerapp create
资源提供程序,直接将 Azure Functions 映像部署到 Azure 容器应用中,这是 Azure 容器应用上的一个集成功能。 以这种方式创建的应用可以访问所有 Azure 容器应用功能。
本文介绍如何创建和部署在 Azure 容器应用中运行的 Azure Functions 应用。 你将学会如何:
- 使用预配置的自动缩放规则设置容器化 Functions 应用
- 使用 Azure 门户或 Azure CLI 部署应用程序
- 使用 HTTP 触发器验证已部署的函数
通过在容器应用中运行 Functions,可以从自动缩放、轻松配置和完全托管的容器环境中受益,而无需自行管理底层基础结构。
情境
容器应用上的 Azure Functions 提供多才多艺的服务组合,以满足应用程序的需求。 以下场景代表了将 Azure 容器应用与 Azure Functions 结合,以获得所需的控制和扩展功能的情况类型。
业务线 API:将自定义库、包和 API 打包以与 Functions 一起用于业务线应用程序。
迁移支持:将本地旧版和/或整体应用程序迁移到容器上的云本机微服务。
事件驱动体系结构:支持针对已在 Azure 容器应用上运行的工作负荷的事件驱动应用程序。
无服务器工作负荷:无服务器工作负荷处理视频、图像、脚本或任何其他需要 GPU 计算资源的密集型任务。
常见的 Azure Functions 方案:所有常见的 Azure Functions 方案,例如处理文件上传、运行计划任务、响应数据库更改、机器学习/AI 和其他 Azure Functions 方案中详述的其他方案。
事件驱动的扩展
在您的容器化 Functions 应用中,所有 Functions 触发器均可用。 但是,在容器应用环境中运行时,只有以下触发器可以根据收到的事件动态缩放(从零实例):
- Azure 事件网格
- Azure 事件中心
- Azure Blob 存储(基于事件网格)
- Azure 队列存储
- Azure 服务总线
- Durable Functions (MSSQL 存储提供程序)
- HTTP
- 卡 夫 卡
- 定时器
- Azure Cosmos DB(Azure 宇宙数据库)
容器应用上的 Azure Functions 旨在根据事件目标配置缩放参数和规则。 你无需考虑如何配置 KEDA 缩放对象。 创建或修改函数应用时,你仍可以设置最小和最大副本计数。
目前,Azure Cosmos DB 触发器与 Durable Functions 的自动缩放仅支持使用连接字符串。
可以使用 Azure Functions 支持的任何语言堆栈 编写函数代码。 可以将相同的 Functions 触发器和绑定与事件驱动的缩放配合使用。
托管标识授权
若要遵循安全最佳做法,请使用 Microsoft Entra 身份验证和托管标识授权连接到远程服务。
托管标识可用于以下连接:
- 默认存储帐户 (AzureWebJobsStorage)
- Azure 容器注册表:在容器应用中运行时,可以对支持托管标识的所有绑定扩展结合使用 Microsoft Entra ID 和托管标识。 目前,在使用托管标识身份验证时,只有这些绑定扩展支持事件驱动的缩放:
- Azure 事件中心
- Azure 队列存储
- Azure 服务总线
对于其他绑定,在使用托管标识身份验证时,请使用固定副本。 有关详细信息,请参阅 Functions 开发人员指南。
应用程序日志记录
可以使用 Azure Monitor Application Insights 监视容器应用中托管的容器化函数应用,方法与监视 Azure Functions 托管的应用相同。 有关详细信息,请参阅监视 Azure Functions。
对于支持事件驱动的缩放的绑定,缩放事件在 Log Analytics 工作区中记录为 FunctionsScalerInfo
和 FunctionsScalerError
事件。 有关详细信息,请参阅 Azure 容器应用中的 Application Logging。