我正在 Golang 中构建一个 AWS Lambda 函数,它将内容从 n 个 S3 存储桶复制到 m 个。需要支持 S3 触发器以及从存储所有源 S3 存储桶更改的 SQS 获取数据。代码可以在这里找到:https ://github.com/maknahar/s3copy
我试过以下:
func main() {
lambda.Start(ProcessIncomingS3Events)
lambda.Start(ProcessIncomingEvents)
}
func ProcessIncomingS3Events(event events.S3Event) error {
...
log.Println("Got S3 Event")
return processS3Trigger(config, event)
}
func ProcessIncomingEvents() error {
...
log.Println("Defaulting to SQS")
return processSQSMessage(config)
}
在这种情况下,ProcessIncomingS3Events
每次都会触发第一个事件。
我也尝试过
func main() {
lambda.Start(ProcessIncomingEvents)
}
func ProcessIncomingEvents(event interface{}) error {
...
switch request := event.(type) {
case events.S3Event:
log.Println("Got S3 Event")
return processS3Trigger(config, request)
case types.Nil:
log.Println("Defaulting to SQS")
return processSQSMessage(config)
default:
log.Println("Could not find the event type")
}
return nil
}
在这种情况下,Lambda 无法检测到类型并Could not find the event type
记录在每个触发器中。
有没有办法通过 AWS SDK 支持多个触发器的功能?