Кажется, что для этого экземпляра очередь будет избыточной, но вы определенно можете использовать для этого Simple Queue Service.
Когда вы вставляете элемент в SQS, вы можете настроить его на использование функции Lambda. сработать и вытащить элемент из очереди и обработать его. Здесь - хорошее руководство от AWS о том, как это можно сделать. .NET SDK также содержит некоторую приличную документацию и примеры использования SQS.
Но, если бы это был я, я бы, вероятно, выбрал бы использование Dynamo Stream для запуска лямбда-функции. По сути, после вставки строки вы можете запустить лямбда-функцию для выполнения и обработки некоторых данных. Таким образом, в вашем случае после вставки вы можете активировать функцию отправки электронного письма этому пользователю, используя данные из этой строки.
Это пример лямбда-кода, который будет выполняться.
using System;
using System.IO;
using System.Threading.Tasks;
using Amazon.DynamoDBv2.Model;
using Amazon.Lambda.Core;
using Amazon.Lambda.DynamoDBEvents;
using Newtonsoft.Json;
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.Json.JsonSerializer))]
namespace LocalDynamoDbStream
{
public class Function
{
private static readonly JsonSerializer JsonSerializer = new JsonSerializer();
public Task FunctionHandler(DynamoDBEvent dynamoEvent, ILambdaContext context)
{
context.Logger.LogLine($"Beginning to process {dynamoEvent.Records.Count} records...");
foreach (var record in dynamoEvent.Records)
{
context.Logger.LogLine($"Event ID: {record.EventID}");
context.Logger.LogLine($"Event Name: {record.EventName}");
var streamRecordJson = SerializeStreamRecord(record.Dynamodb);
context.Logger.LogLine("DynamoDB Record:");
context.Logger.LogLine(streamRecordJson);
// Do your email here using data from new inserted row
var email = record.Dynamodb.NewImage["email"].S;
await _emailService.Send(email).ConfigureAwait(false);
}
context.Logger.LogLine("Stream processing complete.");
return Task.CompletedTask;
}
private static string SerializeStreamRecord(StreamRecord streamRecord)
{
using (var writer = new StringWriter())
{
JsonSerializer.Serialize(writer, streamRecord);
return writer.ToString();
}
}
}
}
Подробнее здесь .