# @aws-lambda-powertools/kafka 中文文档

规范地址：https://npmcn.com/package/%40aws-lambda-powertools/kafka/

版本：2\.36\.0
npm 元数据更新时间：2026-10-06T14:29:43.466Z
中文译文更新时间：2026-11-07T16:29:22.762Z
软件包许可：MIT-0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40aws-lambda-powertools/kafka
原文对照：https://npmcn.com/package/%40aws-lambda-powertools/kafka/?lang=original
项目主页：https://github.com/aws-powertools/powertools-lambda-typescript#readme
源码仓库：https://github.com/aws-powertools/powertools-lambda-typescript

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：89.5 kB，64 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：2 个
- peer 依赖：zod ^3\.25\.0 \|\| ^4\.0\.0，arktype ^2\.2\.7，avro-js ^1\.12\.1，valibot ^1\.5\.0，protobufjs ^8\.8\.0
- 首次发布：2025-06-20T17:08:25.325Z
- 最新版本发布：2026-10-06T14:29:42.960Z
- 近 30 天下载量：4881（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：24（近 12 个月 11 个）

## 中文简介

在AWS Lambda函数中方便处理Kafka事件的信息去区域化和剖析的工具

## 安装

```sh
npm install @aws-lambda-powertools/kafka
```

也可以使用：`pnpm add @aws-lambda-powertools/kafka`、`yarn add @aws-lambda-powertools/kafka`、`bun add @aws-lambda-powertools/kafka`

## README

# AWS Lambda( TypeScript) - Kafka 工具

用于 AWS Lambda (TypeScript) 的 Powertools 是用于执行无服务器的开发者工具包 [最佳做法和增加开发者的速度](https://docs.aws.amazon.com/powertools/typescript/latest/#features)。 。 。 .

您可以在 TypeScript 和 JavaScript 代码基础中使用软件包.

## 介绍

卡夫卡消费者公用系统透明地处理信息去区域化,提供直观的开发者经验,并与其他动力工具无缝地融合,用于AWS Lambda生态系统.

## 使用量

要启动, 根据您想要使用的策略类型, 安装库和相应的库 :

JSON计划:

```bash
npm install @aws-lambda-powertools/kafka
```

对于Avro计划:

```bash
npm install @aws-lambda-powertools/kafka avro-js
```

对于Protobuf计划:

```bash
npm install @aws-lambda-powertools/kafka protobufjs
```

此外,如果想要使用输出解析 [标准Schema](https://github.com/standard-schema/standard-schema),您可以安装 [任何支持的库](https://standardschema.dev/#what-schema-libraries-implement-the-spec)例如: Zod, Valibot, 或 ArkType.

### 取消序列化

卡夫卡消费者公用设施将生的卡夫卡事件转变为直观的处理格式. 要有效处理信件,您需要配置一个与您的数据格式相匹配的策略.

#### 杰森·斯克马

```ts
import { SchemaType, kafkaConsumer } from '@aws-lambda-powertools/kafka';
import type { SchemaConfig } from '@aws-lambda-powertools/kafka/types';
import { Logger } from '@aws-lambda-powertools/logger';

const logger = new Logger({ serviceName: 'kafka-consumer' });

const schemaConfig = {
  value: {
    type: SchemaType.JSON,
  },
} satisfies SchemaConfig;

export const handler = kafkaConsumer(async (event, _context) => {
  for (const { value } of event.records) {
    logger.info('received value', { value });
  }
}, schemaConfig);
```

#### 阿夫罗·斯克马

```ts
import { readFileSync } from 'node:fs';
import { SchemaType, kafkaConsumer } from '@aws-lambda-powertools/kafka';
import type { SchemaConfig } from '@aws-lambda-powertools/kafka/types';
import { Logger } from '@aws-lambda-powertools/logger';

const logger = new Logger({ serviceName: 'kafka-consumer' });

const schemaConfig = {
  value: {
    type: SchemaType.AVRO,
    schema: readFileSync(new URL('./user.avsc', import.meta.url), 'utf8'),
  },
} satisfies SchemaConfig;

export const handler = kafkaConsumer(async (event, _context) => {
  for (const { value } of event.records) {
    logger.info('received value', { value });
  }
}, schemaConfig);
```

#### 普罗托布夫·舍马

```ts
import { SchemaType, kafkaConsumer } from '@aws-lambda-powertools/kafka';
import type { SchemaConfig } from '@aws-lambda-powertools/kafka/types';
import { Logger } from '@aws-lambda-powertools/logger';
import { User } from './samples/user.es6.generated.js'; // protobuf generated class

const logger = new Logger({ serviceName: 'kafka-consumer' });

const schemaConfig = {
  value: {
    type: SchemaType.PROTOBUF,
    schema: User,
  },
} satisfies SchemaConfig;

export const handler = kafkaConsumer(async (event, _context) => {
  for (const { value } of event.records) {
    logger.info('received value', { value });
  }
}, schemaConfig);
```

### 附加解析

您可以使用您的首选解析库解析已解析的数据 。 这可以帮助您将Kafka数据与您的域名计划和应用架构整合,提供类型提示,运行时间解析和验证,以及高级数据转换.

#### 佐德语Name

```ts
import { SchemaType, kafkaConsumer } from '@aws-lambda-powertools/kafka';
import type { SchemaConfig } from '@aws-lambda-powertools/kafka/types';
import { Logger } from '@aws-lambda-powertools/logger';
import { z } from 'zod/v4';

const logger = new Logger({ serviceName: 'kafka-consumer' });

const OrderItemSchema = z.object({
  productId: z.string(),
  quantity: z.number().int().positive(),
  price: z.number().positive(),
});

const OrderSchema = z.object({
  id: z.string(),
  customerId: z.string(),
  items: z.array(OrderItemSchema).min(1, 'Order must have at least one item'),
  createdAt: z.iso.datetime(),
  totalAmount: z.number().positive(),
});

const schemaConfig = {
  value: {
    type: SchemaType.JSON,
    parserSchema: OrderSchema,
  },
} satisfies SchemaConfig;

export const handler = kafkaConsumer<unknown, z.infer<typeof OrderSchema>>(
  async (event, _context) => {
    for (const record of event.records) {
      const {
        value: { id, items },
      } = record;
      logger.setCorrelationId(id);
      logger.debug(`order includes ${items.length} items`);
    }
  },
  schemaConfig
);
```

#### 维利博特

```ts
import { SchemaType, kafkaConsumer } from '@aws-lambda-powertools/kafka';
import type { SchemaConfig } from '@aws-lambda-powertools/kafka/types';
import { Logger } from '@aws-lambda-powertools/logger';
import * as v from 'valibot';

const logger = new Logger({ serviceName: 'kafka-consumer' });

const OrderItemSchema = v.object({
  productId: v.string(),
  quantity: v.pipe(v.number(), v.integer(), v.toMinValue(1)),
  price: v.pipe(v.number(), v.integer()),
});

const OrderSchema = v.object({
  id: v.string(),
  customerId: v.string(),
  items: v.pipe(
    v.array(OrderItemSchema),
    v.minLength(1, 'Order must have at least one item')
  ),
  createdAt: v.pipe(v.string(), v.isoDateTime()),
  totalAmount: v.pipe(v.number(), v.toMinValue(0)),
});

const schemaConfig = {
  value: {
    type: SchemaType.JSON,
    parserSchema: OrderSchema,
  },
} satisfies SchemaConfig;

export const handler = kafkaConsumer<unknown, v.InferInput<typeof OrderSchema>>(
  async (event, _context) => {
    for (const record of event.records) {
      const {
        value: { id, items },
      } = record;
      logger.setCorrelationId(id);
      logger.debug(`order includes ${items.length} items`);
    }
  },
  schemaConfig
);
```

#### ArkType 密码

```ts
import { SchemaType, kafkaConsumer } from '@aws-lambda-powertools/kafka';
import type { SchemaConfig } from '@aws-lambda-powertools/kafka/types';
import { Logger } from '@aws-lambda-powertools/logger';
import { type } from 'arktype';

const logger = new Logger({ serviceName: 'kafka-consumer' });

const OrderItemSchema = type({
  productId: 'string',
  quantity: 'number.integer >= 1',
  price: 'number.integer',
});

const OrderSchema = type({
  id: 'string',
  customerId: 'string',
  items: OrderItemSchema.array().moreThanLength(0),
  createdAt: 'string.date',
  totalAmount: 'number.integer >= 0',
});

const schemaConfig = {
  value: {
    type: SchemaType.JSON,
    parserSchema: OrderSchema,
  },
} satisfies SchemaConfig;

export const handler = kafkaConsumer<unknown, typeof OrderSchema.infer>(
  async (event, _context) => {
    for (const record of event.records) {
      const {
        value: { id, items },
      } = record;
      logger.setCorrelationId(id);
      logger.debug(`order includes ${items.length} items`);
    }
  },
  schemaConfig
);
```

见 [文档](https://docs.aws.amazon.com/powertools/typescript/latest/features/kafka) 关于如何使用卡夫卡工具的更详细信息.

## 贡献

如果你有兴趣为这个项目捐款,请参见我们 [贡献准则](https://github.com/aws-powertools/powertools-lambda-typescript/blob/main/CONTRIBUTING.md)。 。 。 .

## 路线图

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

## 连接

-   **关于 GitHub 讨论的 AWS Lambda 工具**数字 : [加入对话](https://github.com/aws-powertools/powertools-lambda-typescript/discussions)
-   **电子邮件**数字 : [aws-lambda-powertools- feedback@amazon.com 互联网档案馆的存檔,存档日期2014-12-21](mailto:aws-lambda-powertools-feedback@amazon.com)

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

### 成为参考客户

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

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

-   [Alma 媒体](https://www.almamedia.fi/)
-   [应用自己](https://appyourself.net/)
-   [贝利·纳尔逊](https://www.baileynelson.com.au/)
-   [Banx 软件](https://www.banxware.com/)
-   [凯伦特](https://caylent.com/)
-   [可认证](https://www.certible.com/)
-   [代码](https://www.codeac.io/)
-   [埃尔瓦](https://elva-group.com/)
-   [飞行重量](https://flyweight.io/)
-   [欺诈](https://fraudfalcon.app/)
-   [全球数据网](https://globaldatanet.com/)
-   [关节](https://guild.com/)
-   [半径](https://hashnode.com/)
-   [内向](https://instil.co/)
-   [本地软件包](https://localstack.cloud/)
-   [我们的隐私](https://oursprivacy.com/)
-   [完美邮递](https://www.perfectpost.fr/)
-   [传感器](https://sennder.com/)
-   [铁丝网股份有限公司](https://www.tecracer.com/)
-   [绊脚石10](https://www.trek10.com/)
-   [学校](https://www.weschool.com/)

### 分享你的工作

分享您为 AWS Lambda (TypeScript) 所做的 Powertools 。 看看社区有什么 [已经共享](https://docs.aws.amazon.com/powertools/typescript/latest/we_made_this) 关于AWS Lambda的Powertools (TypeScript).

### 使用 Lambda 层

这帮助我们了解谁用Powertools为AWS Lambda(英语:TypeScript (TypeScript))以非侵入性的方式使用Powertools,并帮助我们获得未来对其他AWS Lambda语言的Powertool的投资. 何时 [使用图层](https://docs.aws.amazon.com/powertools/typescript/latest/getting-started/lambda-layers/),您可以添加Powertools作为dev的依赖性,以不影响开发过程.

## 许可证

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

## 常见问题

### @aws-lambda-powertools/kafka 是什么？

在AWS Lambda函数中方便处理Kafka事件的信息去区域化和剖析的工具

### 如何安装 @aws-lambda-powertools/kafka？

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

### @aws-lambda-powertools/kafka 支持 TypeScript 吗？

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

### @aws-lambda-powertools/kafka 支持 ESM 还是 CommonJS？

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

### @aws-lambda-powertools/kafka 可以商用吗？

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

### @aws-lambda-powertools/kafka 的下载量有多少？

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

### @aws-lambda-powertools/kafka 还在维护吗？

最新版本 2\.36\.0 发布于 2026/10/06（1 个月前）；至今共发布 24 个版本，其中过去 12 个月发布了 11 个；首次发布于 2025/06/21。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

