kinesis-consumer/emitters/s3_manifest_emitter.go
Harlow Ward 4e909185d1 Add Record Processor
* Add GetRecords function to Kinesis Utils
* Add sample .env to showcase ENV vars needed
* Fix RedisCheckpoint to look for empty string (default from Redis)
* Extract example code into its own repository
2014-08-03 20:11:48 -07:00

30 lines
684 B
Go

package emitters
import (
"fmt"
"github.com/harlow/go-etl/interfaces"
"github.com/sendgridlabs/go-kinesis"
)
type S3ManifestEmitter struct {
OutputStream string
S3Bucket string
Ksis *kinesis.Kinesis
}
func (e S3ManifestEmitter) Emit(buffer interfaces.Buffer) {
s3Emitter := S3Emitter{S3Bucket: e.S3Bucket}
s3Emitter.Emit(buffer)
s3File := s3Emitter.S3FileName(buffer.FirstSequenceNumber(), buffer.LastSequenceNumber())
args := kinesis.NewArgs()
args.Add("StreamName", e.OutputStream)
args.Add("PartitionKey", s3File)
args.AddData([]byte(s3File))
_, err := e.Ksis.PutRecord(args)
if err != nil {
fmt.Printf("S3 Manifest Emitter Error: %v", err)
}
}