# @aws-cdk/aws-lambda-event-sources 中文文档

规范地址：https://npmcn.com/package/%40aws-cdk/aws-lambda-event-sources/

版本：1\.204\.0
npm 元数据更新时间：2023-11-21T10:16:03.564Z
中文译文更新时间：2026-11-07T14:27:17.508Z
软件包许可：Apache-2\.0

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

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

弃用说明：AWS CDK v1 has reached End-of-Support on 2023-06-01\. This package is no longer being updated, and users should migrate to AWS CDK v2\. For more information on how to migrate, see https://docs\.aws\.amazon\.com/cdk/v2/guide/migrating-v2\.html

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

- 包体积（解压后）：373 kB，31 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>= 14\.15\.0
- 运行依赖：15 个
- peer 依赖：@aws-cdk/aws-apigateway 1\.204\.0，@aws-cdk/aws-dynamodb 1\.204\.0，@aws-cdk/aws-ec2 1\.204\.0，@aws-cdk/aws-events 1\.204\.0，@aws-cdk/aws-iam 1\.204\.0，@aws-cdk/aws-kinesis 1\.204\.0，@aws-cdk/aws-lambda 1\.204\.0，@aws-cdk/aws-s3 1\.204\.0，@aws-cdk/aws-s3-notifications 1\.204\.0，@aws-cdk/aws-secretsmanager 1\.204\.0，@aws-cdk/aws-sns 1\.204\.0，@aws-cdk/aws-sns-subscriptions 1\.204\.0，@aws-cdk/aws-sqs 1\.204\.0，@aws-cdk/core 1\.204\.0，constructs ^3\.3\.69
- 首次发布：2018-11-01T11:16:47.430Z
- 最新版本发布：2023-06-19T21:10:40.503Z
- 近 30 天下载量：19277（2026-10-08 至 2026-11-06，npm 官方下载统计）
- 已发布版本数：277（近 12 个月 0 个）

## 中文简介

AWS Lambda 事件来源

## 安装

```sh
npm install @aws-cdk/aws-lambda-event-sources
```

也可以使用：`pnpm add @aws-cdk/aws-lambda-event-sources`、`yarn add @aws-cdk/aws-lambda-event-sources`、`bun add @aws-cdk/aws-lambda-event-sources`

## README

# AWS Lambda 事件源

* * *

![End-of-Support](https://img.shields.io/badge/End--of--Support-critical.svg?style=for-the-badge)

> AWS CDK v1在2023-06-01上达到了支持结束. 此软件包不再更新,用户应该迁移到 AWS CDK v2.
> 
> 关于如何移徙的更多信息,请参见: [_移动到 AWS CDK v2_ 指南](https://docs.aws.amazon.com/cdk/v2/guide/migrating-v2.html)。 。 。 .

* * *

一个事件源映射是一个AWS Lambda资源,它从事件源读取并引用了Lambda函数. 您可以使用事件源映射来处理不引用 Lambda 服务中的流或队列中的项目 直接函数。 Lambda为以下服务提供事件源映射. 有关羊肉的更多信息 事件源 [这里](https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventsourcemapping.html)。 。 。 .

此模块包括允许将各种 AWS 服务用作事件的类 aWS Lambda通过高级别 `lambda.addEventSource(source)` API (英语).

注:在多数情况下,也可以使用资源API来援引一项规则 AWS Lambda 函数 。 这个库为所有 Lambda 事件提供统一的 API 来源,不论它们使用何种基本机制.

以下代码设置了带有 SQS 队列事件源的 lambda 函数 -

```ts
import { SqsEventSource } from '@aws-cdk/aws-lambda-event-sources';

declare const fn: lambda.Function;
const queue = new sqs.Queue(this, 'MyQueue');
const eventSource = new SqsEventSource(queue);
fn.addEventSource(eventSource);

const eventSourceId = eventSource.eventSourceMappingId;
```

这个 `eventSourceId` 属性包含事件源代码。 这将是一个 [符号](https://docs.aws.amazon.com/cdk/latest/guide/tokens.html) 最终价值的确定 部署.

## 质量

Amazon 简单队列服务( Amazon SQS) 允许您构建同步 工作流程。 有关亚马逊 SQS 的更多信息,请参见 Amazon 简单队列 服务。 您可以配置 AWS Lambda 来投票这些消息的到来 然后将事件传递给 Lambda 函数引用 。 要查看一个样本事件, 见 [亚马逊 SQS 事件](https://docs.aws.amazon.com/lambda/latest/dg/eventsources.html#eventsources-sqs)。 。 。 .

要建立 Amazon 简单队列服务 作为 AWS Lambda 的事件源, 您 首先创建或更新 Amazon SQS 队列,并选择自定义值 队列参数。 以下参数将影响亚马逊SQS的投票 行为 :

-   **可见度 超时**: 可能影响复试之间的间隔期.
-   **接收Message等时间**: 将决定 [长 民意调查](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-long-polling.html) 持续时间。 默认值为20秒.
-   **批量大小**: 确定在引用您 lambda 函数前要缓冲多少记录 .
-   **最大切入窗口**:在引用"羊肉"之前收集记录的最长时间. 这增加了以延误处理为代价进行整批处理的可能性.
-   **启用**: 如果启用 SQS 事件源映射 。 默认是真实的.

```ts
import { SqsEventSource } from '@aws-cdk/aws-lambda-event-sources';

const queue = new sqs.Queue(this, 'MyQueue', {
  visibilityTimeout: Duration.seconds(30),      // default,
  receiveMessageWaitTime: Duration.seconds(20), // default
});
declare const fn: lambda.Function;

fn.addEventSource(new SqsEventSource(queue, {
  batchSize: 10, // default
  maxBatchingWindow: Duration.minutes(5),
  reportBatchItemFailures: true, // default to false
}));
```

## 第3条

您可以写出 Lambda 函数来处理 S3 桶事件, 如 对象创建或对象删除的事件。 例如,当用户上传一个 照片到一桶,你可能想要亚马逊 S3 引用您的 Lambda 函数,所以 它读取图像,为照片创建缩略图.

您可以使用 Amazon S3 中的桶通知配置功能 配置事件源映射, 识别您想要的桶事件 Amazon S3要发布,而Lambda的功能就是引用.

```ts
import * as s3 from '@aws-cdk/aws-s3';
import { S3EventSource } from '@aws-cdk/aws-lambda-event-sources';

const bucket = new s3.Bucket(this, 'mybucket');
declare const fn: lambda.Function;

fn.addEventSource(new S3EventSource(bucket, {
  events: [ s3.EventType.OBJECT_CREATED, s3.EventType.OBJECT_REMOVED ],
  filters: [ { prefix: 'subdir/' } ], // optional
}));
```

## 简讯

您可以写入 Lambda 函数处理 Amazon 简单通知服务 通知书。 当向亚马逊 SNS 专题发布消息时, 服务 可以通过传递消息有效载荷作为参数来引用你的Lambda函数. 您的 Lambda 函数代码可以处理事件, 例如发布 消息给其他亚马逊 SNS 主题,或者将消息发送给其他 AWS 服务.

这也使您能够针对亚马逊启动 Lambda 函数 Cloud Watch警报器和其他使用亚马逊SNS的AWS服务.

举例来说,见 [附录:信息和JSON 格式](https://docs.aws.amazon.com/sns/latest/dg/json-formats.html) 财务报告和审定财务报表 [亚马逊 SNS 样本 活动](https://docs.aws.amazon.com/lambda/latest/dg/eventsources.html#eventsources-sns)。 。 。 . 例如,请见 [使用 AWS Lambda 与 Amazon SNS 来自不同的 账户](https://docs.aws.amazon.com/lambda/latest/dg/with-sns.html)。 。 。 .

```ts
import * as sns from '@aws-cdk/aws-sns';
import { SnsEventSource } from '@aws-cdk/aws-lambda-event-sources';

declare const topic: sns.Topic;
const deadLetterQueue = new sqs.Queue(this, 'deadLetterQueue');

declare const fn: lambda.Function;
fn.addEventSource(new SnsEventSource(topic, {
  filterPolicy: { },
  deadLetterQueue: deadLetterQueue,
}));
```

当一个用户以您的 Lambda 函数为主题给 SNS 发布 API 打电话时 amazon SNS将调用Lambda来引用您的功能 一个同步。 Lambda将返回交付状态。 如果有错误 amazon SNS将重取Lambda的功能 时间。 三次尝试后,如果亚马逊 SNS 仍然无法成功引用 Lambda 函数,然后 Amazon SNS 将发送发送状态失败消息到 云观.

## 迪纳摩DB流

您可以从 DynamoDB 表格中写入 Lambda 函数来处理更改事件 。 当写入( 插入、 删除、 更新) 时, 事件会释放到 DynamoDB 流( 如果配置) 操作按表格进行。 见 [使用 AWS Lambda 与 Amazon DynataDB](https://docs.aws.amazon.com/lambda/latest/dg/with-ddb.html) 以获取更多关于 Lambda 函数事件源与 DynamoDB 配置的信息.

要处理 Lambda 函数的事件,首先创建或更新 DynamotB 表格,并启用 `stream` 规格。 然后,创建一个 `DynamoEventSource` 并添加到您的 Lambda 函数中。 以下参数会影响亚马逊DynamoDB的投票行为: 亚马逊DynamoDB:

-   **批量大小**: 确定在引用您 lambda 函数之前缓冲了多少记录 - 可能影响您函数的内存用量( 如果太高) 以及跟随来的数据速度( 如果太低) 的能力 .
-   **二节节选取错误**:如果一批件遇到出错,这会导致批件被一分为二并进行再试,使出错的记录能够被隔离.
-   **报告批次项目失败**:允许函数返回一批记录的部分成功响应.
-   **最大切入窗口**:在引用"羊肉"之前收集记录的最长时间. 这增加了以延误处理为代价进行整批处理的可能性.
-   **最大记录年龄**: 将发送给函数处理的记录的最大年龄 。 超过最大年龄的记录将被视为失败.
-   **失败**: 如果记录在所有重试后失败, 或记录年龄已超过配置值, 则记录将被发送到此处指定的 SQS 队列或 SNS 主题
-   **并行因素**:每个硬度上同时处理的批次数.
-   **重试尝试**:如果失败,记录的最大次数应当重审.
-   **启动选项**: 将确定消费地点, 要么在最近('LATEST')的记录中, 要么是在最古老的记录中('TRIM HORIZON'). “ TRIM Horizon” 将确保您处理所有可用的数据, 而“ LATEST” 将忽略在附加事件源之前到达的所有记录 .
-   **翻转窗口**: 使用流时处理窗口的持续时间, 以秒为单位.
-   **启用**: 如果启用 DynamoDB Streams 事件源映射 。 默认是真实的.

```ts
import * as dynamodb from '@aws-cdk/aws-dynamodb';
import { DynamoEventSource, SqsDlq } from '@aws-cdk/aws-lambda-event-sources';

declare const table: dynamodb.Table;

const deadLetterQueue = new sqs.Queue(this, 'deadLetterQueue');

declare const fn: lambda.Function;
fn.addEventSource(new DynamoEventSource(table, {
  startingPosition: lambda.StartingPosition.TRIM_HORIZON,
  batchSize: 5,
  bisectBatchOnError: true,
  onFailure: new SqsDlq(deadLetterQueue),
  retryAttempts: 10,
}));
```

## 键盘

您可以写入 Lambda 函数, 处理 Amazon Kinesis Streams 中的流数据 。 关于Amazon Kinesis的更多信息,请参见: [亚马逊 Kinesis 服务](https://aws.amazon.com/kinesis/data-streams/)。为了更多地了解 Lambda 函数事件源与动能的配置,并查看一个样本事件, 见 [亚马逊Kinesis事件](https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html)。 。 。 .

Amazon Kinesis作为AWS Lambda的事件源,你 首先创建或更新 Amazon Kinesis 流并选择自定义值 事件源参数。 以下参数将影响亚马逊的投票 行为 :

-   **批量大小**: 确定在引用您 lambda 函数之前缓冲了多少记录 - 可能影响您函数的内存用量( 如果太高) 以及跟随来的数据速度( 如果太低) 的能力 .
-   **二节节选取错误**:如果一批件遇到出错,这会导致批件被一分为二并进行再试,使出错的记录能够被隔离.
-   **报告批次项目失败**:允许函数返回一批记录的部分成功响应.
-   **最大切入窗口**:在引用"羊肉"之前收集记录的最长时间. 这增加了整批货物处理的可能性,而代价可能是延误处理.
-   **最大记录年龄**: 将发送给函数处理的记录的最大年龄 。 超过最大年龄的记录将被视为失败.
-   **失败**: 如果记录失败并耗入所有重试, 记录将被发送到此处指定的 SQS 队列或 SNS 主题
-   **并行因素**:每个硬度上同时处理的批次数.
-   **重试尝试**:如果失败,记录的最大次数应当重审.
-   **启动选项**: 将确定消费地点, 要么在最近('LATEST')的记录中, 要么是在最古老的记录中('TRIM HORIZON'). “ TRIM Horizon” 将确保您处理所有可用的数据, 而“ LATEST” 将忽略在附加事件源之前到达的所有记录 .
-   **翻转窗口**: 使用流时处理窗口的持续时间, 以秒为单位.
-   **启用**: 如果启用 DynamoDB Streams 事件源映射 。 默认是真实的.

```ts
import * as kinesis from '@aws-cdk/aws-kinesis';
import { KinesisEventSource } from '@aws-cdk/aws-lambda-event-sources';

const stream = new kinesis.Stream(this, 'MyStream');

declare const myFunction: lambda.Function;
myFunction.addEventSource(new KinesisEventSource(stream, {
  batchSize: 100, // default
  startingPosition: lambda.StartingPosition.TRIM_HORIZON,
}));
```

## 卡夫卡语Name

您可以写入 Lambda 函数来处理来自 [亚马逊 MSK](https://docs.aws.amazon.com/lambda/latest/dg/with-msk.html) 或一个 [自我管理 Kafka](https://docs.aws.amazon.com/lambda/latest/dg/kafka-smaa.html) 分组.

以下代码设置了Amazon MSK,作为Lambda函数的事件源. 需要配置全权证书才能进入 MSK 集群,如 [用户名/ 名词认证](https://docs.aws.amazon.com/msk/latest/developerguide/msk-password.html)。 。 。 .

```ts
import { Secret } from '@aws-cdk/aws-secretsmanager';
import { ManagedKafkaEventSource } from '@aws-cdk/aws-lambda-event-sources';

// Your MSK cluster arn
const clusterArn = 'arn:aws:kafka:us-east-1:0123456789019:cluster/SalesCluster/abcd1234-abcd-cafe-abab-9876543210ab-4';

// The Kafka topic you want to subscribe to
const topic = 'some-cool-topic';

// The secret that allows access to your MSK cluster
// You still have to make sure that it is associated with your cluster as described in the documentation
const secret = new Secret(this, 'Secret', { secretName: 'AmazonMSK_KafkaSecret' });

declare const myFunction: lambda.Function;
myFunction.addEventSource(new ManagedKafkaEventSource({
  clusterArn,
  topic: topic,
  secret: secret,
  batchSize: 100, // default
  startingPosition: lambda.StartingPosition.TRIM_HORIZON,
}));
```

以下代码设置自控的Kafka集群作为事件源. 基于用户名和密码的认证 将需按 [管理访问和许可](https://docs.aws.amazon.com/lambda/latest/dg/smaa-permissions.html#smaa-permissions-add-secret)。 。 。 .

```ts
import { Secret } from '@aws-cdk/aws-secretsmanager';
import { SelfManagedKafkaEventSource } from '@aws-cdk/aws-lambda-event-sources';

// The list of Kafka brokers
const bootstrapServers = ['kafka-broker:9092'];

// The Kafka topic you want to subscribe to
const topic = 'some-cool-topic';

// The secret that allows access to your self hosted Kafka cluster
declare const secret: Secret;

declare const myFunction: lambda.Function;
myFunction.addEventSource(new SelfManagedKafkaEventSource({
  bootstrapServers: bootstrapServers,
  topic: topic,
  secret: secret,
  batchSize: 100, // default
  startingPosition: lambda.StartingPosition.TRIM_HORIZON,
}));
```

如果您自己管理的 Kafka 集群只能通过 VPC 实现, 也可以配置 `vpc` `vpcSubnets` 财务报告和审定财务报表 `securityGroup`。 。 。 .

## 路线图

最终,本模块将支持下面描述的所有事件源 [支持的活动 来源](https://docs.aws.amazon.com/lambda/latest/dg/invoking-lambda-function.html) 在 AWS Lambda 开发者指南中.

## 常见问题

### @aws-cdk/aws-lambda-event-sources 是什么？

AWS Lambda 事件来源注意：该包已被作者标记为弃用——AWS CDK v1 has reached End-of-Support on 2023-06-01\. This package is no longer being updated, and users should migrate to AWS CDK v2\. For more information on how to migrate, see https://docs\.aws\.amazon\.com/cdk/v2/guide/migrating-v2\.html

### 如何安装 @aws-cdk/aws-lambda-event-sources？

在项目目录运行 npm install @aws-cdk/aws-lambda-event-sources，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@aws-cdk/aws-apigateway（1\.204\.0）、@aws-cdk/aws-dynamodb（1\.204\.0）、@aws-cdk/aws-ec2（1\.204\.0）、@aws-cdk/aws-events（1\.204\.0）、@aws-cdk/aws-iam（1\.204\.0）、@aws-cdk/aws-kinesis（1\.204\.0）、@aws-cdk/aws-lambda（1\.204\.0）、@aws-cdk/aws-s3（1\.204\.0）、@aws-cdk/aws-s3-notifications（1\.204\.0）、@aws-cdk/aws-secretsmanager（1\.204\.0）、@aws-cdk/aws-sns（1\.204\.0）、@aws-cdk/aws-sns-subscriptions（1\.204\.0）、@aws-cdk/aws-sqs（1\.204\.0）、@aws-cdk/core（1\.204\.0）、constructs（^3\.3\.69）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @aws-cdk/aws-lambda-event-sources 支持 TypeScript 吗？

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

### @aws-cdk/aws-lambda-event-sources 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @aws-cdk/aws-lambda-event-sources 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>= 14\.15\.0。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @aws-cdk/aws-lambda-event-sources 可以商用吗？

@aws-cdk/aws-lambda-event-sources 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @aws-cdk/aws-lambda-event-sources 的下载量有多少？

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

### @aws-cdk/aws-lambda-event-sources 还在维护吗？

最新版本 1\.204\.0 发布于 2023/06/20（3 年前）；至今共发布 277 个版本，其中过去 12 个月发布了 0 个；首次发布于 2018/11/01。作者已将其标记为弃用，新项目建议寻找替代方案。

