@aws-lambda-powertools/batch

中文文档
2.36.0发布于 2026/10/06MIT-0TypeScriptESM + CJS构建来源已验证近 30 天下载 76.8万

AWS Lambda (TypeScript) 库的Powertools的批处理包.

中文使用文档
文档目录15 节
  1. 介绍
  2. 使用量
  3. 批处理器
  4. SQS 处理器
  5. Kinesis 处理器
  6. DynamoDB 流处理器
  7. 自动同步处理
  8. 贡献
  9. 路线图
  10. 连接
  11. 如何支持 AWS Lambda (TypeScript) 的 Powertools ?
  12. 成为参考客户
  13. 分享你的工作
  14. 使用 Lambda 层
  15. 许可证

AWS Lambda (TypeScript) - 批处理工具

用于 AWS Lambda (TypeScript) 的 Powertools 是用于执行无服务器的开发者工具包 最佳做法和增加开发者的速度。 。 。 .

您可以在 TypeScript 和 JavaScript 代码库中使用库.

介绍

批量处理工具在从Amazon SQS,Amazon Kinesis Data Streams和Amazon DynamoDB Streams处理批次时处理部分故障.

使用量

要启动, 请通过运行安装库 :

npm i @aws-lambda-powertools/batch

批处理器

当使用 SQS, Kinesis Data Streams, 或 DynamoDB Streams 作为 Lambda 事件源时, 您的 Lambda 函数会用一批消息被触发.

如果您的函数无法处理批次中的任何消息,则整个批次返回您的队列或流. 同样的批次再试,直到其中任一条件发生: (a) 国家 您的 Lambda 函数返回一个成功的响应, (b) 国家 记录达到最大重试尝试,或 (c) 国家 当记录过期.

使用此工具, 批量记录会单独处理 – 只有未处理的信件返回到队列或流中进行进一步的重试 .

SQS 处理器

当使用 SQS 作为 Lambda 事件源时, 您可以指定 EventType.SQS 处理记录。 反应是: SQSBatchResponse 其中包含未处理的项目清单.

import {
  BatchProcessorSync,
  EventType,
  processPartialResponseSync,
} from '@aws-lambda-powertools/batch';
import { Logger } from '@aws-lambda-powertools/logger';
import type { SQSHandler, SQSRecord } from 'aws-lambda';

const processor = new BatchProcessorSync(EventType.SQS);
const logger = new Logger();

const recordHandler = (record: SQSRecord): void => {
  const payload = record.body;
  if (payload) {
    const item = JSON.parse(payload);
    logger.info('Processed item', { item });
  }
};

export const handler: SQSHandler = async (event, context) => 
  processPartialResponseSync(event, recordHandler, processor, {
    context,
  });

Kinesis 处理器

当使用 Kinesis 数据流作为 Lambda 事件源时, 您可以指定 EventType.KinesisDataStreams 处理记录。 反应是: KinesisStreamBatchResponse 其中包含未处理的项目清单.

import {
  BatchProcessorSync,
  EventType,
  processPartialResponseSync,
} from '@aws-lambda-powertools/batch';
import { Logger } from '@aws-lambda-powertools/logger';
import type { KinesisStreamHandler, KinesisStreamRecord } from 'aws-lambda';

const processor = new BatchProcessorSync(EventType.KinesisDataStreams);
const logger = new Logger();

const recordHandler = (record: KinesisStreamRecord): void => {
  logger.info('Processing record', { record: record.kinesis.data });
  const payload = JSON.parse(record.kinesis.data);
  logger.info('Processed item', { item: payload });
};

export const handler: KinesisStreamHandler = async (event, context) => 
  processPartialResponseSync(event, recordHandler, processor, {
    context,
  });

DynamoDB 流处理器

当使用 DynamoDB Streams 作为 Lambda 事件源时, 您可以使用 BatchProcessorSync 与 EventType.DynamoDBStreams 处理记录。 反应是: DynamoDBBatchResponse 其中包含未处理的项目清单.

import {
  BatchProcessor,
  EventType,
  processPartialResponseSync,
} from '@aws-lambda-powertools/batch';
import { Logger } from '@aws-lambda-powertools/logger';
import type { DynamoDBRecord, DynamoDBStreamHandler } from 'aws-lambda';

const processor = new BatchProcessor(EventType.DynamoDBStreams); // (1)!
const logger = new Logger();

const recordHandler = (record: DynamoDBRecord): void => {
  if (record.dynamodb && record.dynamodb.NewImage) {
    logger.info('Processing record', { record: record.dynamodb.NewImage });
    const message = record.dynamodb.NewImage.Message.S;
    if (message) {
      const payload = JSON.parse(message);
      logger.info('Processed item', { item: payload });
    }
  }
};

export const handler: DynamoDBStreamHandler = async (event, context) =>
  processPartialResponseSync(event, recordHandler, processor, {
    context,
  });

自动同步处理

如果您的用法大小写允许您同时处理多个记录而不相冲突,您可以使用 BatchProcessor 以同步处理记录。 这将产生一系列承诺,一旦处理完所有记录,这些承诺将得到解决.

import {
  BatchProcessor,
  EventType,
  processPartialResponse,
} from '@aws-lambda-powertools/batch';
import type { SQSHandler, SQSRecord } from 'aws-lambda';

const processor = new BatchProcessor(EventType.SQS);

const recordHandler = async (record: SQSRecord): Promise<number> => {
  const res = await fetch('https://httpbin.org/anything', {
    body: JSON.stringify({ message: record.body }),
  });

  return res.status;
};

export const handler: SQSHandler = async (event, context) => 
  await processPartialResponse(event, recordHandler, processor, {
    context,
  });

检查 文档 需要更多的实例.

贡献

如果你有兴趣为这个项目捐款,请参见我们 贡献准则。 。 。 .

路线图

AWS Lambda(英语:TypeScript)的"Powertools"行进图受顾客需求所驱动.
帮助我们确定未来功能或公用事业的优先次序 更新现有 RFC 和功能请求,或 创建新的,在此 GitHub 仓库中.

连接

如何支持 AWS Lambda (TypeScript) 的 Powertools ?

成为参考客户

了解哪些公司正在使用这个图书馆对于帮助在内部确定项目的优先次序很重要。 如果您的公司正在使用 Powertools 为 AWS Lambda (TypeScript) , 您可以要求您在 README 文件中添加您的姓名和标志 AWS Lambda( TypeScript) 的辅助电源工具(成为参考) 问题.

除其他外,下列公司使用Powertools:

分享你的工作

分享您为 AWS Lambda (TypeScript) 所做的 Powertools 。 看看社区有什么 已经共享 关于AWS Lambda的Powertools (TypeScript).

使用 Lambda 层

这帮助我们了解谁用Powertools为AWS Lambda(英语:TypeScript (TypeScript))以非侵入性的方式使用Powertools,并帮助我们获得未来对其他AWS Lambda语言的Powertool的投资. 何时 使用图层,您可以添加Powertools作为dev的依赖性,以不影响开发过程.

许可证

这个图书馆根据MIT-0许可证获得许可. 见LICENSE文件.

版本与发布记录

@aws-lambda-powertools/batch 共发布 69 个版本,首次发布于 2023/07/25;过去 12 个月发布了 11 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.36.0latest2026/10/061 个月前
2.35.02026/08/182 个月前
2.34.02026/07/103 个月前
2.33.12026/05/255 个月前
2.33.02026/04/146 个月前
2.32.02026/03/197 个月前

其他发布通道:next → 2.0.0-alpha.2。

关于 @aws-lambda-powertools/batch 的常见问题

@aws-lambda-powertools/batch 是什么?

AWS Lambda (TypeScript) 库的Powertools的批处理包.

如何安装 @aws-lambda-powertools/batch?

在项目目录运行 npm install @aws-lambda-powertools/batch,或使用 pnpm add / yarn add / bun add。

@aws-lambda-powertools/batch 支持 TypeScript 吗?

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

@aws-lambda-powertools/batch 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@aws-lambda-powertools/batch 可以商用吗?

@aws-lambda-powertools/batch 使用 MIT-0 许可。声明的许可为 MIT-0,请阅读许可原文确认使用条件。以上为概括,不构成法律意见,请以许可原文为准。

@aws-lambda-powertools/batch 的下载量有多少?

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

@aws-lambda-powertools/batch 还在维护吗?

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