Согласно это , если я хочу создать лямбда-функцию для отправки данных из SQS в S3, каждое сообщение SQS будет храниться в отдельном объекте S3 (я предполагаю, что это связано с тем, что лямбда-функция будетактивировать каждый раз, когда SQS получает сообщение)
Можно ли, например, отправить все сообщения, полученные SQS за последние 24 часа, одному и тому же объекту S3?
EDIT
Это может быть код для получения сообщения из очереди и отправки его на S3
var receiveMessageRequest = new ReceiveMessageRequest { QueueUrl = myQueueUrl };
var receiveMessageResponse = sqs.ReceiveMessageAsync(receiveMessageRequest).GetAwaiter().GetResult(); ;
while (receiveMessageResponse.Messages.Count > 0)
{
if (receiveMessageResponse.Messages != null)
{
Console.WriteLine("Printing received message.\n");
foreach (var message in receiveMessageResponse.Messages)
{
if (!string.IsNullOrEmpty(message.Body))
{
<...> SEND TO S3
}
}
var messageRecieptHandle = receiveMessageResponse.Messages[0].ReceiptHandle;
//Deleting a message
Console.WriteLine("Deleting the message.\n");
var deleteRequest = new DeleteMessageRequest { QueueUrl = myQueueUrl, ReceiptHandle = messageRecieptHandle };
sqs.DeleteMessageAsync(deleteRequest).GetAwaiter().GetResult();
}
receiveMessageRequest = new ReceiveMessageRequest { QueueUrl = myQueueUrl };
receiveMessageResponse = sqs.ReceiveMessageAsync(receiveMessageRequest).GetAwaiter().GetResult();
}
Но какой вариант будет наилучшим для отправки на S3?Я имею в виду, что в S3 я бы заплатил, чтобы поместить запрос, и если бы я делал это элемент за элементом, это могло бы быть довольно неэффективным.уверен, что я должен использовать для лучшего результата
Другой вопрос: когда я разрабатывал локально, я использовал ReceiveMessage, но в лямбда-функции я должен использовать ReceiveMessageAsync, почему это?