如何核算Azure函数的总成本(含关联存储账户相关操作费用)
核算Azure函数总成本的方法
一、Azure函数本身的成本核算
Azure函数的成本取决于所选托管计划,核心计费维度如下:
- 消耗计划:按执行次数(每百万次的单价)和*执行时间(GB秒)*计费,每月有免费额度(100万次执行+40000 GB秒)。
- 专用(App Service)计划:按VM实例的大小、数量和运行时长计费,和普通App Service的计费逻辑一致,适合长期运行的函数。
- 弹性Premium计划:结合消耗计划的弹性和专用计划的性能,按实例运行时长和执行时间计费,有预留实例折扣可选。
可直接在Azure门户的「成本管理 + 计费」中,筛选对应函数资源查看其独立产生的费用。
二、关联存储账户的成本核算
Azure函数必须依赖存储账户,用于存储函数代码、触发器队列/Blob、运行日志等,费用包含三类:
- 存储容量费用:按Blob、文件、队列、表等实际占用的存储量(GB/月)计费,LRS、GRS等冗余类型单价不同。
- 事务费用:每一次存储操作(比如列表容器、创建容器、读写Blob/队列消息)都按类型(读/写/列表)计费,LRS的事务单价低于其他冗余类型。
- 数据传输费用:存储账户与外部网络(或跨Azure区域)的数据传输会产生费用,同区域内的函数与存储交互通常免费。
多函数共用存储账户的分摊策略
当多个函数共用同一个存储账户时,需按各函数的实际使用量拆分存储费用:
- 事务费用分摊:
- 启用存储账户的日志记录(在存储账户的「诊断设置」中开启),将日志发送到Azure Monitor。
- 用Kusto查询筛选各函数对应的事务:比如根据日志中的
OperationName(如CreateContainer、ListContainers)和RequestId关联的函数上下文,统计每个函数触发的事务数量。 - 用统计到的事务量乘以对应操作的单价,得到该函数应承担的事务费用。
- 存储容量费用分摊:
- 查看存储账户中各容器、队列的占用容量:比如函数代码包通常存放在
$web容器,每个函数的触发器数据可能在专属容器/队列中。 - 按各函数占用的存储容量比例,分摊总的存储容量费用。对于函数自动创建的通用容器(如
azure-webjobs-hosts、azure-webjobs-secrets),可按函数数量平均分摊,或按各函数的执行次数比例分摊。
- 查看存储账户中各容器、队列的占用容量:比如函数代码包通常存放在
- 数据传输费用分摊:如果存储账户的跨区域/外网流量由特定函数触发,直接归到对应函数;若无法区分,按函数的执行量或存储使用比例分摊。
三、总成本汇总
将以下两部分费用相加,即为单个Azure函数的总成本:
- 该函数在托管计划下产生的独立费用(从成本管理中直接获取)。
- 从共用存储账户中分摊到该函数的存储容量、事务及数据传输费用。
实用工具建议
- 给每个函数和对应的存储资源添加成本分配标签(如
FunctionName:XXX),在成本管理中可快速筛选和分组费用。 - 使用Azure Monitor的「成本分析」工具,按资源类型、标签拆分存储账户的费用,简化分摊计算。
- 利用存储账户的「使用情况和指标」面板,查看实时的容量、事务统计数据,辅助费用核算。
内容的提问来源于stack exchange,提问作者PythonForAzure3942
相关产品推荐
相关产品推荐

