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

步骤 2.1:创建部署程序包

Filter View 列表中,选择要用于 Lambda 函数的语言。适当的部分随即出现,其中包含创建部署程序包的代码和具体说明。

Node.js

以下是将 Kinesis 事件记录作为输入接收并对其进行处理的示例 Node.js 代码。为了展示这个过程,代码会将一些传入的事件数据写入 CloudWatch Logs。

按照说明创建 AWS Lambda 函数部署程序包。

  1. 打开文本编辑器,然后复制以下代码。

    Copy
    console.log('Loading function'); exports.handler = function(event, context, callback) { //console.log(JSON.stringify(event, null, 2)); event.Records.forEach(function(record) { // Kinesis data is base64 encoded so decode here var payload = new Buffer(record.kinesis.data, 'base64').toString('ascii'); console.log('Decoded payload:', payload); }); callback(null, "message"); };

    注意

    代码示例与 Node.js 运行时 v6.10 或 v4.3 兼容。有关更多信息,请参阅编程模型 (Node.js)

  2. 将该文件保存为 ProcessKinesisRecords.js

  3. ProcessKinesisRecords.js 文件压缩为 ProcessKinesisRecords.zip

下一步

步骤 2.2:创建执行角色(IAM 角色)

Java

以下是将 Kinesis 事件记录数据作为输入接收并对其进行处理的示例 Java 代码。为了展示这个过程,代码会将一些传入的事件数据写入 CloudWatch Logs。

在代码中,recordHandler 是处理程序。该处理程序使用了在 aws-lambda-java-events 库中定义的预定义 KinesisEvent 类。

Copy
package example; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandler; import com.amazonaws.services.lambda.runtime.events.KinesisEvent; import com.amazonaws.services.lambda.runtime.events.KinesisEvent.KinesisEventRecord; public class ProcessKinesisEvents implements RequestHandler<KinesisEvent, Void>{ @Override public Void handleRequest(KinesisEvent event, Context context) { for(KinesisEventRecord rec : event.getRecords()) { System.out.println(new String(rec.getKinesis().getData().array())); } return null; } }

如果该处理程序正常返回并且没有异常,则 Lambda 认为输入的记录批次得到成功处理并开始读取流中的新记录。如果该处理程序引发异常,则 Lambda 认为输入的记录批次未得到处理,并用相同的记录批次再次调用该函数。

使用之前的代码 (在名为 ProcessKinesisEvents.java 的文件中) 创建一个部署程序包。确保添加以下依赖项:

  • aws-lambda-java-core

  • aws-lambda-java-events

有关更多信息,请参阅 使用 Java 编写 Lambda 函数的编程模型

部署程序包既可以是 .zip 文件,也可以是独立的 .jar。您可以使用自己熟悉的任何构建和打包工具来创建部署程序包。有关如何使用 Maven 构建工具创建独立 .jar 的示例,请参阅使用 Maven 但不借助任何 IDE 创建 .jar 部署程序包 (Java)使用 Maven 和 Eclipse IDE 创建 .jar 部署程序包 (Java)。有关如何使用 Gradle 构建工具创建 .zip 文件的示例,请参阅创建 .zip 部署程序包 (Java)

确认已创建您的部署程序包后,请转到下一步来创建 IAM 角色(执行角色)。您将在创建 Lambda 函数时指定此角色。

下一步

步骤 2.2:创建执行角色(IAM 角色)

C#

以下是将 Kinesis 事件记录数据作为输入接收并对其进行处理的示例 C# 代码。为了展示这个过程,代码会将一些传入的事件数据写入 CloudWatch Logs。

在代码中,HandleKinesisRecord 是处理程序。该处理程序使用了在 Amazon.Lambda.KinesisEvents 库中定义的预定义 KinesisEvent 类。

Copy
using System; using System.IO; using System.Text; using Amazon.Lambda.Core; using Amazon.Lambda.KinesisEvents; namespace KinesisStreams { public class KinesisSample { [LambdaSerializer(typeof(JsonSerializer))] public void HandleKinesisRecord(KinesisEvent kinesisEvent) { Console.WriteLine($"Beginning to process {kinesisEvent.Records.Count} records..."); foreach (var record in kinesisEvent.Records) { Console.WriteLine($"Event ID: {record.EventId}"); Console.WriteLine($"Event Name: {record.EventName}"); string recordData = GetRecordContents(record.Kinesis); Console.WriteLine($"Record Data:"); Console.WriteLine(recordData); } Console.WriteLine("Stream processing complete."); } private string GetRecordContents(KinesisEvent.Record streamRecord) { using (var reader = new StreamReader(streamRecord.Data, Encoding.ASCII)) { return reader.ReadToEnd(); } } } }

要创建部署程序包,请按照.NET 内核 CLI中所列的步骤操作。在这种情况下,请在创建完成 .NET 项目后注意以下内容:

  • 将默认的 Program.cs 文件重命名为您选择的文件名,如 ProcessingKinesisEvents.cs

  • 使用上述代码实例替换重命名的 Program.cs 文件中的默认内容。

  • project.json 文件中,确保 dependencies 节点包含以下参考内容。

    • "Amazon.Lambda.Core": "1.0.0-*"

    • "Amazon.Lambda.KinesisEvents":"1.0.0-*"

    • "Amazon.Lambda.Serialization.Json":"1.0.0-*"

确认已创建您的部署程序包后,请转到下一步来创建 IAM 角色(执行角色)。您将在创建 Lambda 函数时指定此角色。

下一步

步骤 2.2:创建执行角色(IAM 角色)

Python

以下是将 Kinesis 事件记录数据作为输入接收并对其进行处理的示例 Python 代码。为了展示这个过程,代码会将一些传入的事件数据写入 CloudWatch Logs。

按照说明创建 AWS Lambda 函数部署程序包。

  1. 打开文本编辑器,然后复制以下代码。

    注意

    利用 from __future__ 语句,可以编写与 Python 2 或 3 兼容的代码。如果您使用的是运行时版本 3.6,则不必将它包含在内。

    Copy
    from __future__ import print_function #import json import base64 def lambda_handler(event, context): for record in event['Records']: #Kinesis data is base64 encoded so decode here payload=base64.b64decode(record["kinesis"]["data"]) print("Decoded payload: " + str(payload))
  2. 将该文件保存为 ProcessKinesisRecords.py

  3. ProcessKinesisRecords.py 文件压缩为 ProcessKinesisRecords.zip

下一步

步骤 2.2:创建执行角色(IAM 角色)

本页内容: