logstash-input-kinesis 2.0.8-java → 2.0.10-java
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/CHANGELOG.md +6 -0
- data/README.md +5 -0
- data/lib/logstash/inputs/kinesis.rb +15 -1
- data/lib/logstash/inputs/kinesis/version.rb +1 -1
- data/spec/inputs/kinesis_spec.rb +71 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e043e41cda349ab19d8a7d315d12053e85720655957ecdd2bfa14c8004b3f251
|
4
|
+
data.tar.gz: 7f45606c39c9afe600125b147426fc6187ffccff94a8b202cda6c4e51391393e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2a49ae6fee952b540b522dca5cbab79cbdaabf68c2e9e628f1f88fbeea3b89f0bf4f03e8dfea65284d9125d68365e702536ee096dc161bcedb8eb9fe15120ba3
|
7
|
+
data.tar.gz: 67fa5c368c1924e31d3a47ad4082d06c957ade7c6d36e7d8023e54cd06a113bf1f2bd4de84d426bb68911f3a1f36e7eb5dc1ff73bb14cf5803554b7a5c621b21
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
## 2.0.10
|
2
|
+
- Added the ability to set additional settings exposed through KinesisClientLibConfiguration [#51](https://github.com/logstash-plugins/logstash-input-kinesis/pull/51)
|
3
|
+
|
4
|
+
## 2.0.9
|
5
|
+
- Changed the 'workerid' to also include the host of the Logstash node [#48](https://github.com/logstash-plugins/logstash-input-kinesis/pull/48)
|
6
|
+
|
1
7
|
## 2.0.8
|
2
8
|
- Changed plugin to use more recent versions of Kinesis Client library and AWS SDK[#45](https://github.com/logstash-plugins/logstash-input-kinesis/pull/45)
|
3
9
|
|
data/README.md
CHANGED
@@ -53,6 +53,11 @@ This are the properties you can configure and what are the default values:
|
|
53
53
|
* **required**: false
|
54
54
|
* **default value**: `"TRIM_HORIZON"`
|
55
55
|
|
56
|
+
### Additional KCL Settings
|
57
|
+
* `additional_settings`: The KCL provides several configuration options which can be set in [KinesisClientLibConfiguration](https://github.com/awslabs/amazon-kinesis-client/blob/master/amazon-kinesis-client-multilang/src/main/java/software/amazon/kinesis/coordinator/KinesisClientLibConfiguration.java). These options are configured via various function calls that all begin with `with`. Some of these functions take complex types, which are not supported. However, you may invoke any one of the `withX()` functions that take a primitive by providing key-value pairs in `snake_case`. For example, to set the dynamodb read and write capacity values, two functions exist, withInitialLeaseTableReadCapacity and withInitialLeaseTableWriteCapacity. To set a value for these, provide a hash of `additional_settings => {"initial_lease_table_read_capacity" => 25, "initial_lease_table_write_capacity" => 100}`
|
58
|
+
* **required**: false
|
59
|
+
* **default value**: `{}`
|
60
|
+
|
56
61
|
## Authentication
|
57
62
|
|
58
63
|
This plugin uses the default AWS SDK auth chain, [DefaultAWSCredentialsProviderChain](https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/DefaultAWSCredentialsProviderChain.html), to determine which credentials the client will use, unless `profile` is set, in which case [ProfileCredentialsProvider](http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/auth/profile/ProfileCredentialsProvider.html) is used.
|
@@ -1,4 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
|
3
|
+
require "socket"
|
2
4
|
require "logstash/inputs/base"
|
3
5
|
require "logstash/errors"
|
4
6
|
require "logstash/environment"
|
@@ -56,6 +58,9 @@ class LogStash::Inputs::Kinesis < LogStash::Inputs::Base
|
|
56
58
|
# Select initial_position_in_stream. Accepts TRIM_HORIZON or LATEST
|
57
59
|
config :initial_position_in_stream, :validate => ["TRIM_HORIZON", "LATEST"], :default => "TRIM_HORIZON"
|
58
60
|
|
61
|
+
# Any additional arbitrary kcl options configurable in the KinesisClientLibConfiguration
|
62
|
+
config :additional_settings, :validate => :hash, :default => {}
|
63
|
+
|
59
64
|
def initialize(params = {})
|
60
65
|
super(params)
|
61
66
|
end
|
@@ -69,7 +74,9 @@ class LogStash::Inputs::Kinesis < LogStash::Inputs::Base
|
|
69
74
|
kinesis_logger.setLevel(org.apache.log4j::Level::WARN)
|
70
75
|
end
|
71
76
|
|
72
|
-
|
77
|
+
hostname = Socket.gethostname
|
78
|
+
uuid = java.util::UUID.randomUUID.to_s
|
79
|
+
worker_id = "#{hostname}:#{uuid}"
|
73
80
|
|
74
81
|
# If the AWS profile is set, use the profile credentials provider.
|
75
82
|
# Otherwise fall back to the default chain.
|
@@ -91,6 +98,13 @@ class LogStash::Inputs::Kinesis < LogStash::Inputs::Base
|
|
91
98
|
worker_id).
|
92
99
|
withInitialPositionInStream(initial_position_in_stream).
|
93
100
|
withRegionName(@region)
|
101
|
+
|
102
|
+
# Call arbitrary "withX()" functions
|
103
|
+
# snake_case => withCamelCase happens automatically
|
104
|
+
@additional_settings.each do |key, value|
|
105
|
+
fn = "with_#{key}"
|
106
|
+
@kcl_config.send(fn, value)
|
107
|
+
end
|
94
108
|
end
|
95
109
|
|
96
110
|
def run(output_queue)
|
data/spec/inputs/kinesis_spec.rb
CHANGED
@@ -38,6 +38,50 @@ RSpec.describe "inputs/kinesis" do
|
|
38
38
|
"initial_position_in_stream" => "LATEST"
|
39
39
|
}}
|
40
40
|
|
41
|
+
# Config hash to test valid additional_settings
|
42
|
+
let(:config_with_valid_additional_settings) {{
|
43
|
+
"application_name" => "my-processor",
|
44
|
+
"kinesis_stream_name" => "run-specs",
|
45
|
+
"codec" => codec,
|
46
|
+
"metrics" => metrics,
|
47
|
+
"checkpoint_interval_seconds" => 120,
|
48
|
+
"region" => "ap-southeast-1",
|
49
|
+
"profile" => nil,
|
50
|
+
"additional_settings" => {
|
51
|
+
"initial_lease_table_read_capacity" => 25,
|
52
|
+
"initial_lease_table_write_capacity" => 100,
|
53
|
+
"kinesis_endpoint" => "http://localhost"
|
54
|
+
}
|
55
|
+
}}
|
56
|
+
|
57
|
+
# Config hash to test invalid additional_settings where the name is not found
|
58
|
+
let(:config_with_invalid_additional_settings_name_not_found) {{
|
59
|
+
"application_name" => "my-processor",
|
60
|
+
"kinesis_stream_name" => "run-specs",
|
61
|
+
"codec" => codec,
|
62
|
+
"metrics" => metrics,
|
63
|
+
"checkpoint_interval_seconds" => 120,
|
64
|
+
"region" => "ap-southeast-1",
|
65
|
+
"profile" => nil,
|
66
|
+
"additional_settings" => {
|
67
|
+
"foo" => "bar"
|
68
|
+
}
|
69
|
+
}}
|
70
|
+
|
71
|
+
# Config hash to test invalid additional_settings where the type is complex or wrong
|
72
|
+
let(:config_with_invalid_additional_settings_wrong_type) {{
|
73
|
+
"application_name" => "my-processor",
|
74
|
+
"kinesis_stream_name" => "run-specs",
|
75
|
+
"codec" => codec,
|
76
|
+
"metrics" => metrics,
|
77
|
+
"checkpoint_interval_seconds" => 120,
|
78
|
+
"region" => "ap-southeast-1",
|
79
|
+
"profile" => nil,
|
80
|
+
"additional_settings" => {
|
81
|
+
"metrics_level" => "invalid_metrics_level"
|
82
|
+
}
|
83
|
+
}}
|
84
|
+
|
41
85
|
subject!(:kinesis) { LogStash::Inputs::Kinesis.new(config) }
|
42
86
|
let(:kcl_worker) { double('kcl_worker') }
|
43
87
|
let(:stub_builder) { double('kcl_builder', build: kcl_worker) }
|
@@ -77,6 +121,33 @@ RSpec.describe "inputs/kinesis" do
|
|
77
121
|
expect(kinesis_with_latest.kcl_config.get_kinesis_credentials_provider.getClass.to_s).to eq("com.amazonaws.auth.DefaultAWSCredentialsProviderChain")
|
78
122
|
end
|
79
123
|
|
124
|
+
subject!(:kinesis_with_valid_additional_settings) { LogStash::Inputs::Kinesis.new(config_with_valid_additional_settings) }
|
125
|
+
|
126
|
+
it "configures the KCL" do
|
127
|
+
kinesis_with_valid_additional_settings.register
|
128
|
+
expect(kinesis_with_valid_additional_settings.kcl_config.applicationName).to eq("my-processor")
|
129
|
+
expect(kinesis_with_valid_additional_settings.kcl_config.streamName).to eq("run-specs")
|
130
|
+
expect(kinesis_with_valid_additional_settings.kcl_config.regionName).to eq("ap-southeast-1")
|
131
|
+
expect(kinesis_with_valid_additional_settings.kcl_config.initialLeaseTableReadCapacity).to eq(25)
|
132
|
+
expect(kinesis_with_valid_additional_settings.kcl_config.initialLeaseTableWriteCapacity).to eq(100)
|
133
|
+
expect(kinesis_with_valid_additional_settings.kcl_config.kinesisEndpoint).to eq("http://localhost")
|
134
|
+
end
|
135
|
+
|
136
|
+
|
137
|
+
subject!(:kinesis_with_invalid_additional_settings_name_not_found) { LogStash::Inputs::Kinesis.new(config_with_invalid_additional_settings_name_not_found) }
|
138
|
+
|
139
|
+
it "raises NoMethodError for invalid configuration options" do
|
140
|
+
expect{ kinesis_with_invalid_additional_settings_name_not_found.register }.to raise_error(NoMethodError)
|
141
|
+
end
|
142
|
+
|
143
|
+
|
144
|
+
subject!(:kinesis_with_invalid_additional_settings_wrong_type) { LogStash::Inputs::Kinesis.new(config_with_invalid_additional_settings_wrong_type) }
|
145
|
+
|
146
|
+
it "raises an error for invalid configuration values such as the wrong type" do
|
147
|
+
expect{ kinesis_with_invalid_additional_settings_wrong_type.register }.to raise_error(Java::JavaLang::IllegalArgumentException)
|
148
|
+
end
|
149
|
+
|
150
|
+
|
80
151
|
context "#run" do
|
81
152
|
it "runs the KCL worker" do
|
82
153
|
expect(kinesis).to receive(:kcl_builder).with(queue).and_return(stub_builder)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-input-kinesis
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.10
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Brian Palmer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-11-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|