kinesis-consumer/examples/s3/main.go

56 lines
964 B
Go
Raw Normal View History

package main
import (
"bytes"
"flag"
2016-02-09 03:39:09 +00:00
"fmt"
2016-05-01 17:42:28 +00:00
"os"
"github.com/apex/log"
2016-05-01 19:40:30 +00:00
"github.com/apex/log/handlers/text"
"github.com/harlow/kinesis-connectors"
2016-02-09 03:39:09 +00:00
"github.com/harlow/kinesis-connectors/emitter/s3"
)
func main() {
log.SetHandler(text.New(os.Stderr))
log.SetLevel(log.DebugLevel)
var (
app = flag.String("a", "", "App name")
bucket = flag.String("b", "", "Bucket name")
stream = flag.String("s", "", "Stream name")
)
flag.Parse()
2016-05-01 17:42:28 +00:00
e := &s3.Emitter{
2016-05-01 17:42:28 +00:00
Bucket: *bucket,
Region: "us-west-1",
}
c := connector.NewConsumer(connector.Config{
AppName: *app,
StreamName: *stream,
})
2016-05-01 17:42:28 +00:00
2016-02-09 03:39:09 +00:00
c.Start(connector.HandlerFunc(func(b connector.Buffer) {
body := new(bytes.Buffer)
for _, r := range b.GetRecords() {
body.Write(r.Data)
}
err := e.Emit(
2016-02-09 03:39:09 +00:00
s3.Key("", b.FirstSeq(), b.LastSeq()),
bytes.NewReader(body.Bytes()),
)
if err != nil {
2016-05-01 17:42:28 +00:00
fmt.Printf("error %s\n", err)
os.Exit(1)
2016-02-09 03:39:09 +00:00
}
}))
select {} // run forever
}