如何在Go中创建AWS Lambda以处理多个事件

如何在Go中创建AWS Lambda以处理多个事件

问题描述:

I need to implement the AWS Lambda handler to handle AWS S3Events & SNSEvent, any solution?

Already I checked this answer, How to support more than one trigger in AWS Lambda in Golang?

But that's doesn't work for me.

According to this document you could hanlde your custom event. So you can create custom event which includes S3Entity and SNSEntity

type Record struct {
   EventVersion         string           `json:"EventVersion"`
   EventSubscriptionArn string           `json:"EventSubscriptionArn"`
   EventSource          string           `json:"EventSource"`
   SNS                  events.SNSEntity `json:"Sns"`
   S3                   events.S3Entity  `json:"s3"`
}

type Event struct {
    Records []Record `json:"Records"`
}

Then check the EventSource

func handler(event Event) error {
   if len(event.Records) > 0 {
    if event.Records[0].EventSource == "aws:sns" {
       //Do Something
    } else {
       //Do Something
    }
  }

  return nil
}