Я новичок в AWS, и в настоящее время я отправляю данные из DyanmoDB с использованием TTL в AWS Lambda, а затем в конечную точку. Мой менеджер хочет, чтобы я справился с ситуацией, когда Lambda выдает какое-то исключение, поэтому не может доставить события в конечную точку.
В случае исключения из Lambda он хочет, чтобы я отправил запись обратно в таблицу DynamoDB. Я уверен, что это можно сделать с помощью команды Put-Item
. Но я хочу знать, есть ли какое-либо готовое решение, которое предоставляет Lambda, с которым я могу обработать состояние сбоя и обработать полученные данные события, и, таким образом, не потерять записи из потока DyanmoDB во время исключения. При этом мне не нужно будет отправлять данные обратно в DynamoDB.
Ниже приведен рабочий код для AWS Lambda
public class Function
{
private JsonSerializer _jsonSerializer = new JsonSerializer();
private readonly IQueueClient client;
public async Task FunctionHandler(DynamoDBEvent dynamoEvent, ILambdaContext context)
{
try
{
foreach (var record in dynamoEvent.Records)
{
try
{
if (record.EventName == OperationType.REMOVE)
{
context.Logger.LogLine("Calling SerializeStreamRecord function");
string streamRecordJson = SerializeStreamRecord(record.Dynamodb);
Debug.Write(streamRecordJson);
await SendAsync(streamRecordJson, context);
context.Logger.LogLine("Data Sent");
}
}
catch (Exception ex)
{
throw ex;
}
}
}
catch (Exception ex)
{
context.Logger.LogLine("Exception Occurred" + ex.Message);
}
context.Logger.LogLine("Stream processing complete.");
}
private async Task SendAsync(string stream, ILambdaContext context)
{
try
{
var message = new Message(Encoding.UTF8.GetBytes(stream));
await client.SendAsync(message); // SEND MESSAGE
}
catch (Exception ex)
{
throw ex;
}
}
private string SerializeStreamRecord(StreamRecord streamRecord)
{
try
{
using (var writer = new StringWriter())
{
_jsonSerializer.Serialize(writer, streamRecord);
return writer.ToString();
}
}
catch (Exception ex)
{
throw ex;
}
}
}