logstash-input-s3-sns-sqs 2.1.3 → 2.2.1.pre
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 +3 -0
- data/lib/logstash/inputs/s3/downloader.rb +13 -1
- data/lib/logstash/inputs/s3snssqs/log_processor.rb +1 -2
- data/lib/logstash/inputs/s3snssqs.rb +7 -5
- data/lib/logstash/plugin_mixins/aws_config/generic.rb +61 -0
- data/lib/logstash/plugin_mixins/aws_config/v2.rb +100 -0
- data/lib/logstash/plugin_mixins/aws_config.rb +8 -0
- data/logstash-input-s3-sns-sqs.gemspec +18 -6
- metadata +178 -29
- data/lib/logstash/inputs/s3sqs/patch.rb +0 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 045e651e9ce6ed3e99a4f06b52be476e30ef7501b5e53a5bf97bcf0118c463d6
|
4
|
+
data.tar.gz: 25b9a355da317dec8b235fd84ce0cb04aec7fec9843edbbd418aa7f0cb570237
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 51a683ac50b21cd5e27c7dbcf73a494adeb3c5f04c7f590b38e3cb3730c308d331a8ab475a06e0df92204172841c62563ea29f92a1304932e15e3fe828c6ea0b
|
7
|
+
data.tar.gz: a8957a59f15f3d134f8c1fb7e60f1bbfa0461ceca58ec4569d58419634309bef27e780f6b43a084533690ccde3c040ec7549286aef49ecfc9bdee71da83c4bfa
|
data/CHANGELOG.md
CHANGED
@@ -9,6 +9,7 @@ class S3Downloader
|
|
9
9
|
@stopped = stop_semaphore
|
10
10
|
@factory = options[:s3_client_factory]
|
11
11
|
@delete_on_success = options[:delete_on_success]
|
12
|
+
@move_to_bucket = options[:move_to_bucket]
|
12
13
|
@include_object_properties = options[:include_object_properties]
|
13
14
|
end
|
14
15
|
|
@@ -40,7 +41,7 @@ class S3Downloader
|
|
40
41
|
end
|
41
42
|
|
42
43
|
def cleanup_s3object(record)
|
43
|
-
return unless @delete_on_success
|
44
|
+
return unless @delete_on_success || @move_to_bucket
|
44
45
|
begin
|
45
46
|
@factory.get_s3_client(record[:bucket]) do |s3|
|
46
47
|
s3.delete_object(bucket: record[:bucket], key: record[:key])
|
@@ -50,6 +51,17 @@ class S3Downloader
|
|
50
51
|
end
|
51
52
|
end
|
52
53
|
|
54
|
+
def move_s3object(record)
|
55
|
+
return unless @move_to_bucket
|
56
|
+
begin
|
57
|
+
@factory.get_s3_client(@move_to_bucket) do |s3|
|
58
|
+
s3.copy_object(bucket: @move_to_bucket, copy_source: "/#{record[:bucket]}/#{record[:key]}", key: record[:key])
|
59
|
+
end
|
60
|
+
rescue Exception => e
|
61
|
+
@logger.warn("Failed to move s3 object", :record => record, :error => e)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
53
65
|
def stop?
|
54
66
|
@stopped.value
|
55
67
|
end
|
@@ -77,8 +77,7 @@ module LogProcessor
|
|
77
77
|
end
|
78
78
|
|
79
79
|
def gzip?(filename)
|
80
|
-
|
81
|
-
MagicGzipValidator.new(File.new(filename, 'rb')).valid?
|
80
|
+
filename.end_with?('.gz','.gzip') && MagicGzipValidator.new(File.new(filename, 'rb')).valid?
|
82
81
|
rescue Exception => e
|
83
82
|
@logger.warn("Problem while gzip detection", :error => e)
|
84
83
|
end
|
@@ -5,8 +5,9 @@ require "logstash/timestamp"
|
|
5
5
|
require "logstash/plugin_mixins/aws_config"
|
6
6
|
require "logstash/shutdown_watcher"
|
7
7
|
require "logstash/errors"
|
8
|
-
require
|
9
|
-
require "aws-sdk"
|
8
|
+
require "aws-sdk-s3"
|
9
|
+
require "aws-sdk-sns"
|
10
|
+
require "aws-sdk-sqs"
|
10
11
|
|
11
12
|
# "object-oriented interfaces on top of API clients"...
|
12
13
|
# => Overhead. FIXME: needed?
|
@@ -25,7 +26,7 @@ java_import java.io.FileInputStream
|
|
25
26
|
java_import java.io.BufferedReader
|
26
27
|
java_import java.util.zip.GZIPInputStream
|
27
28
|
java_import java.util.zip.ZipException
|
28
|
-
|
29
|
+
java_import java.lang.StringBuilder
|
29
30
|
|
30
31
|
# our helper classes
|
31
32
|
# these may go into this file for brevity...
|
@@ -35,8 +36,6 @@ require_relative 's3/downloader'
|
|
35
36
|
require_relative 'codec_factory'
|
36
37
|
require_relative 's3snssqs/log_processor'
|
37
38
|
|
38
|
-
Aws.eager_autoload!
|
39
|
-
|
40
39
|
# Get logs from AWS s3 buckets as issued by an object-created event via sqs.
|
41
40
|
#
|
42
41
|
# This plugin is based on the logstash-input-sqs plugin but doesn't log the sqs event itself.
|
@@ -161,6 +160,7 @@ class LogStash::Inputs::S3SNSSQS < LogStash::Inputs::Threadable
|
|
161
160
|
# Session name to use when assuming an IAM role
|
162
161
|
config :s3_role_session_name, :validate => :string, :default => "logstash"
|
163
162
|
config :delete_on_success, :validate => :boolean, :default => false
|
163
|
+
config :move_to_bucket, :validate => :string, :default => nil
|
164
164
|
# Whether or not to include the S3 object's properties (last_modified, content_type, metadata)
|
165
165
|
# into each Event at [@metadata][s3]. Regardless of this setting, [@metdata][s3][key] will always
|
166
166
|
# be present.
|
@@ -273,6 +273,7 @@ class LogStash::Inputs::S3SNSSQS < LogStash::Inputs::Threadable
|
|
273
273
|
@s3_downloader = S3Downloader.new(@logger, @received_stop, {
|
274
274
|
s3_client_factory: @s3_client_factory,
|
275
275
|
delete_on_success: @delete_on_success,
|
276
|
+
move_to_bucket: @move_to_bucket,
|
276
277
|
include_object_properties: @include_object_properties
|
277
278
|
})
|
278
279
|
@codec_factory = CodecFactory.new(@logger, {
|
@@ -344,6 +345,7 @@ class LogStash::Inputs::S3SNSSQS < LogStash::Inputs::Threadable
|
|
344
345
|
@s3_downloader.cleanup_local_object(record)
|
345
346
|
# re-throw if necessary:
|
346
347
|
throw :skip_delete unless completed
|
348
|
+
@s3_downloader.move_s3object(record)
|
347
349
|
@s3_downloader.cleanup_s3object(record)
|
348
350
|
end
|
349
351
|
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module LogStash::PluginMixins::AwsConfig::Generic
|
2
|
+
def self.included(base)
|
3
|
+
base.extend(self)
|
4
|
+
base.generic_aws_config
|
5
|
+
end
|
6
|
+
|
7
|
+
def generic_aws_config
|
8
|
+
# The AWS Region
|
9
|
+
config :region, :validate => :string, :default => LogStash::PluginMixins::AwsConfig::US_EAST_1
|
10
|
+
|
11
|
+
# This plugin uses the AWS SDK and supports several ways to get credentials, which will be tried in this order:
|
12
|
+
#
|
13
|
+
# 1. Static configuration, using `access_key_id` and `secret_access_key` params in the logstash plugin config
|
14
|
+
# 2. External credentials file specified by `aws_credentials_file`
|
15
|
+
# 3. Environment variables `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY`
|
16
|
+
# 4. Environment variables `AMAZON_ACCESS_KEY_ID` and `AMAZON_SECRET_ACCESS_KEY`
|
17
|
+
# 5. IAM Instance Profile (available when running inside EC2)
|
18
|
+
config :access_key_id, :validate => :string
|
19
|
+
|
20
|
+
# The AWS Secret Access Key
|
21
|
+
config :secret_access_key, :validate => :password
|
22
|
+
|
23
|
+
# The AWS Session token for temporary credential
|
24
|
+
config :session_token, :validate => :password
|
25
|
+
|
26
|
+
# URI to proxy server if required
|
27
|
+
config :proxy_uri, :validate => :string
|
28
|
+
|
29
|
+
# Custom endpoint to connect to s3
|
30
|
+
config :endpoint, :validate => :string
|
31
|
+
|
32
|
+
# The AWS IAM Role to assume, if any.
|
33
|
+
# This is used to generate temporary credentials typically for cross-account access.
|
34
|
+
# See https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html for more information.
|
35
|
+
# When `role_arn` is set, AWS (`access_key_id`/`secret_access_key`) credentials still get used if they're configured.
|
36
|
+
config :role_arn, :validate => :string
|
37
|
+
|
38
|
+
# Session name to use when assuming an IAM role
|
39
|
+
config :role_session_name, :validate => :string, :default => "logstash"
|
40
|
+
|
41
|
+
# Path to YAML file containing a hash of AWS credentials.
|
42
|
+
# This file will only be loaded if `access_key_id` and
|
43
|
+
# `secret_access_key` aren't set. The contents of the
|
44
|
+
# file should look like this:
|
45
|
+
#
|
46
|
+
# [source,ruby]
|
47
|
+
# ----------------------------------
|
48
|
+
# :access_key_id: "12345"
|
49
|
+
# :secret_access_key: "54321"
|
50
|
+
# ----------------------------------
|
51
|
+
#
|
52
|
+
config :aws_credentials_file, :validate => :string
|
53
|
+
|
54
|
+
# By default, this plugin uses cert available to OpenSSL provided by OS
|
55
|
+
# when verifying SSL peer certificates.
|
56
|
+
# For cases where the default cert is unavailable, e.g. Windows,
|
57
|
+
# you can use the bundled ca certificate provided by AWS SDK
|
58
|
+
# by setting `use_aws_bundled_ca` to true
|
59
|
+
config :use_aws_bundled_ca, :validate => :boolean, :default => false
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require "logstash/plugin_mixins/aws_config/generic"
|
3
|
+
|
4
|
+
module LogStash::PluginMixins::AwsConfig::V2
|
5
|
+
def self.included(base)
|
6
|
+
base.extend(self)
|
7
|
+
base.send(:include, LogStash::PluginMixins::AwsConfig::Generic)
|
8
|
+
end
|
9
|
+
|
10
|
+
public
|
11
|
+
def aws_options_hash
|
12
|
+
opts = {}
|
13
|
+
|
14
|
+
opts[:http_proxy] = @proxy_uri if @proxy_uri
|
15
|
+
|
16
|
+
if @role_arn
|
17
|
+
credentials = assume_role(opts.dup)
|
18
|
+
opts[:credentials] = credentials
|
19
|
+
else
|
20
|
+
credentials = aws_credentials
|
21
|
+
opts[:credentials] = credentials if credentials
|
22
|
+
end
|
23
|
+
|
24
|
+
if self.respond_to?(:aws_service_endpoint)
|
25
|
+
# used by CloudWatch to basically do the same as bellow (returns { region: region })
|
26
|
+
opts.merge!(self.aws_service_endpoint(@region))
|
27
|
+
else
|
28
|
+
# NOTE: setting :region works with the aws sdk (resolves correct endpoint)
|
29
|
+
opts[:region] = @region
|
30
|
+
end
|
31
|
+
|
32
|
+
opts[:endpoint] = @endpoint unless @endpoint.nil?
|
33
|
+
|
34
|
+
if respond_to?(:additional_settings)
|
35
|
+
opts = symbolize_keys_and_cast_true_false(additional_settings).merge(opts)
|
36
|
+
end
|
37
|
+
|
38
|
+
if @use_aws_bundled_ca
|
39
|
+
aws_core_library = Gem.loaded_specs['aws-sdk-core']&.full_gem_path or fail("AWS Core library not available")
|
40
|
+
opts[:ssl_ca_bundle] = File.expand_path('ca-bundle.crt', aws_core_library).tap do |aws_core_ca_bundle|
|
41
|
+
fail("AWS Core CA bundle not found") unless File.exists?(aws_core_ca_bundle)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
return opts
|
46
|
+
end
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def aws_credentials
|
51
|
+
if @access_key_id && @secret_access_key
|
52
|
+
Aws::Credentials.new(@access_key_id, @secret_access_key.value, @session_token ? @session_token.value : nil)
|
53
|
+
elsif @access_key_id.nil? ^ @secret_access_key.nil?
|
54
|
+
@logger.warn("Likely config error: Only one of access_key_id or secret_access_key was provided but not both.")
|
55
|
+
secret_access_key = @secret_access_key ? @secret_access_key.value : nil
|
56
|
+
Aws::Credentials.new(@access_key_id, secret_access_key, @session_token ? @session_token.value : nil)
|
57
|
+
elsif @aws_credentials_file
|
58
|
+
credentials_opts = YAML.load_file(@aws_credentials_file)
|
59
|
+
credentials_opts.default_proc = lambda { |hash, key| hash.fetch(key.to_s, nil) }
|
60
|
+
Aws::Credentials.new(credentials_opts[:access_key_id],
|
61
|
+
credentials_opts[:secret_access_key],
|
62
|
+
credentials_opts[:session_token])
|
63
|
+
else
|
64
|
+
nil # AWS client will read ENV or ~/.aws/credentials
|
65
|
+
end
|
66
|
+
end
|
67
|
+
alias credentials aws_credentials
|
68
|
+
|
69
|
+
def assume_role(opts = {})
|
70
|
+
unless opts.key?(:credentials)
|
71
|
+
credentials = aws_credentials
|
72
|
+
opts[:credentials] = credentials if credentials
|
73
|
+
end
|
74
|
+
|
75
|
+
# for a regional endpoint :region is always required by AWS
|
76
|
+
opts[:region] = @region
|
77
|
+
|
78
|
+
Aws::AssumeRoleCredentials.new(
|
79
|
+
:client => Aws::STS::Client.new(opts),
|
80
|
+
:role_arn => @role_arn,
|
81
|
+
:role_session_name => @role_session_name
|
82
|
+
)
|
83
|
+
end
|
84
|
+
|
85
|
+
def symbolize_keys_and_cast_true_false(hash)
|
86
|
+
case hash
|
87
|
+
when Hash
|
88
|
+
symbolized = {}
|
89
|
+
hash.each { |key, value| symbolized[key.to_sym] = symbolize_keys_and_cast_true_false(value) }
|
90
|
+
symbolized
|
91
|
+
when 'true'
|
92
|
+
true
|
93
|
+
when 'false'
|
94
|
+
false
|
95
|
+
else
|
96
|
+
hash
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'logstash-input-s3-sns-sqs'
|
3
|
-
s.version = '2.1.
|
3
|
+
s.version = '2.2.1.pre'
|
4
4
|
s.licenses = ['Apache-2.0']
|
5
5
|
s.summary = "Get logs from AWS s3 buckets as issued by an object-created event via sns -> sqs."
|
6
6
|
s.description = "This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program"
|
@@ -19,10 +19,22 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.metadata = { "logstash_plugin" => "true", "logstash_group" => "input" }
|
20
20
|
|
21
21
|
# Gem dependencies
|
22
|
-
s.add_runtime_dependency "logstash-core-plugin-api", "
|
22
|
+
s.add_runtime_dependency "logstash-core-plugin-api", "~> 2.0"
|
23
|
+
s.add_runtime_dependency "concurrent-ruby"
|
24
|
+
s.add_runtime_dependency 'stud', '>= 0.0.22'
|
25
|
+
s.add_runtime_dependency "logstash-codec-json"
|
26
|
+
s.add_runtime_dependency "logstash-codec-plain"
|
27
|
+
s.add_runtime_dependency "aws-sdk-core", "~> 3"
|
28
|
+
s.add_runtime_dependency "aws-sdk-s3"
|
29
|
+
s.add_runtime_dependency "aws-sdk-sqs"
|
30
|
+
s.add_runtime_dependency "aws-sdk-sns"
|
31
|
+
s.add_runtime_dependency "aws-sdk-resourcegroups"
|
32
|
+
|
33
|
+
s.add_development_dependency "logstash-codec-json_lines"
|
34
|
+
s.add_development_dependency "logstash-codec-multiline"
|
35
|
+
s.add_development_dependency "logstash-codec-line"
|
36
|
+
s.add_development_dependency 'logstash-devutils', '>= 0.0.16'
|
37
|
+
s.add_development_dependency "logstash-input-generator"
|
38
|
+
s.add_development_dependency "timecop"
|
23
39
|
|
24
|
-
s.add_runtime_dependency 'logstash-codec-json', '~> 3.0'
|
25
|
-
s.add_runtime_dependency 'logstash-mixin-aws', '>= 4.3'
|
26
|
-
s.add_development_dependency 'logstash-codec-json_stream', '~> 1.0'
|
27
|
-
s.add_development_dependency 'logstash-devutils', '~> 1.3'
|
28
40
|
end
|
metadata
CHANGED
@@ -1,91 +1,239 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logstash-input-s3-sns-sqs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.2.1.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christian Herweg
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-11-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
15
|
+
requirements:
|
16
|
+
- - "~>"
|
17
|
+
- !ruby/object:Gem::Version
|
18
|
+
version: '2.0'
|
19
|
+
name: logstash-core-plugin-api
|
20
|
+
prerelease: false
|
21
|
+
type: :runtime
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
name: concurrent-ruby
|
34
|
+
prerelease: false
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
15
37
|
requirements:
|
16
38
|
- - ">="
|
17
39
|
- !ruby/object:Gem::Version
|
18
|
-
version:
|
19
|
-
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
20
45
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
22
|
-
name:
|
46
|
+
version: 0.0.22
|
47
|
+
name: stud
|
23
48
|
prerelease: false
|
24
49
|
type: :runtime
|
25
50
|
version_requirements: !ruby/object:Gem::Requirement
|
26
51
|
requirements:
|
27
52
|
- - ">="
|
28
53
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
30
|
-
|
54
|
+
version: 0.0.22
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
61
|
+
name: logstash-codec-json
|
62
|
+
prerelease: false
|
63
|
+
type: :runtime
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
31
67
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
name: logstash-codec-plain
|
76
|
+
prerelease: false
|
77
|
+
type: :runtime
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
33
83
|
- !ruby/object:Gem::Dependency
|
34
84
|
requirement: !ruby/object:Gem::Requirement
|
35
85
|
requirements:
|
36
86
|
- - "~>"
|
37
87
|
- !ruby/object:Gem::Version
|
38
|
-
version: '3
|
39
|
-
name:
|
88
|
+
version: '3'
|
89
|
+
name: aws-sdk-core
|
40
90
|
prerelease: false
|
41
91
|
type: :runtime
|
42
92
|
version_requirements: !ruby/object:Gem::Requirement
|
43
93
|
requirements:
|
44
94
|
- - "~>"
|
45
95
|
- !ruby/object:Gem::Version
|
46
|
-
version: '3
|
96
|
+
version: '3'
|
47
97
|
- !ruby/object:Gem::Dependency
|
48
98
|
requirement: !ruby/object:Gem::Requirement
|
49
99
|
requirements:
|
50
100
|
- - ">="
|
51
101
|
- !ruby/object:Gem::Version
|
52
|
-
version: '
|
53
|
-
name:
|
102
|
+
version: '0'
|
103
|
+
name: aws-sdk-s3
|
54
104
|
prerelease: false
|
55
105
|
type: :runtime
|
56
106
|
version_requirements: !ruby/object:Gem::Requirement
|
57
107
|
requirements:
|
58
108
|
- - ">="
|
59
109
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
110
|
+
version: '0'
|
61
111
|
- !ruby/object:Gem::Dependency
|
62
112
|
requirement: !ruby/object:Gem::Requirement
|
63
113
|
requirements:
|
64
|
-
- - "
|
114
|
+
- - ">="
|
65
115
|
- !ruby/object:Gem::Version
|
66
|
-
version: '
|
67
|
-
name:
|
116
|
+
version: '0'
|
117
|
+
name: aws-sdk-sqs
|
118
|
+
prerelease: false
|
119
|
+
type: :runtime
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
requirement: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0'
|
131
|
+
name: aws-sdk-sns
|
132
|
+
prerelease: false
|
133
|
+
type: :runtime
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
requirement: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
142
|
+
- - ">="
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '0'
|
145
|
+
name: aws-sdk-resourcegroups
|
146
|
+
prerelease: false
|
147
|
+
type: :runtime
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
requirement: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - ">="
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
159
|
+
name: logstash-codec-json_lines
|
68
160
|
prerelease: false
|
69
161
|
type: :development
|
70
162
|
version_requirements: !ruby/object:Gem::Requirement
|
71
163
|
requirements:
|
72
|
-
- - "
|
164
|
+
- - ">="
|
73
165
|
- !ruby/object:Gem::Version
|
74
|
-
version: '
|
166
|
+
version: '0'
|
75
167
|
- !ruby/object:Gem::Dependency
|
76
168
|
requirement: !ruby/object:Gem::Requirement
|
77
169
|
requirements:
|
78
|
-
- - "
|
170
|
+
- - ">="
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: '0'
|
173
|
+
name: logstash-codec-multiline
|
174
|
+
prerelease: false
|
175
|
+
type: :development
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
requirement: !ruby/object:Gem::Requirement
|
183
|
+
requirements:
|
184
|
+
- - ">="
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
version: '0'
|
187
|
+
name: logstash-codec-line
|
188
|
+
prerelease: false
|
189
|
+
type: :development
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
79
193
|
- !ruby/object:Gem::Version
|
80
|
-
version: '
|
194
|
+
version: '0'
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
requirement: !ruby/object:Gem::Requirement
|
197
|
+
requirements:
|
198
|
+
- - ">="
|
199
|
+
- !ruby/object:Gem::Version
|
200
|
+
version: 0.0.16
|
81
201
|
name: logstash-devutils
|
82
202
|
prerelease: false
|
83
203
|
type: :development
|
84
204
|
version_requirements: !ruby/object:Gem::Requirement
|
85
205
|
requirements:
|
86
|
-
- - "
|
206
|
+
- - ">="
|
87
207
|
- !ruby/object:Gem::Version
|
88
|
-
version:
|
208
|
+
version: 0.0.16
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
requirement: !ruby/object:Gem::Requirement
|
211
|
+
requirements:
|
212
|
+
- - ">="
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: '0'
|
215
|
+
name: logstash-input-generator
|
216
|
+
prerelease: false
|
217
|
+
type: :development
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - ">="
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '0'
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
requirement: !ruby/object:Gem::Requirement
|
225
|
+
requirements:
|
226
|
+
- - ">="
|
227
|
+
- !ruby/object:Gem::Version
|
228
|
+
version: '0'
|
229
|
+
name: timecop
|
230
|
+
prerelease: false
|
231
|
+
type: :development
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - ">="
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: '0'
|
89
237
|
description: This gem is a logstash plugin required to be installed on top of the
|
90
238
|
Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not
|
91
239
|
a stand-alone program
|
@@ -106,8 +254,10 @@ files:
|
|
106
254
|
- lib/logstash/inputs/s3/downloader.rb
|
107
255
|
- lib/logstash/inputs/s3snssqs.rb
|
108
256
|
- lib/logstash/inputs/s3snssqs/log_processor.rb
|
109
|
-
- lib/logstash/inputs/s3sqs/patch.rb
|
110
257
|
- lib/logstash/inputs/sqs/poller.rb
|
258
|
+
- lib/logstash/plugin_mixins/aws_config.rb
|
259
|
+
- lib/logstash/plugin_mixins/aws_config/generic.rb
|
260
|
+
- lib/logstash/plugin_mixins/aws_config/v2.rb
|
111
261
|
- logstash-input-s3-sns-sqs.gemspec
|
112
262
|
- spec/inputs/s3sqs_spec.rb
|
113
263
|
homepage: https://github.com/cherweg/logstash-input-s3-sns-sqs
|
@@ -127,12 +277,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
127
277
|
version: '0'
|
128
278
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
129
279
|
requirements:
|
130
|
-
- - "
|
280
|
+
- - ">"
|
131
281
|
- !ruby/object:Gem::Version
|
132
|
-
version:
|
282
|
+
version: 1.3.1
|
133
283
|
requirements: []
|
134
|
-
|
135
|
-
rubygems_version: 2.6.13
|
284
|
+
rubygems_version: 3.2.29
|
136
285
|
signing_key:
|
137
286
|
specification_version: 4
|
138
287
|
summary: Get logs from AWS s3 buckets as issued by an object-created event via sns
|
@@ -1,22 +0,0 @@
|
|
1
|
-
# This patch was stolen from logstash-plugins/logstash-output-s3#102.
|
2
|
-
#
|
3
|
-
# This patch is a workaround for a JRuby issue which has been fixed in JRuby
|
4
|
-
# 9000, but not in JRuby 1.7. See https://github.com/jruby/jruby/issues/3645
|
5
|
-
# and https://github.com/jruby/jruby/issues/3920. This is necessary because the
|
6
|
-
# `aws-sdk` is doing tricky name discovery to generate the correct error class.
|
7
|
-
#
|
8
|
-
# As per https://github.com/aws/aws-sdk-ruby/issues/1301#issuecomment-261115960,
|
9
|
-
# this patch may be short-lived anyway.
|
10
|
-
require 'aws-sdk'
|
11
|
-
|
12
|
-
begin
|
13
|
-
old_stderr = $stderr
|
14
|
-
$stderr = StringIO.new
|
15
|
-
|
16
|
-
module Aws
|
17
|
-
const_set(:S3, Aws::S3)
|
18
|
-
const_set(:SQS, Aws::SQS)
|
19
|
-
end
|
20
|
-
ensure
|
21
|
-
$stderr = old_stderr
|
22
|
-
end
|