相关疑难解决方法(0)

如何在Golang的AWS Lambda中支持多个触发器?

我正在Golang中构建一个AWS Lambda函数,该函数将内容从n复制到m个S3存储桶。需要支持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)
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,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 …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 go amazon-web-services aws-lambda aws-sdk-go

6
推荐指数
2
解决办法
3035
查看次数