// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.// SPDX-License-Identifier: Apache-2.0
using Amazon.Lambda.Core;
using Amazon.Lambda.SQSEvents;
// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]
namespaceSqsIntegrationSampleCode{publicasync Task FunctionHandler(SQSEvent evnt, ILambdaContext context){foreach (var message in evnt.Records)
{await ProcessMessageAsync(message, context);
}
context.Logger.LogInformation("done");
}
privateasync Task ProcessMessageAsync(SQSEvent.SQSMessage message, ILambdaContext context){try{
context.Logger.LogInformation($"Processed message {message.Body}");
// TODO: Do interesting work based on the new messageawait Task.CompletedTask;
}
catch (Exception e)
{//You can use Dead Letter Queue to handle failures. By configuring a Lambda DLQ.
context.Logger.LogError($"An error occurred");
throw;
}
}
}
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.// SPDX-License-Identifier: Apache-2.0package integration_sqs_to_lambda
import (
"fmt""github.com/aws/aws-lambda-go/events""github.com/aws/aws-lambda-go/lambda"
)
funchandler(event events.SQSEvent)error{for _, record := range event.Records {
err := processMessage(record)
if err != nil{return err
}
}
fmt.Println("done")
returnnil
}
funcprocessMessage(record events.SQSMessage)error{
fmt.Printf("Processed message %s\n", record.Body)
// TODO: Do interesting work based on the new messagereturnnil
}
funcmain(){
lambda.Start(handler)
}
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.// SPDX-License-Identifier: Apache-2.0exports.handler = async (event, context) => {for (const message of event.Records) {await processMessageAsync(message);
}
console.info("done");
};
asyncfunctionprocessMessageAsync(message) {try{console.log(`Processed message ${message.body}`);
// TODO: Do interesting work based on the new messageawaitPromise.resolve(1); //Placeholder for actual async work
} catch (err) {console.error("An error occurred");
throw err;
}
}
使用 TypeScript 搭配 Lambda 來使用 SQS 事件。
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.// SPDX-License-Identifier: Apache-2.0import{ SQSEvent, Context, SQSHandler, SQSRecord } from"aws-lambda";
exportconst functionHandler: SQSHandler = async (
event: SQSEvent,
context: Context
): Promise<void> => {for (const message of event.Records) {await processMessageAsync(message);
}
console.info("done");
};
asyncfunctionprocessMessageAsync(message: SQSRecord): Promise<any> {try{console.log(`Processed message ${message.body}`);
// TODO: Do interesting work based on the new messageawaitPromise.resolve(1); //Placeholder for actual async work
} catch (err) {console.error("An error occurred");
throw err;
}
}
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.// SPDX-License-Identifier: Apache-2.0<?php# using bref/bref and bref/logger for simplicityuseBref\Context\Context;
useBref\Event\InvalidLambdaEvent;
useBref\Event\Sqs\SqsEvent;
useBref\Event\Sqs\SqsHandler;
useBref\Logger\StderrLogger;
require__DIR__ . '/vendor/autoload.php';
classHandlerextendsSqsHandler{private StderrLogger $logger;
publicfunction__construct(StderrLogger $logger)
{$this->logger = $logger;
}
/**
* @throws InvalidLambdaEvent
*/publicfunctionhandleSqs(SqsEvent $event, Context $context): void{foreach ($event->getRecords() as$record) {$body = $record->getBody();
// TODO: Do interesting work based on the new message
}
}
}
$logger = new StderrLogger();
returnnew Handler($logger);
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.# SPDX-License-Identifier: Apache-2.0deflambda_handler(event, context):for message in event['Records']:
process_message(message)
print("done")
defprocess_message(message):try:
print(f"Processed message {message['body']}")
# TODO: Do interesting work based on the new messageexcept Exception as err:
print("An error occurred")
raise err
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.# SPDX-License-Identifier: Apache-2.0deflambda_handler(event:, context:)
event['Records'].each do|message|
process_message(message)
end
puts "done"enddefprocess_message(message)begin
puts "Processed message #{message['body']}"# TODO: Do interesting work based on the new messagerescue StandardError => err
puts "An error occurred"
raise err
endend
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.// SPDX-License-Identifier: Apache-2.0use aws_lambda_events::event::sqs::SqsEvent;
use lambda_runtime::{run, service_fn, Error, LambdaEvent};
asyncfnfunction_handler(event: LambdaEvent<SqsEvent>) -> Result<(), Error> {
event.payload.records.iter().for_each(|record| {// process the record
tracing::info!("Message body: {}", record.body.as_deref().unwrap_or_default())
});
Ok(())
}
#[tokio::main]asyncfnmain() -> Result<(), Error> {
tracing_subscriber::fmt()
.with_max_level(tracing::Level::INFO)
// disable printing the name of the module in every log line.
.with_target(false)
// disabling time is handy because CloudWatch will add the ingestion time.
.without_time()
.init();
run(service_fn(function_handler)).await
}
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.// SPDX-License-Identifier: Apache-2.0
using Amazon.Lambda.Core;
using Amazon.Lambda.SQSEvents;
// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]
namespaceSqsIntegrationSampleCode{publicasync Task FunctionHandler(SQSEvent evnt, ILambdaContext context){foreach (var message in evnt.Records)
{await ProcessMessageAsync(message, context);
}
context.Logger.LogInformation("done");
}
privateasync Task ProcessMessageAsync(SQSEvent.SQSMessage message, ILambdaContext context){try{
context.Logger.LogInformation($"Processed message {message.Body}");
// TODO: Do interesting work based on the new messageawait Task.CompletedTask;
}
catch (Exception e)
{//You can use Dead Letter Queue to handle failures. By configuring a Lambda DLQ.
context.Logger.LogError($"An error occurred");
throw;
}
}
}