AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
示例 Amazon SQS 函数代码
示例代码具有以下语言。
Node.js
以下是将 Amazon SQS 事件消息作为输入接收并对其进行处理的示例代码。为了展示这个过程,代码会将一些传入的事件数据写入 CloudWatch Logs。
例 index.js (Node.js 8)
exports.handler = async function(event, context) {
event.Records.forEach(record => {
const { body } = record;
console.log(body);
});
return {};
}
例 index.js (Node.js 6)
event.Records.forEach(function(record) {
var body = record.body;
console.log(body);
});
callback(null, "message");
};
Java
以下是将 Amazon SQS 事件消息作为输入接收并对其进行处理的示例 Java 代码。为了展示这个过程,代码会将一些传入的事件数据写入 CloudWatch Logs。
在代码中,handleRequest 是处理程序。该处理程序使用了在 aws-lambda-java-events 库中定义的预定义 SQSEvent 类。
例 Handler.java
package example;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.events.SQSEvent;
import com.amazonaws.services.lambda.runtime.events.SQSEvent.SQSMessage;
public class Handler implements RequestHandler{
@Override
public Void handleRequest(SQSEvent event, Context context)
{
for(SQSMessage msg : event.getRecords()){
System.out.println(new String(msg.getBody()));
}
return null;
}
}
附属物
aws-lambda-java-core
aws-lambda-java-events
使用 Lambda 库依赖项构建代码以创建部署程序包。有关说明,请参阅使用 .zip 或 JAR 文件存档部署 Java Lambda 函数。
C#
以下是将 Amazon SQS 事件消息作为输入接收并对其进行处理的示例 C# 代码。为了展示这个过程,代码会将一些传入的事件数据写入控制台。
在代码中,handleRequest 是处理程序。该处理程序使用了在 AWS.Lambda.SQSEvents 库中定义的预定义 SQSEvent 类。
例 ProcessingSQSRecords.cs
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]
namespace SQSLambdaFunction
{
public class SQSLambdaFunction
{
public string HandleSQSEvent(SQSEvent sqsEvent, ILambdaContext context)
{
Console.WriteLine($"Beginning to process {sqsEvent.Records.Count} records...");
foreach (var record in sqsEvent.Records)
{
Console.WriteLine($"Message ID: {record.MessageId}");
Console.WriteLine($"Event Source: {record.EventSource}");
Console.WriteLine($"Record Body:");
Console.WriteLine(record.Body);
}
Console.WriteLine("Processing complete.");
return $"Processed {sqsEvent.Records.Count} records.";
}
}
}
使用以上示例替换.NET Core 中的 Program.cs有关说明,请参阅使用 .zip 文件存档部署 C# Lambda 函数。
转到
以下是将 Amazon SQS 事件消息作为输入接收并对其进行处理的示例 Go 代码。为了展示这个过程,代码会将一些传入的事件数据写入 CloudWatch Logs。
在代码中,handler 是处理程序。该处理程序使用了在 aws-lambda-go-events 库中定义的预定义 SQSEvent 类。
例 ProcessSQSRecords.go
package main
import (
"context"
"fmt"
"github.com/aws/aws-lambda-go/events"
"github.com/aws/aws-lambda-go/lambda"
)
func handler(ctx context.Context, sqsEvent events.SQSEvent) error {
for _, message := range sqsEvent.Records {
fmt.Printf("The message %s for event source %s = %s \n", message.MessageId, message.EventSource, message.Body)
}
return nil
}
func main() {
lambda.Start(handler)
}
使用 go build 构建可执行文件并创建部署程序包。有关说明,请参阅使用 .zip 文件存档部署 Go Lambda 函数。
Python
以下是将 Amazon SQS 记录作为输入接受并对其进行处理的示例 Python 代码。为了展示这个过程,代码会将一些传入的事件数据写入 CloudWatch Logs。
按照说明创建 AWS Lambda 函数部署程序包。
例 ProcessSQSRecords.py
from __future__ import print_function
def lambda_handler(event, context):
for record in event['Records']:
print ("test")
payload=record["body"]
print(str(payload))