fluent-plugin-s3 0.5.7 → 0.5.8
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/.gitignore +11 -0
- data/ChangeLog +6 -0
- data/README.rdoc +2 -0
- data/VERSION +1 -1
- data/lib/fluent/plugin/out_s3.rb +4 -5
- data/test/test_out_s3.rb +70 -9
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0405798863dd88bb6fee3e93df98608c17afcac7
|
4
|
+
data.tar.gz: 818cef31b0406c74b18605d458836e11ecfa9fa5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 609023d29f6ab18e9c5358268cb14eb6b61eeb27213cab73ba5e808f1c1a6b76130309e6f848e706dcaa629afdb5a58285effbe5c228a52eb095cf46d60fdf24
|
7
|
+
data.tar.gz: d227a004ec500acf936b04ff3c2e0b074bd1f366267bc30b1d0a06006bbec6e1430ed001aafd8fc5c20f11ad0ecf9e67f6eb6ae99b150347eefcbadfb64f3e67
|
data/.gitignore
ADDED
data/ChangeLog
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
Release 0.5.8 - 2015/06/09
|
2
|
+
|
3
|
+
* Fix credential provider selection for env vars
|
4
|
+
* Add aws_iam_retries parameter to set number of attemps to the EC2 metadata service
|
5
|
+
|
6
|
+
|
1
7
|
Release 0.5.7 - 2015/03/31
|
2
8
|
|
3
9
|
* Use s3_endpoint instead of endpoint for S3 Client configuration for S3 compatible services
|
data/README.rdoc
CHANGED
@@ -35,6 +35,8 @@ Simply use RubyGems:
|
|
35
35
|
|
36
36
|
[aws_sec_key] AWS secret key. This parameter is required when your agent is not running on EC2 instance with an IAM Role.
|
37
37
|
|
38
|
+
[aws_iam_retries] The number of attempts to make (with exponential backoff) when loading instance profile credentials from the EC2 metadata service using an IAM role. Defaults to 5 retries.
|
39
|
+
|
38
40
|
[s3_bucket (required)] S3 bucket name.
|
39
41
|
|
40
42
|
[s3_region] s3 region name. For example, US West (Oregon) Region is "us-west-2". The full list of regions are available here. > http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region. We recommend using `s3_region` instead of `s3_endpoint`.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.8
|
data/lib/fluent/plugin/out_s3.rb
CHANGED
@@ -19,6 +19,7 @@ module Fluent
|
|
19
19
|
config_param :use_server_side_encryption, :string, :default => nil
|
20
20
|
config_param :aws_key_id, :string, :default => nil
|
21
21
|
config_param :aws_sec_key, :string, :default => nil
|
22
|
+
config_param :aws_iam_retries, :integer, :default => 5
|
22
23
|
config_param :s3_bucket, :string
|
23
24
|
config_param :s3_region, :string, :default => nil
|
24
25
|
config_param :s3_endpoint, :string, :default => nil
|
@@ -74,12 +75,10 @@ module Fluent
|
|
74
75
|
if @aws_key_id && @aws_sec_key
|
75
76
|
options[:access_key_id] = @aws_key_id
|
76
77
|
options[:secret_access_key] = @aws_sec_key
|
78
|
+
elsif ENV.key? "AWS_ACCESS_KEY_ID"
|
79
|
+
options[:credential_provider] = AWS::Core::CredentialProviders::ENVProvider.new('AWS')
|
77
80
|
else
|
78
|
-
|
79
|
-
# because of temporary loss of network connectivity when using IAM Role.
|
80
|
-
# This error is a rare case, so handles it in this plugin.
|
81
|
-
# retry retrieving credentials (wait for total approximately 2 min)
|
82
|
-
options[:credential_provider] = AWS::Core::CredentialProviders::EC2Provider.new({:retries => 7})
|
81
|
+
options[:credential_provider] = AWS::Core::CredentialProviders::EC2Provider.new({:retries => @aws_iam_retries})
|
83
82
|
end
|
84
83
|
options[:region] = @s3_region if @s3_region
|
85
84
|
options[:s3_endpoint] = @s3_endpoint if @s3_endpoint
|
data/test/test_out_s3.rb
CHANGED
@@ -218,7 +218,7 @@ class S3OutputTest < Test::Unit::TestCase
|
|
218
218
|
data
|
219
219
|
end
|
220
220
|
|
221
|
-
|
221
|
+
CONFIG_TIME_SLICE = %[
|
222
222
|
hostname testing.node.local
|
223
223
|
aws_key_id test_key_id
|
224
224
|
aws_sec_key test_sec_key
|
@@ -228,17 +228,16 @@ class S3OutputTest < Test::Unit::TestCase
|
|
228
228
|
path log
|
229
229
|
utc
|
230
230
|
buffer_type memory
|
231
|
-
auto_create_bucket false
|
232
231
|
log_level debug
|
233
232
|
]
|
234
233
|
|
235
|
-
def create_time_sliced_driver(
|
234
|
+
def create_time_sliced_driver(conf = CONFIG_TIME_SLICE)
|
236
235
|
d = Fluent::Test::TimeSlicedOutputTestDriver.new(Fluent::S3Output) do
|
237
236
|
private
|
238
237
|
|
239
238
|
def check_apikeys
|
240
239
|
end
|
241
|
-
end.configure(
|
240
|
+
end.configure(conf)
|
242
241
|
d
|
243
242
|
end
|
244
243
|
|
@@ -304,7 +303,8 @@ class S3OutputTest < Test::Unit::TestCase
|
|
304
303
|
def test_auto_create_bucket_false_with_non_existence_bucket
|
305
304
|
s3bucket, s3bucket_col = setup_mocks
|
306
305
|
|
307
|
-
|
306
|
+
config = CONFIG_TIME_SLICE + 'auto_create_bucket false'
|
307
|
+
d = create_time_sliced_driver(config)
|
308
308
|
assert_raise(RuntimeError, "The specified bucket does not exist: bucket = test_bucket") {
|
309
309
|
d.run
|
310
310
|
}
|
@@ -314,9 +314,70 @@ class S3OutputTest < Test::Unit::TestCase
|
|
314
314
|
s3bucket, s3bucket_col = setup_mocks
|
315
315
|
s3bucket_col.should_receive(:create).with_any_args.and_return { true }
|
316
316
|
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
317
|
+
config = CONFIG_TIME_SLICE + 'auto_create_bucket true'
|
318
|
+
d = create_time_sliced_driver(config)
|
319
|
+
assert_nothing_raised { d.run }
|
320
|
+
end
|
321
|
+
|
322
|
+
def test_aws_credential_provider_default
|
323
|
+
s3bucket, s3bucket_col = setup_mocks
|
324
|
+
s3bucket_col.should_receive(:create).with_any_args.and_return { true }
|
325
|
+
|
326
|
+
d = create_time_sliced_driver
|
327
|
+
assert_nothing_raised { d.run }
|
328
|
+
assert_equal "AWS::Core::CredentialProviders::DefaultProvider", d.instance.instance_variable_get(:@s3).config.credential_provider.class.to_s
|
329
|
+
end
|
330
|
+
|
331
|
+
def test_aws_credential_provider_env
|
332
|
+
s3bucket, s3bucket_col = setup_mocks
|
333
|
+
s3bucket_col.should_receive(:create).with_any_args.and_return { true }
|
334
|
+
key = ENV['AWS_ACCESS_KEY_ID']
|
335
|
+
ENV.replace({'AWS_ACCESS_KEY_ID' => 'my_access_key'})
|
336
|
+
|
337
|
+
config = CONFIG_TIME_SLICE.clone.split("\n").reject{|x| x =~ /.+aws_.+/}.join("\n")
|
338
|
+
d = create_time_sliced_driver(config)
|
339
|
+
|
340
|
+
assert_equal true, ENV.key?('AWS_ACCESS_KEY_ID')
|
341
|
+
assert_nothing_raised { d.run }
|
342
|
+
assert_equal nil, d.instance.aws_key_id
|
343
|
+
assert_equal nil, d.instance.aws_sec_key
|
344
|
+
assert_equal "AWS::Core::CredentialProviders::ENVProvider", d.instance.instance_variable_get(:@s3).config.credential_provider.class.to_s
|
345
|
+
|
346
|
+
ENV.replace({'AWS_ACCESS_KEY_ID' => key}) unless key.nil?
|
347
|
+
end
|
348
|
+
|
349
|
+
def test_aws_credential_provider_ec2
|
350
|
+
s3bucket, s3bucket_col = setup_mocks
|
351
|
+
s3bucket_col.should_receive(:create).with_any_args.and_return { true }
|
352
|
+
key = ENV['AWS_ACCESS_KEY_ID']
|
353
|
+
ENV.delete('AWS_ACCESS_KEY_ID')
|
354
|
+
|
355
|
+
config = CONFIG_TIME_SLICE.clone.split("\n").reject{|x| x =~ /.+aws_.+/}.join("\n")
|
356
|
+
d = create_time_sliced_driver(config)
|
357
|
+
|
358
|
+
assert_equal false, ENV.key?('AWS_ACCESS_KEY_ID')
|
359
|
+
assert_nothing_raised { d.run }
|
360
|
+
assert_equal nil, d.instance.aws_key_id
|
361
|
+
assert_equal nil, d.instance.aws_sec_key
|
362
|
+
assert_equal "AWS::Core::CredentialProviders::EC2Provider", d.instance.instance_variable_get(:@s3).config.credential_provider.class.to_s
|
363
|
+
assert_equal 5, d.instance.instance_variable_get(:@s3).config.credential_provider.retries
|
364
|
+
|
365
|
+
ENV.replace({'AWS_ACCESS_KEY_ID' => key}) unless key.nil?
|
366
|
+
end
|
367
|
+
|
368
|
+
def test_aws_credential_provider_ec2_with_retries
|
369
|
+
s3bucket, s3bucket_col = setup_mocks
|
370
|
+
s3bucket_col.should_receive(:create).with_any_args.and_return { true }
|
371
|
+
key = ENV['AWS_ACCESS_KEY_ID']
|
372
|
+
ENV.delete('AWS_ACCESS_KEY_ID')
|
373
|
+
|
374
|
+
config = [CONFIG_TIME_SLICE.clone.split("\n").reject{|x| x =~ /.+aws_.+/}, 'aws_iam_retries 7'].join("\n")
|
375
|
+
d = create_time_sliced_driver(config)
|
376
|
+
|
377
|
+
config = [CONFIG, 'include_tag_key true', 'include_time_key true'].join("\n")
|
378
|
+
assert_nothing_raised { d.run }
|
379
|
+
assert_equal 7, d.instance.instance_variable_get(:@s3).config.credential_provider.retries
|
380
|
+
|
381
|
+
ENV.replace({'AWS_ACCESS_KEY_ID' => key}) unless key.nil?
|
321
382
|
end
|
322
383
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-s3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sadayuki Furuhashi
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-06-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fluentd
|
@@ -121,6 +121,7 @@ executables: []
|
|
121
121
|
extensions: []
|
122
122
|
extra_rdoc_files: []
|
123
123
|
files:
|
124
|
+
- ".gitignore"
|
124
125
|
- ".travis.yml"
|
125
126
|
- AUTHORS
|
126
127
|
- ChangeLog
|