fluent-plugin-kinesis 1.3.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +2 -23
- data/CHANGELOG.md +13 -0
- data/Gemfile +9 -9
- data/LICENSE.txt +201 -40
- data/Makefile +24 -31
- data/README.md +179 -308
- data/Rakefile +9 -13
- data/benchmark/task.rake +96 -58
- data/fluent-plugin-kinesis.gemspec +15 -19
- data/gemfiles/Gemfile.fluentd-0.12 +10 -10
- data/lib/fluent/plugin/kinesis.rb +166 -0
- data/lib/fluent/plugin/kinesis_helper/aggregator.rb +99 -0
- data/lib/fluent/plugin/kinesis_helper/api.rb +152 -121
- data/lib/fluent/plugin/kinesis_helper/client.rb +125 -12
- data/lib/fluent/plugin/out_kinesis_firehose.rb +40 -27
- data/lib/fluent/plugin/out_kinesis_streams.rb +51 -30
- data/lib/fluent/plugin/out_kinesis_streams_aggregated.rb +76 -0
- data/lib/fluent_plugin_kinesis/version.rb +10 -10
- metadata +18 -70
- data/README-v0.4.md +0 -348
- data/benchmark/dummy.conf +0 -0
- data/gemfiles/Gemfile.aws-sdk-2.4 +0 -20
- data/gemfiles/Gemfile.fluentd-0.10.58 +0 -20
- data/gemfiles/Gemfile.fluentd-0.14.11 +0 -20
- data/gemfiles/Gemfile.ruby-2.0 +0 -21
- data/gemfiles/Gemfile.ruby-2.1 +0 -21
- data/lib/fluent/plugin/kinesis_helper.rb +0 -36
- data/lib/fluent/plugin/kinesis_helper/class_methods.rb +0 -123
- data/lib/fluent/plugin/kinesis_helper/credentials.rb +0 -51
- data/lib/fluent/plugin/kinesis_helper/error.rb +0 -43
- data/lib/fluent/plugin/kinesis_helper/format.rb +0 -85
- data/lib/fluent/plugin/kinesis_helper/initialize.rb +0 -59
- data/lib/fluent/plugin/kinesis_helper/kpl.rb +0 -82
- data/lib/fluent/plugin/out_kinesis.rb +0 -323
- data/lib/fluent/plugin/out_kinesis_producer.rb +0 -48
- data/lib/fluent/plugin/patched_detach_process_impl.rb +0 -103
- data/lib/kinesis_producer.rb +0 -24
- data/lib/kinesis_producer/binary.rb +0 -10
- data/lib/kinesis_producer/daemon.rb +0 -270
- data/lib/kinesis_producer/library.rb +0 -122
- data/lib/kinesis_producer/protobuf/config.pb.rb +0 -66
- data/lib/kinesis_producer/protobuf/messages.pb.rb +0 -151
- data/lib/kinesis_producer/tasks/binary.rake +0 -73
@@ -1,44 +1,57 @@
|
|
1
1
|
#
|
2
|
-
#
|
2
|
+
# Copyright 2014-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
3
3
|
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
5
|
+
# may not use this file except in compliance with the License. A copy of
|
6
|
+
# the License is located at
|
7
7
|
#
|
8
|
-
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
9
|
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
10
|
+
# or in the "license" file accompanying this file. This file is
|
11
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
12
|
+
# ANY KIND, either express or implied. See the License for the specific
|
13
|
+
# language governing permissions and limitations under the License.
|
14
14
|
|
15
|
-
require 'fluent/plugin/
|
15
|
+
require 'fluent/plugin/kinesis'
|
16
16
|
|
17
17
|
module Fluent
|
18
|
-
class KinesisFirehoseOutput <
|
19
|
-
include KinesisHelper
|
18
|
+
class KinesisFirehoseOutput < KinesisOutput
|
20
19
|
Fluent::Plugin.register_output('kinesis_firehose', self)
|
21
|
-
config_param_for_firehose
|
22
20
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
21
|
+
RequestType = :firehose
|
22
|
+
BatchRequestLimitCount = 500
|
23
|
+
BatchRequestLimitSize = 4 * 1024 * 1024
|
24
|
+
include KinesisHelper::API::BatchRequest
|
25
|
+
|
26
|
+
config_param :delivery_stream_name, :string
|
27
|
+
config_param :append_new_line, :bool, default: true
|
28
|
+
|
29
|
+
def configure(conf)
|
30
|
+
super
|
31
|
+
if @append_new_line
|
32
|
+
org_data_formatter = @data_formatter
|
33
|
+
@data_formatter = ->(tag, time, record) {
|
34
|
+
org_data_formatter.call(tag, time, record) + "\n"
|
35
|
+
}
|
27
36
|
end
|
28
|
-
log.debug("Written #{records.size} records")
|
29
37
|
end
|
30
38
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
39
|
+
def format(tag, time, record)
|
40
|
+
format_for_api do
|
41
|
+
[@data_formatter.call(tag, time, record)]
|
42
|
+
end
|
35
43
|
end
|
36
44
|
|
37
|
-
def
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
45
|
+
def write(chunk)
|
46
|
+
write_records_batch(chunk) do |batch|
|
47
|
+
records = batch.map{|(data)|
|
48
|
+
{ data: data }
|
49
|
+
}
|
50
|
+
client.put_record_batch(
|
51
|
+
delivery_stream_name: @delivery_stream_name,
|
52
|
+
records: records,
|
53
|
+
)
|
54
|
+
end
|
42
55
|
end
|
43
56
|
end
|
44
57
|
end
|
@@ -1,48 +1,69 @@
|
|
1
1
|
#
|
2
|
-
#
|
2
|
+
# Copyright 2014-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
3
3
|
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
5
|
+
# may not use this file except in compliance with the License. A copy of
|
6
|
+
# the License is located at
|
7
7
|
#
|
8
|
-
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
9
|
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
10
|
+
# or in the "license" file accompanying this file. This file is
|
11
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
12
|
+
# ANY KIND, either express or implied. See the License for the specific
|
13
|
+
# language governing permissions and limitations under the License.
|
14
14
|
|
15
|
-
require 'fluent/plugin/
|
15
|
+
require 'fluent/plugin/kinesis'
|
16
16
|
|
17
17
|
module Fluent
|
18
|
-
class KinesisStreamsOutput <
|
19
|
-
include KinesisHelper
|
18
|
+
class KinesisStreamsOutput < KinesisOutput
|
20
19
|
Fluent::Plugin.register_output('kinesis_streams', self)
|
21
|
-
|
20
|
+
|
21
|
+
RequestType = :streams
|
22
|
+
BatchRequestLimitCount = 500
|
23
|
+
BatchRequestLimitSize = 5 * 1024 * 1024
|
24
|
+
include KinesisHelper::API::BatchRequest
|
25
|
+
|
26
|
+
config_param :stream_name, :string
|
27
|
+
config_param :partition_key, :string, default: nil
|
28
|
+
|
29
|
+
def configure(conf)
|
30
|
+
super
|
31
|
+
@key_formatter = key_formatter_create
|
32
|
+
end
|
33
|
+
|
34
|
+
def format(tag, time, record)
|
35
|
+
format_for_api do
|
36
|
+
data = @data_formatter.call(tag, time, record)
|
37
|
+
key = @key_formatter.call(record)
|
38
|
+
[data, key]
|
39
|
+
end
|
40
|
+
end
|
22
41
|
|
23
42
|
def write(chunk)
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
43
|
+
write_records_batch(chunk) do |batch|
|
44
|
+
records = batch.map{|(data, partition_key)|
|
45
|
+
{ data: data, partition_key: partition_key }
|
46
|
+
}
|
47
|
+
client.put_records(
|
48
|
+
stream_name: @stream_name,
|
49
|
+
records: records,
|
50
|
+
)
|
28
51
|
end
|
29
|
-
log.debug("Written #{records.size} records")
|
30
52
|
end
|
31
53
|
|
32
54
|
private
|
33
55
|
|
34
|
-
def
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
)
|
56
|
+
def key_formatter_create
|
57
|
+
if @partition_key.nil?
|
58
|
+
->(record) { SecureRandom.hex(16) }
|
59
|
+
else
|
60
|
+
->(record) {
|
61
|
+
if !record.key?(@partition_key)
|
62
|
+
raise KeyNotFoundError.new(@partition_key, record)
|
63
|
+
end
|
64
|
+
record[@partition_key]
|
65
|
+
}
|
66
|
+
end
|
46
67
|
end
|
47
68
|
end
|
48
69
|
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
#
|
2
|
+
# Copyright 2014-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
5
|
+
# may not use this file except in compliance with the License. A copy of
|
6
|
+
# the License is located at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# or in the "license" file accompanying this file. This file is
|
11
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
12
|
+
# ANY KIND, either express or implied. See the License for the specific
|
13
|
+
# language governing permissions and limitations under the License.
|
14
|
+
|
15
|
+
require 'fluent/plugin/kinesis'
|
16
|
+
require 'fluent/plugin/kinesis_helper/aggregator'
|
17
|
+
|
18
|
+
module Fluent
|
19
|
+
class KinesisStreamsAggregatedOutput < KinesisOutput
|
20
|
+
Fluent::Plugin.register_output('kinesis_streams_aggregated', self)
|
21
|
+
include KinesisHelper::Aggregator::Mixin
|
22
|
+
|
23
|
+
RequestType = :streams_aggregated
|
24
|
+
BatchRequestLimitCount = 100_000
|
25
|
+
BatchRequestLimitSize = 1024 * 1024
|
26
|
+
include KinesisHelper::API::BatchRequest
|
27
|
+
|
28
|
+
config_param :stream_name, :string
|
29
|
+
config_param :fixed_partition_key, :string, default: nil
|
30
|
+
|
31
|
+
def configure(conf)
|
32
|
+
super
|
33
|
+
@partition_key_generator = create_partition_key_generator
|
34
|
+
@batch_request_max_size -= offset
|
35
|
+
@max_record_size -= offset
|
36
|
+
end
|
37
|
+
|
38
|
+
def format(tag, time, record)
|
39
|
+
format_for_api do
|
40
|
+
[@data_formatter.call(tag, time, record)]
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def write(chunk)
|
45
|
+
write_records_batch(chunk) do |batch|
|
46
|
+
key = @partition_key_generator.call
|
47
|
+
records = batch.map{|(data)|data}
|
48
|
+
client.put_records(
|
49
|
+
stream_name: @stream_name,
|
50
|
+
records: [{
|
51
|
+
partition_key: key,
|
52
|
+
data: aggregator.aggregate(records, key),
|
53
|
+
}],
|
54
|
+
)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def offset
|
59
|
+
@offset ||= AggregateOffset + @partition_key_generator.call.size*2
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
def size_of_values(record)
|
65
|
+
super(record) + RecordOffset
|
66
|
+
end
|
67
|
+
|
68
|
+
def create_partition_key_generator
|
69
|
+
if @fixed_partition_key.nil?
|
70
|
+
->() { SecureRandom.hex(16) }
|
71
|
+
else
|
72
|
+
->() { @fixed_partition_key }
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
@@ -1,17 +1,17 @@
|
|
1
1
|
#
|
2
|
-
#
|
2
|
+
# Copyright 2014-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
3
3
|
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
5
|
+
# may not use this file except in compliance with the License. A copy of
|
6
|
+
# the License is located at
|
7
7
|
#
|
8
|
-
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
9
|
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
10
|
+
# or in the "license" file accompanying this file. This file is
|
11
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
12
|
+
# ANY KIND, either express or implied. See the License for the specific
|
13
|
+
# language governing permissions and limitations under the License.
|
14
14
|
|
15
15
|
module FluentPluginKinesis
|
16
|
-
VERSION = '
|
16
|
+
VERSION = '2.0.0'
|
17
17
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-kinesis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Amazon Web Services
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-09-
|
11
|
+
date: 2017-09-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|
@@ -16,7 +16,7 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.12.35
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: '2'
|
@@ -26,40 +26,26 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.
|
29
|
+
version: 0.12.35
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '2'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
|
-
name:
|
35
|
-
requirement: !ruby/object:Gem::Requirement
|
36
|
-
requirements:
|
37
|
-
- - ">="
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: 3.5.5
|
40
|
-
type: :runtime
|
41
|
-
prerelease: false
|
42
|
-
version_requirements: !ruby/object:Gem::Requirement
|
43
|
-
requirements:
|
44
|
-
- - ">="
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: 3.5.5
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: aws-sdk
|
34
|
+
name: aws-sdk-kinesis
|
49
35
|
requirement: !ruby/object:Gem::Requirement
|
50
36
|
requirements:
|
51
37
|
- - "~>"
|
52
38
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
39
|
+
version: '1'
|
54
40
|
type: :runtime
|
55
41
|
prerelease: false
|
56
42
|
version_requirements: !ruby/object:Gem::Requirement
|
57
43
|
requirements:
|
58
44
|
- - "~>"
|
59
45
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
46
|
+
version: '1'
|
61
47
|
- !ruby/object:Gem::Dependency
|
62
|
-
name:
|
48
|
+
name: aws-sdk-firehose
|
63
49
|
requirement: !ruby/object:Gem::Requirement
|
64
50
|
requirements:
|
65
51
|
- - "~>"
|
@@ -73,19 +59,19 @@ dependencies:
|
|
73
59
|
- !ruby/object:Gem::Version
|
74
60
|
version: '1'
|
75
61
|
- !ruby/object:Gem::Dependency
|
76
|
-
name:
|
62
|
+
name: google-protobuf
|
77
63
|
requirement: !ruby/object:Gem::Requirement
|
78
64
|
requirements:
|
79
|
-
- - "
|
65
|
+
- - "~>"
|
80
66
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
67
|
+
version: '3'
|
82
68
|
type: :runtime
|
83
69
|
prerelease: false
|
84
70
|
version_requirements: !ruby/object:Gem::Requirement
|
85
71
|
requirements:
|
86
|
-
- - "
|
72
|
+
- - "~>"
|
87
73
|
- !ruby/object:Gem::Version
|
88
|
-
version:
|
74
|
+
version: '3'
|
89
75
|
- !ruby/object:Gem::Dependency
|
90
76
|
name: bundler
|
91
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -198,20 +184,6 @@ dependencies:
|
|
198
184
|
- - ">="
|
199
185
|
- !ruby/object:Gem::Version
|
200
186
|
version: 0.0.2
|
201
|
-
- !ruby/object:Gem::Dependency
|
202
|
-
name: rubyzip
|
203
|
-
requirement: !ruby/object:Gem::Requirement
|
204
|
-
requirements:
|
205
|
-
- - ">="
|
206
|
-
- !ruby/object:Gem::Version
|
207
|
-
version: 1.0.0
|
208
|
-
type: :development
|
209
|
-
prerelease: false
|
210
|
-
version_requirements: !ruby/object:Gem::Requirement
|
211
|
-
requirements:
|
212
|
-
- - ">="
|
213
|
-
- !ruby/object:Gem::Version
|
214
|
-
version: 1.0.0
|
215
187
|
- !ruby/object:Gem::Dependency
|
216
188
|
name: mocha
|
217
189
|
requirement: !ruby/object:Gem::Requirement
|
@@ -268,46 +240,22 @@ files:
|
|
268
240
|
- LICENSE.txt
|
269
241
|
- Makefile
|
270
242
|
- NOTICE.txt
|
271
|
-
- README-v0.4.md
|
272
243
|
- README.md
|
273
244
|
- Rakefile
|
274
|
-
- amazon-kinesis-producer-native-binaries/linux/kinesis_producer
|
275
|
-
- amazon-kinesis-producer-native-binaries/osx/kinesis_producer
|
276
|
-
- amazon-kinesis-producer-native-binaries/windows/kinesis_producer.exe
|
277
|
-
- benchmark/dummy.conf
|
278
245
|
- benchmark/task.rake
|
279
246
|
- fluent-plugin-kinesis.gemspec
|
280
|
-
- gemfiles/Gemfile.aws-sdk-2.4
|
281
|
-
- gemfiles/Gemfile.fluentd-0.10.58
|
282
247
|
- gemfiles/Gemfile.fluentd-0.12
|
283
|
-
-
|
284
|
-
-
|
285
|
-
- gemfiles/Gemfile.ruby-2.1
|
286
|
-
- lib/fluent/plugin/kinesis_helper.rb
|
248
|
+
- lib/fluent/plugin/kinesis.rb
|
249
|
+
- lib/fluent/plugin/kinesis_helper/aggregator.rb
|
287
250
|
- lib/fluent/plugin/kinesis_helper/api.rb
|
288
|
-
- lib/fluent/plugin/kinesis_helper/class_methods.rb
|
289
251
|
- lib/fluent/plugin/kinesis_helper/client.rb
|
290
|
-
- lib/fluent/plugin/kinesis_helper/credentials.rb
|
291
|
-
- lib/fluent/plugin/kinesis_helper/error.rb
|
292
|
-
- lib/fluent/plugin/kinesis_helper/format.rb
|
293
|
-
- lib/fluent/plugin/kinesis_helper/initialize.rb
|
294
|
-
- lib/fluent/plugin/kinesis_helper/kpl.rb
|
295
|
-
- lib/fluent/plugin/out_kinesis.rb
|
296
252
|
- lib/fluent/plugin/out_kinesis_firehose.rb
|
297
|
-
- lib/fluent/plugin/out_kinesis_producer.rb
|
298
253
|
- lib/fluent/plugin/out_kinesis_streams.rb
|
299
|
-
- lib/fluent/plugin/
|
254
|
+
- lib/fluent/plugin/out_kinesis_streams_aggregated.rb
|
300
255
|
- lib/fluent_plugin_kinesis/version.rb
|
301
|
-
- lib/kinesis_producer.rb
|
302
|
-
- lib/kinesis_producer/binary.rb
|
303
|
-
- lib/kinesis_producer/daemon.rb
|
304
|
-
- lib/kinesis_producer/library.rb
|
305
|
-
- lib/kinesis_producer/protobuf/config.pb.rb
|
306
|
-
- lib/kinesis_producer/protobuf/messages.pb.rb
|
307
|
-
- lib/kinesis_producer/tasks/binary.rake
|
308
256
|
homepage: https://github.com/awslabs/aws-fluent-plugin-kinesis
|
309
257
|
licenses:
|
310
|
-
-
|
258
|
+
- Apache-2.0
|
311
259
|
metadata: {}
|
312
260
|
post_install_message:
|
313
261
|
rdoc_options: []
|
@@ -317,7 +265,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
317
265
|
requirements:
|
318
266
|
- - ">="
|
319
267
|
- !ruby/object:Gem::Version
|
320
|
-
version: 2.
|
268
|
+
version: '2.1'
|
321
269
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
322
270
|
requirements:
|
323
271
|
- - ">="
|