如何处理 S3 触发的 SQS 事件?
How to handle an SQS event that's triggered by S3?
我有一个 S3 存储桶,它会在添加对象时将消息分派到 SQS 队列。 return 中的 SQS 队列触发了一个 Lambda,该 Lambda 尝试使用其键检索最近添加的对象。
我的 Lambda 中的 FunctionHandler
方法看起来像这样:
public async Task FunctionHandler(S3EventNotification evnt, ILambdaContext context) {
// evnt.Records[0].S3 is null
}
我在这里处理的事件正确吗?我处理S3EventNotification
的原因是因为当我检查 SQS 队列中的消息时,它们的内容对应于S3EventNotification
事件类型 (see documentation here)。但是由于某种原因,我尝试访问的属性为空。
如果我尝试处理 SQSEvent
,我将无法获取我需要的对象键,以便能够从我的 S3 存储桶中获取相应的对象。
有什么想法吗?
您可能想在这里处理 SQSEvent
。我相信每个 event.records
都会有 body
属性 来举办最初的 S3 活动。它可能需要一些序列化。
类似于:
public class Function
{
public string Handler(SQSEvent sqsEvent)
{
foreach (var record in sqsEvent.Records)
{
// record.Body has your S3 event
}
}
}
出于兴趣,您是否考虑过直接从 S3 -> EventBridge -> Lambda?这样您就可以跳过 SQS 队列。
我有一个 S3 存储桶,它会在添加对象时将消息分派到 SQS 队列。 return 中的 SQS 队列触发了一个 Lambda,该 Lambda 尝试使用其键检索最近添加的对象。
我的 Lambda 中的 FunctionHandler
方法看起来像这样:
public async Task FunctionHandler(S3EventNotification evnt, ILambdaContext context) {
// evnt.Records[0].S3 is null
}
我在这里处理的事件正确吗?我处理S3EventNotification
的原因是因为当我检查 SQS 队列中的消息时,它们的内容对应于S3EventNotification
事件类型 (see documentation here)。但是由于某种原因,我尝试访问的属性为空。
如果我尝试处理 SQSEvent
,我将无法获取我需要的对象键,以便能够从我的 S3 存储桶中获取相应的对象。
有什么想法吗?
您可能想在这里处理 SQSEvent
。我相信每个 event.records
都会有 body
属性 来举办最初的 S3 活动。它可能需要一些序列化。
类似于:
public class Function
{
public string Handler(SQSEvent sqsEvent)
{
foreach (var record in sqsEvent.Records)
{
// record.Body has your S3 event
}
}
}
出于兴趣,您是否考虑过直接从 S3 -> EventBridge -> Lambda?这样您就可以跳过 SQS 队列。