forked from erikreppel/go-firehose
/
config.go
70 lines (53 loc) · 1.29 KB
/
config.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package firehose
import (
"log"
"time"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/firehose"
"github.com/aws/aws-sdk-go/service/firehose/firehoseiface"
"github.com/jpillora/backoff"
)
const (
maxBatchSize = 500
)
// Config ..
type Config struct {
// StreamName: the name of the Kinesis Firehose.
FireHoseName string
// Region is the AWS region of the Kinesis Firehose
Region string
// FlushInterval: how often to flush the buffer.
FlushInterval time.Duration
// BufferSize: the batch request size (cannot be greater than 500).
BufferSize int
// BacklogSize
BacklogSize int
// Backoff: strategy to use for failures.
Backoff backoff.Backoff
// Client is a firehose API instance
Client firehoseiface.FirehoseAPI
}
func (c *Config) defaults() {
if c.Region == "" {
log.Fatalln("Region is required")
}
if c.FireHoseName == "" {
log.Fatalln("StreamName required")
}
if c.Client == nil {
c.Client = firehose.New(session.New(), &aws.Config{Region: &c.Region})
}
if c.BufferSize == 0 {
c.BufferSize = maxBatchSize
}
if c.BufferSize > maxBatchSize {
log.Fatalln("BufferSize exceeds 500")
}
if c.BacklogSize == 0 {
c.BacklogSize = maxBatchSize
}
if c.FlushInterval == 0 {
c.FlushInterval = time.Second
}
}