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

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

版本：2\.36\.0
npm 元数据更新时间：2026-10-06T14:28:11.810Z
中文译文更新时间：2026-11-07T10:38:53.073Z
软件包许可：MIT-0

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

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

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

- 包体积（解压后）：945 kB，340 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：2 个
- peer 依赖：zod 4\.x，@middy/core 4\.x \|\| 5\.x \|\| 6\.x \|\| 7\.x
- 首次发布：2024-04-16T20:39:28.526Z
- 最新版本发布：2026-10-06T14:28:11.427Z
- 近 30 天下载量：457986（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：48（近 12 个月 11 个）

## 中文简介

AWS Lambda (TypeScript) 库的Powertools的解析器包.

## 安装

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

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

## README

# AWS Lambda( TypeScript) - Parser 工具

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

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

-   [介绍](https://npmcn.com/package/%40aws-lambda-powertools/parser/#readme-intro)
-   [主要特点](https://npmcn.com/package/%40aws-lambda-powertools/parser/#readme-key-features)
-   [使用量](https://npmcn.com/package/%40aws-lambda-powertools/parser/#readme-usage)
    -   [Middy.js 中间软件](https://npmcn.com/package/%40aws-lambda-powertools/parser/#readme-middyjs-middleware)
    -   [装饰](https://npmcn.com/package/%40aws-lambda-powertools/parser/#readme-decorator)
    -   [手动解析](https://npmcn.com/package/%40aws-lambda-powertools/parser/#readme-manual-parsing)
    -   [安全剖析](https://npmcn.com/package/%40aws-lambda-powertools/parser/#readme-safe-parsing)
    -   [内建的图案和信封](https://npmcn.com/package/%40aws-lambda-powertools/parser/#readme-built-in-schemas-and-envelopes)
-   [贡献](https://npmcn.com/package/%40aws-lambda-powertools/parser/#readme-contribute)
-   [路线图](https://npmcn.com/package/%40aws-lambda-powertools/parser/#readme-roadmap)
-   [连接](https://npmcn.com/package/%40aws-lambda-powertools/parser/#readme-connect)
-   [如何支持 AWS Lambda (TypeScript) 的 Powertools ?](https://npmcn.com/package/%40aws-lambda-powertools/parser/#readme-how-to-support-powertools-for-aws-lambda-typescript)
    -   [成为参考客户](https://npmcn.com/package/%40aws-lambda-powertools/parser/#readme-becoming-a-reference-customer)
    -   [分享你的工作](https://npmcn.com/package/%40aws-lambda-powertools/parser/#readme-sharing-your-work)
    -   [使用 Lambda 层](https://npmcn.com/package/%40aws-lambda-powertools/parser/#readme-using-lambda-layer)
-   [许可证](https://npmcn.com/package/%40aws-lambda-powertools/parser/#readme-license)

## 介绍

此工具提供数据验证和解析 [标准Schema](https://github.com/standard-schema/standard-schema),以及内置的集合 [佐德语Name](https://zod.dev/) 分析并解开AWS事件源有效载荷的图案和信封.

## 主要特点

-   接受一个 [标准Schema](https://github.com/standard-schema/standard-schema) 并分析收到的有效载荷
-   安装了Zod计划和信封,以解围和验证受欢迎的AWS事件源有效载荷
-   扩展和定制内置的 Zod 计划,以适应您的需要
-   安全解析选项以避免丢出错误并允许自定义错误处理
-   可用为 Middy.js 中件和 TypeScript 类方法装饰器

## 使用量

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

```sh
npm install @aws-lambda-powertools/parser zod
```

您可以使用 `parser` 装饰器,Middy.js 中间软件,或 [手动](https://npmcn.com/package/%40aws-lambda-powertools/parser/#readme-manual-parsing) 使用内置信封和计划.

在使用装饰器或中间软件时,您可以指定用于剖析事件的策略: [内建 Zod 计划](https://docs.aws.amazon.com/powertools/typescript/latest/features/parser/#built-in-schemas) 或者你定义的自定义方案 自定义计划可以使用 Zod 或其他任何方法定义 [标准 Schema 兼容库](https://standardschema.dev/#what-schema-libraries-implement-the-spec)。 。 。 .

### Middy.js 中间软件

使用 Zod 计划 :

```typescript
import { Logger } from '@aws-lambda-powertools/logger';
import { parser } from '@aws-lambda-powertools/parser/middleware';
import middy from '@middy/core';
import { z } from 'zod';

const logger = new Logger();

const orderSchema = z.object({
  id: z.number().positive(),
  description: z.string(),
  items: z.array(
    z.object({
      id: z.number().positive(),
      quantity: z.number().positive(),
      description: z.string(),
    })
  ),
  optionalField: z.string().optional(),
});

export const handler = middy()
  .use(parser({ schema: orderSchema }))
  .handler(async (event): Promise<void> => {
    for (const item of event.items) {
      // item is parsed as OrderItem
      logger.info('Processing item', { item });
    }
  });
```

使用 Valibot 计划:

```typescript
import { Logger } from '@aws-lambda-powertools/logger';
import { parser } from '@aws-lambda-powertools/parser/middleware';
import middy from '@middy/core';
import {
  array,
  number,
  object,
  optional,
  pipe,
  string,
  toMinValue,
} from 'valibot';

const logger = new Logger();

const orderSchema = object({
  id: pipe(number(), toMinValue(0)),
  description: string(),
  items: array(
    object({
      id: pipe(number(), toMinValue(0)),
      quantity: pipe(number(), toMinValue(1)),
      description: string(),
    })
  ),
  optionalField: optional(string()),
});

export const handler = middy()
  .use(parser({ schema: orderSchema }))
  .handler(async (event): Promise<void> => {
    for (const item of event.items) {
      // item is parsed as OrderItem
      logger.info('Processing item', { item });
    }
  });
```

### 装饰

```typescript
import type { LambdaInterface } from '@aws-lambda-powertools/commons/types';
import { Logger } from '@aws-lambda-powertools/logger';
import { parser } from '@aws-lambda-powertools/parser';
import type { Context } from 'aws-lambda';
import { z } from 'zod';

const logger = new Logger();

const orderSchema = z.object({
  id: z.number().positive(),
  description: z.string(),
  items: z.array(
    z.object({
      id: z.number().positive(),
      quantity: z.number(),
      description: z.string(),
    })
  ),
  optionalField: z.string().optional(),
});

type Order = z.infer<typeof orderSchema>;

class Lambda implements LambdaInterface {
  @parser({ schema: orderSchema })
  public async handler(event: Order, _context: Context): Promise<void> {
    // event is now typed as Order
    for (const item of event.items) {
      logger.info('Processing item', { item });
    }
  }
}

const myFunction = new Lambda();
export const handler = myFunction.handler.bind(myFunction);
```

### 手动解析

如果您不想添加一个额外的中间软件依赖性,或者您更喜欢手动方法,可以通过调用 `parse` 方法:

```typescript
import type { Context } from 'aws-lambda';
import { z } from 'zod';
import { EventBridgeEnvelope } from '@aws-lambda-powertools/parser/envelopes';
import { EventBridgeSchema } from '@aws-lambda-powertools/parser/schemas';
import type { EventBridgeEvent } from '@aws-lambda-powertools/parser/types';
import { Logger } from '@aws-lambda-powertools/logger';

const logger = new Logger();

const orderSchema = z.object({
  id: z.number().positive(),
  description: z.string(),
  items: z.array(
    z.object({
      id: z.number().positive(),
      quantity: z.number(),
      description: z.string(),
    })
  ),
  optionalField: z.string().optional(),
});
type Order = z.infer<typeof orderSchema>;

export const handler = async (
  event: EventBridgeEvent,
  _context: Context
): Promise<void> => {
  const parsedEvent = EventBridgeSchema.parse(event);
  logger.info('Parsed event', parsedEvent);

  const orders: Order = EventBridgeEnvelope.parse(event, orderSchema);
  logger.info('Parsed orders', orders);
};
```

### 安全剖析

当解析数据时,您可以使用 `safeParse` 避免丢出错误并手动处理错误的方法:

```typescript
import type { Context } from 'aws-lambda';
import { parser } from '@aws-lambda-powertools/parser/middleware';
import { z } from 'zod';
import middy from '@middy/core';
import type {
  ParsedResult,
  EventBridgeEvent,
} from '@aws-lambda-powertools/parser/types';
import { Logger } from '@aws-lambda-powertools/logger';

const logger = new Logger();

const orderSchema = z.object({
  id: z.number().positive(),
  description: z.string(),
  items: z.array(
    z.object({
      id: z.number().positive(),
      quantity: z.number(),
      description: z.string(),
    })
  ),
  optionalField: z.string().optional(),
});

type Order = z.infer<typeof orderSchema>;

const lambdaHandler = async (
  event: ParsedResult<EventBridgeEvent, Order>,
  _context: Context
): Promise<void> => {
  if (event.success) {
    // (2)!
    for (const item of event.data.items) {
      logger.info('Processing item', { item });
    }
  } else {
    logger.error('Error parsing event', { event: event.error });
    logger.error('Original event', { event: event.originalEvent });
  }
};

export const handler = middy(lambdaHandler).use(
  parser({ schema: orderSchema, safeParse: true })
);
```

见 [安全剖析](https://docs.aws.amazon.com/powertools/typescript/latest/features/parser#safe-parsing) 详细情况见文件部分.

### 内建的图案和信封

该工具提供一套内置的图案和信封来剖析受欢迎的AWS事件源有效载荷,例如:

```typescript
import type { Context } from 'aws-lambda';
import type { LambdaInterface } from '@aws-lambda-powertools/commons/types';
import { parser } from '@aws-lambda-powertools/parser';
import { z } from 'zod';
import { EventBridgeEnvelope } from '@aws-lambda-powertools/parser/envelopes';
import { Logger } from '@aws-lambda-powertools/logger';

const logger = new Logger();

const orderSchema = z.object({
  id: z.number().positive(),
  description: z.string(),
  items: z.array(
    z.object({
      id: z.number().positive(),
      quantity: z.number(),
      description: z.string(),
    })
  ),
  optionalField: z.string().optional(),
});

type Order = z.infer<typeof orderSchema>;

class Lambda implements LambdaInterface {
  @parser({ schema: orderSchema, envelope: EventBridgeEnvelope })
  public async handler(event: Order, _context: Context): Promise<void> {
    // event is now typed as Order
    for (const item of event.items) {
      logger.info('Processing item', item); // (2)!
    }
  }
}

const myFunction = new Lambda();
export const handler = myFunction.handler.bind(myFunction);
```

检查全部内置列表的公用文档 [计划](https://docs.aws.amazon.com/powertools/typescript/latest/features/parser/#built-in-schemas) 财务报告和审定财务报表 [信封](https://docs.aws.amazon.com/powertools/typescript/latest/features/parser/#built-in-envelopes)。 。 。 .

## 贡献

如果你有兴趣为这个项目捐款,请参见我们 [贡献准则](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 ?

### 成为参考客户

了解哪些公司正在使用这个图书馆对于帮助在内部确定项目的优先次序很重要。 如果你的同伴们 正在对 AWS Lambda (TypeScript) 使用 Powertools , 您可以请求将您的姓名和标志添加到 README 文件 提高a [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/)
-   [EF 教育第一](https://www.ef.com/)
-   [埃尔瓦](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文件. 这个图书馆根据MIT-0许可证获得许可. 见LICENSE文件.

## 常见问题

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

AWS Lambda \(TypeScript\) 库的Powertools的解析器包\.

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

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

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

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

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

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

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

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

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

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

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

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

