Skip to content

Instantly share code, notes, and snippets.

@tuladhar
Last active October 24, 2020 05:23
Show Gist options
  • Save tuladhar/45a1efad77b05eb266272f1b4e88fa7c to your computer and use it in GitHub Desktop.
Save tuladhar/45a1efad77b05eb266272f1b4e88fa7c to your computer and use it in GitHub Desktop.
package main
import (
"time"
"encoding/json"
"github.com/aws/aws-lambda-go/lambda"
"github.com/aws/aws-lambda-go/events"
)
type ElastiCacheEvent struct {
EventName string
EventMessage string
EventDescription string
EventTimestamp time.Time
}
func process(record events.SNSEventRecord) (ElastiCacheEvent, error) {
var e ElastiCacheEvent
var snsMessage map[string]string
err := json.Unmarshal([]byte(record.SNS.Message), &snsMessage)
if err != nil {
return e, err
}
eventTimestamp := record.SNS.Timestamp
location, err := time.LoadLocation("Asia/Kathmandu")
if err != nil {
return e, err
}
eventTimestamp = eventTimestamp.In(location)
for eventName, eventMessage := range snsMessage {
e.EventName = eventName
e.EventMessage = eventMessage
e.EventTimestamp = eventTimestamp
}
return e, nil
}
func handler(snsEvent events.SNSEvent) (error) {
for _, record := range snsEvent.Records {
event, err := process(record)
if err != nil {
return err
}
}
return nil
}
func main() {
lambda.Start(handler)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment