Amazon SQS 関数コードのサンプル - AWS Lambda

Amazon SQS 関数コードのサンプル

サンプルコードは以下の言語で利用可能です。

トピック

Node.js

Amazon SQS イベントメッセージを入力として受け取り、それを処理するコードの例を以下に示します。例示のため、このコードでは受信イベントデータの一部を CloudWatch Logs に書き込みます。

例 index.js (Node.js 12)

exports.handler = async function(event, context) { event.Records.forEach(record => { const { body } = record; console.log(body); }); return {}; }

サンプルコードを zip ファイルに圧縮し、デプロイパッケージを作成します。手順については、.zip ファイルアーカイブで Node.js Lambda 関数をデプロイする を参照してください。

Java

Amazon SQS イベントメッセージを入力として受け取り、それを処理する Java コードの例を以下に示します。例示のため、このコードでは受信イベントデータの一部を CloudWatch Logs に書き込みます。

コードでは、handleRequest はハンドラーです。このハンドラーは、定義済みの SQSEvent クラスを使用します。このクラスは aws-lambda-java-events ライブラリで定義されています。

例 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<SQSEvent, Void>{ @Override public Void handleRequest(SQSEvent event, Context context) { for(SQSMessage msg : event.getRecords()){ System.out.println(new String(msg.getBody())); } return null; } }

Dependencies

  • aws-lambda-java-core

  • aws-lambda-java-events

Lambda ライブラリの依存関係を使ってコードを構築し、デプロイパッケージを作成します。手順については、「.zip または JAR ファイルアーカイブで Java Lambda 関数をデプロイする」を参照してください。

C#

Amazon SQS イベントメッセージを入力として受け取り、それを処理する C# コードの例を以下に示します。このコードでは説明のために、受信イベントデータの一部がコンソールに書き込まれます。

コードでは、handleRequest はハンドラーです。このハンドラーは、定義済みの SQSEvent クラスを使用します。このクラスは AWS.Lambda.SQSEvents ライブラリで定義されています。

例 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 関数をデプロイする を参照してください。

Go

Amazon SQS イベントメッセージを入力として受け取り、それを処理する Go コードの例を以下に示します。例示のため、このコードでは受信イベントデータの一部を CloudWatch Logs に書き込みます。

コードでは、handler はハンドラーです。このハンドラーは、定義済みの SQSEvent クラスを使用します。このクラスは aws-lambda-go-events ライブラリで定義されています。

例 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 に書き込みます。

例 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))

サンプルコードを zip ファイルに圧縮し、デプロイパッケージを作成します。手順については、.zip ファイルアーカイブで Python Lambda 関数をデプロイする を参照してください。