Skip to main content
Time Range Blueprint 向 Dodo Payments 发送使用事件,记录某项资源为客户运行的时长,单位可以是毫秒、秒或分钟。针对该时长使用 Sum meter,可累加每位客户的运行时间,从而按计算时间收费。该 blueprint 已包含在 @dodopayments/ingestion-blueprints npm 包中,使用方式为 trackTimeRange()。

使用场景

Time Range Blueprint 适用于以下场景:

Serverless Functions

根据函数执行时间和内存使用量收费。

Container Runtime

跟踪容器运行时间,以便按使用量收费。

Compute Instances

监控 VM 运行时间,并按分钟或小时收费。

Background Jobs

跟踪数据导出、报告和批处理任务的处理时间。
使用它可以针对计算时间、函数执行时长、容器运行时间或任何其他基于时间的使用量收费。

快速开始

要跟踪运行时间,请安装该包、创建 meter,并在每次资源运行结束时发送时长。
1

Install the SDK

安装 Dodo Payments Ingestion Blueprints 包:
2

Get Your API Keys

在 Dodo Payments dashboard 中,前往 Developer → API Keys 创建 Dodo Payments API key,并将其存储在 DODO_PAYMENTS_API_KEY 环境变量中。构建期间请使用 test mode key。test mode key 只能与 test_mode 一起使用。
3

Create a Meter

在 Dodo Payments dashboard 中,前往 Products → Meters,然后点击 Create Meter。设置以下字段:
  • Meter Name:描述性名称,例如 Compute Time。
  • Event Name:time_range_usage,或自定义名称。它必须与代码中的 eventName 完全匹配(区分大小写)。下一步中的示例为每种资源类型使用单独的 event name,例如 function_execution,因此每种类型都需要单独的 meter。
  • Aggregation Type:选择 Sum,以累加总时长。
  • Over Property:发送的时长 key:durationSeconds、durationMinutes 或 durationMs。
  • Measurement Unit:发票上显示的单位,例如 seconds。
4

Track Time Usage

测量任务运行了多长时间,然后使用 meter 所采用的单位,将时长传递给 trackTimeRange():

配置

Ingestion 配置

将以下选项传递给 new Ingestion():
string
必填
从 dashboard 获取的 Dodo Payments API key。
string
环境模式:test_mode 或 live_mode。默认为 test_mode。Dodo Payments SDK 默认使用 live_mode,因此请在生产环境中显式设置 live_mode。
string
必填
与 meter 的 Event Name 匹配的事件名称(区分大小写)。

Track Time Range 选项

将以下选项传递给 trackTimeRange()。传递的每个时长都会以同名 metadata key 的形式发送。
string
必填
用于为运行时间计费的 Dodo Payments customer ID,例如 cus_123。
number
以毫秒为单位的时长。用于亚秒级精度。
number
以秒为单位的时长。最常用于函数执行和短时任务。
number
以分钟为单位的时长。适用于 VM 等运行时间较长的资源。
object
关于资源的可选 metadata,例如 CPU、内存或区域。每个值都必须是 string、number 或 boolean。

最佳实践

选择合适的单位:短时操作使用毫秒,函数使用秒,运行时间较长的资源使用分钟。
meter 只会累加其 Over Property 指定的 key,因此每次都要以相同单位发送时长。
准确计时:使用 Date.now() 或 performance.now() 进行准确的时间跟踪,尤其适用于无服务器函数。
最后修改于 2026年9月26日