@beesolve/analytics-processor

中文文档
0.10.0发布于 2026/10/20MITTypeScriptES Module构建来源已验证近 30 天下载 2687

CloudFront分析处理器 — Athena- to- DynamoDB 小时总和、分解和滚动

中文使用文档
文档目录6 节
  1. 建筑
  2. 安装
  3. 出口
  4. CDK 用户
  5. 后补
  6. 压缩

@ beesolve/分析-处理器

CloudFront分析处理器. 通过雅典娜阅读 CloudFront 标准日志 保持单表DynamoDB设计,每平方位计时总和 以及使用原子计数器更新的每日/月滚动 偶发性标记.

[尖叫声] 前1.0——不稳定的API. 这个软件包是 0.x 活动 发展。 打破的改变可以降落在任何 0.x 释放无主 版本凸起。 选中一个精确的版本并在升级前审查更改日志 . 一旦API稳定,包裹到达 1.0.0,它跟随语义 版本和此通知被删除 .

建筑

┌──────────────┐   hourly    ┌────────┐   ADD + marker   ┌──────────┐
│ CloudFront   │ ──────────► │ Athena │ ───────────────► │ DynamoDB │
│ v2 Parquet   │   query     │        │   (transaction)  │  totals  │
│ (S3 + Glue)  │             └────────┘                  │  breakdowns│
└──────────────┘                                         └──────────┘
                                                               ▲
                      daily / monthly rollups (read-back) ─────┘

一个小时的Lambda在关闭的Athena 上运行着一个分块的查询 小时v2Parquet数据并写总计 + 每分数细分 原子 ADD 更新,每小时守护一次 applied#... 已写入标记 有条件地在同一地点 TransactWriteCommand每日和每月滚动 Lambdas sum fineer-grain DynamoDB项目(从未重新征服雅典娜). 一次性 独立回填脚本将历史数据行走同一写道 (单位:千美元) compact 命令将遗留的 v1 日志重写到 v2 Parquet 形状, 因此 可以通过同一路径读取.

安装

npm install @beesolve/analytics-processor

出口

  • . - 计划/类型(totalsSchema编号 :TotalsItem, (中文(简体) ), breakdownSchema编号 :BreakdownItem, (中文(简体) ), appliedMarkerSchema编号 :AppliedMarker, (中文(简体) ), configSchema编号 :AnalyticsConfig, (中文(简体) ), grains编号 :Grain, (中文(简体) ), dimensions编号 :Dimension, (中文(简体) ), 时间/窗口助手( e)hourKey, (中文(简体) ), dayKey, (中文(简体) ), monthKey, (中文(简体) ), maxWindowFor, (中文(简体) ), windowKeys, (中文(简体) ), shiftAnchor, (中文(简体) ), hoursBetween, (中文(简体) ), parsePeriodKey, (中文(简体) ), grainForPeriodKey, (中文(简体) ), 示范班级(Totals, (中文(简体) ), Breakdowns, (中文(简体) ), AppliedMarkers, (中文(简体) ), Config, (中文(简体) ), IpInfoCache + 键 lookupIpInfo + 键 IpInfo编号 :IpInfoCacheItem, (中文(简体) ), 纯助行者buildHourlyQuery, (中文(简体) ), classifyDevice, (中文(简体) ), sumTotals, (中文(简体) ), sumBreakdown, (中文(简体) ), topNWithOther),活体综合解析器 (单位:千美元)resolveTotalsLive编号 :resolveBreakdownLive),以及 processHour (+ 数) applyDailyRollup编号 :applyMonthlyRollup) (中文(简体) ).
  • ./cdk - 那个 AnalyticsProcessor CDK 构造 .

Lambda处理器不属于可导入的API. 业务 命令船舶作为可执行的垃圾箱—— analytics-backfill, (中文(简体) ), analytics-watch-backfill, (中文(简体) ), 财务报告和审定财务报表 analytics-compact - 可通过 npx (见 如何引导) (中文(简体) ).

CDK 用户

import { AnalyticsProcessor } from "@beesolve/analytics-processor/cdk";

const processor = new AnalyticsProcessor(this, "Analytics", {
  athenaDatabase: logging.glueDatabaseName,
  athenaV2Table: logging.glueTableName,
  athenaWorkgroup: logging.workgroupName,
  logBucketArn: logging.logBucket.bucketArn,
  athenaResultsBucketArn: logging.athenaResultsBucket.bucketArn,
  ipInfoApiKey: process.env.IPINFO_API_KEY,
});

// Grant read-only access to a dashboard Lambda. Sets ANALYTICS_TABLE_NAME and
// ANALYTICS_REVERSE_INDEX env vars on the handler.
processor.grantRead(dashboardLambda);

构筑条款:

  • DynamoDB表(按需,复合键) pk编号 :sk,反转GSI reverse, TTL) (中文(简体) )
  • 三兰布达斯(第24节): Hourly, (中文(简体) ), DailyRollup, (中文(简体) ), MonthlyRollup
  • 事件桥表:小时 rate(1 hour)日克龙00:15月克龙(01:30 (第1个)
  • 每小时Lambda的Athena/Glue/S3准入率最低

后补

成本警告 : 如果您的来源是遗留的 v1 日志( 许多小 gzip 文件), 运行 compact 第一和点 ATHENA_TABLE 在紧凑的桌子上。 直接回填一个原始 v1 表格使每个小时 s3 对象数以万计的查询风扇——至少雅典娜发行 每一个文件,它的成本 几百元的S3 得到请求 页:1 一个完整的回填。 收缩首先会降低到一分钱.

一次性回填脚本将历史日志数据通过相同的写法 路由作为小时Lambda。 它通过独一无二的力量是可以恢复的,而且是一成不变的 标记——已经应用的时数立即跳过. 它读出v2 Parquet表; 来回填充遗存 v1 日志, 第一次运行 compact 将其重写为 v2 形状,然后点 ATHENA_TABLE 在紧凑的 页:1.

TABLE_NAME=... \
ATHENA_DATABASE=... ATHENA_TABLE=... ATHENA_WORKGROUP=... \
bun run backfill -- --from 2026-01-01T00:00:00Z --to 2026-01-31T23:00:00Z --concurrency 2 --rollups
  • --from 编号 : --to ——包容性ISO小时范围(需要).
  • --concurrency ——界限平行主义(默认2).
  • --rollups ——每小时填满后,每日和每月在范围上进行滚动.

证书通过默认 AWS SDK 链( 荣誉) 解决 AWS_PROFILE) (中文(简体) ).

压缩

这个 compact 命令转换遗留 v1 LazySimpleSerDe 将表格输入一个 v2 形状 Parquet 表格( 每小时一个文件分区, v1 列重命名为 v2 schema),所以查询停止在数以万计的微小S3上扇出 对象。 见 如何引导。 。 。 .

bun run compact -- \
  --database cf_logs_db --source-table cf_logs_v1_backfill \
  --target-table cf_logs_v1_compact \
  --external-location s3://log-bucket/compact/v1/ \
  --workgroup primary --output-location s3://athena-results/ctas/ \
  --from 2025-10-16 --to 2026-10-13

版本与发布记录

@beesolve/analytics-processor 共发布 20 个版本,首次发布于 2026/10/12;过去 12 个月发布了 20 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.10.0latest2026/10/2019 天前
0.9.02026/10/1820 天前
0.8.02026/10/1820 天前
0.7.12026/10/1821 天前
0.7.02026/10/1721 天前
0.6.22026/10/1524 天前

关于 @beesolve/analytics-processor 的常见问题

@beesolve/analytics-processor 是什么?

CloudFront分析处理器 — Athena- to- DynamoDB 小时总和、分解和滚动

如何安装 @beesolve/analytics-processor?

在项目目录运行 npm install @beesolve/analytics-processor,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:constructs(^10.8.1)、aws-cdk-lib(^2.273.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。它还提供命令行工具 analytics-compact、analytics-backfill、analytics-watch-backfill,可以用 npx analytics-compact 直接运行。

@beesolve/analytics-processor 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@beesolve/analytics-processor 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@beesolve/analytics-processor 可以商用吗?

@beesolve/analytics-processor 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@beesolve/analytics-processor 的下载量有多少?

根据 npm 官方下载统计,@beesolve/analytics-processor 在 2026/10/08 – 2026/11/06 这 30 天内被下载 2,687 次,日均约 90 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@beesolve/analytics-processor 还在维护吗?

最新版本 0.10.0 发布于 2026/10/20(19 天前);至今共发布 20 个版本,其中过去 12 个月发布了 20 个;首次发布于 2026/10/12。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。