AWS Lambda
开发人员指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

步骤 3:添加事件源(创建 Kinesis 流并将其与您的 Lambda 函数关联)

在本节中,您将创建 Kinesis 流,然后在 AWS Lambda 中添加事件源,以便将 Kinesis 流与您的 Lambda 函数关联。

创建事件源后,AWS Lambda 即开始轮询该流。之后,您可以通过以下方式测试设置:向流中添加事件并验证 AWS Lambda 是否代表您执行了 Lambda 函数:

步骤 3.1:创建 Kinesis 流

使用下面的 Kinesis create-stream CLI 命令创建流。

Copy
$ aws kinesis create-stream \ --stream-name examplestream \ --shard-count 1 \ --region us-west-2 \ --profile adminuser

运行下面的 Kinesis describe-stream AWS CLI 命令以获取流 ARN。

Copy
$ aws kinesis describe-stream \ --stream-name examplestream \ --region us-west-2 \ --profile adminuser

您需要下一步中的流 ARN 来将该流关联到您的 Lambda 函数。流的格式为:

Copy
arn:aws:kinesis:aws-region:account-id:stream/stream-name

步骤 3.2:在 AWS Lambda 中添加事件源

运行以下 AWS CLI add-event-source 命令。命令执行后,记下 UUID。您需要该 UUID 来在任何命令(如删除事件源时)中引用该事件源。

Copy
$ aws lambda create-event-source-mapping \ --region us-west-2 \ --function-name ProcessKinesisRecords \ --event-source kinesis-stream-arn \ --batch-size 100 \ --starting-position TRIM_HORIZON \ --profile adminuser

您可以通过运行以下命令获取事件源映射的列表。

Copy
$ aws lambda list-event-source-mappings \ --region us-west-2 \ --function-name ProcessKinesisRecords \ --event-source kinesis-stream-arn \ --profile adminuser \ --debug

在该响应中,您可以验证状态值是否为 enabled

注意

如果禁用事件源映射,AWS Lambda 将停止轮询 Kinesis 流。如果重新启用事件源映射,AWS Lambda 将从其停止轮询的序列号处恢复轮询,因此每条记录都会在您禁用映射前或启用映射后进行处理。如果序列号在 TRIM_HORIZON 之后,则当您重新启用事件源映射时,轮询将从 TRIM_HORIZON 开始。但是,如果您创建了新的事件源映射,轮询将始终从 TRIM_HORIZONLATESTAT_TIMESTAMP 开始,具体取决于您指定的开始位置。即使您删除了某个事件源映射并使用与删除的事件源映射相同的配置创建了一个新事件源映射,此规则也适用。

步骤 3.3:测试设置

全部完成!现在,adminuser 可以按以下方式测试设置:

  1. 使用下面的 AWS CLI 命令,将事件记录添加到 Kinesis 流。--data 值是 "Hello, this is a test." 字符串的 base64 编码值。您可以多次运行同一命令来向流中添加多条记录。

    Copy
    $ aws kinesis put-record \ --stream-name examplestream \ --data "This is a test. final" \ --partition-key shardId-000000000000 \ --region us-west-2 \ --profile adminuser
  2. AWS Lambda 轮询该流,当检测到流有更新时,它会通过传递流中的事件数据来调用您的 Lambda 函数。

    AWS Lambda 担任执行角色来轮询流。您已为该角色授予执行必要的 Kinesis 操作的权限,以便让 AWS Lambda 轮询流并读取来自流的事件。

  3. 您的函数将执行并将日志添加到与 Amazon CloudWatch 中的 Lambda 函数对应的日志组中。

    adminuser 还可以验证 Amazon CloudWatch 控制台中报告的日志。确保您检查的是创建 Lambda 函数所在的 AWS 区域的日志。