fluent-plugin-s3 0.1.1
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.
- data/AUTHORS +1 -0
- data/ChangeLog +7 -0
- data/README.rdoc +7 -0
- data/Rakefile +51 -0
- data/VERSION +1 -0
- data/lib/fluent/plugin/out_s3.rb +84 -0
- metadata +104 -0
data/AUTHORS
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
FURUHASHI Sadayuki <frsyuki _at_ gmail.com>
|
data/ChangeLog
ADDED
data/README.rdoc
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'rake'
|
2
|
+
require 'rake/testtask'
|
3
|
+
require 'rake/clean'
|
4
|
+
|
5
|
+
begin
|
6
|
+
require 'jeweler'
|
7
|
+
Jeweler::Tasks.new do |gemspec|
|
8
|
+
gemspec.name = "fluent-plugin-s3"
|
9
|
+
gemspec.summary = "Amazon S3 output plugin for Fluent event collector"
|
10
|
+
gemspec.author = "Sadayuki Furuhashi"
|
11
|
+
gemspec.email = "frsyuki@gmail.com"
|
12
|
+
gemspec.homepage = "http://fluent.github.com/"
|
13
|
+
gemspec.has_rdoc = false
|
14
|
+
gemspec.require_paths = ["lib"]
|
15
|
+
gemspec.add_dependency "fluent", "~> 0.9.14"
|
16
|
+
gemspec.add_dependency "aws-sdk", "~> 1.1.3"
|
17
|
+
gemspec.test_files = Dir["test/**/*.rb"]
|
18
|
+
gemspec.files = Dir["bin/**/*", "lib/**/*", "test/**/*.rb"] +
|
19
|
+
%w[VERSION AUTHORS Rakefile]
|
20
|
+
gemspec.executables = []
|
21
|
+
end
|
22
|
+
Jeweler::GemcutterTasks.new
|
23
|
+
rescue LoadError
|
24
|
+
puts "Jeweler not available. Install it with: gem install jeweler"
|
25
|
+
end
|
26
|
+
|
27
|
+
Rake::TestTask.new(:test) do |t|
|
28
|
+
t.test_files = Dir['test/*_test.rb']
|
29
|
+
t.ruby_opts = ['-rubygems'] if defined? Gem
|
30
|
+
t.ruby_opts << '-I.'
|
31
|
+
end
|
32
|
+
|
33
|
+
#VERSION_FILE = "lib/fluent/version.rb"
|
34
|
+
#
|
35
|
+
#file VERSION_FILE => ["VERSION"] do |t|
|
36
|
+
# version = File.read("VERSION").strip
|
37
|
+
# File.open(VERSION_FILE, "w") {|f|
|
38
|
+
# f.write <<EOF
|
39
|
+
#module Fluent
|
40
|
+
#
|
41
|
+
#VERSION = '#{version}'
|
42
|
+
#
|
43
|
+
#end
|
44
|
+
#EOF
|
45
|
+
# }
|
46
|
+
#end
|
47
|
+
#
|
48
|
+
#task :default => [VERSION_FILE, :build]
|
49
|
+
|
50
|
+
task :default => [:build]
|
51
|
+
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.1
|
@@ -0,0 +1,84 @@
|
|
1
|
+
module Fluent
|
2
|
+
|
3
|
+
|
4
|
+
class S3Output < Fluent::TimeSlicedOutput
|
5
|
+
Fluent::Plugin.register_output('s3', self)
|
6
|
+
|
7
|
+
def initialize
|
8
|
+
super
|
9
|
+
require 'aws-sdk'
|
10
|
+
require 'zlib'
|
11
|
+
end
|
12
|
+
|
13
|
+
def configure(conf)
|
14
|
+
super
|
15
|
+
|
16
|
+
if aws_key_id = conf['aws_key_id']
|
17
|
+
@aws_key_id = aws_key_id
|
18
|
+
end
|
19
|
+
unless @aws_key_id
|
20
|
+
raise ConfigError, "'aws_key_id' parameter is required on file output"
|
21
|
+
end
|
22
|
+
|
23
|
+
if aws_sec_key = conf['aws_sec_key']
|
24
|
+
@aws_sec_key = aws_sec_key
|
25
|
+
end
|
26
|
+
unless @aws_sec_key
|
27
|
+
raise ConfigError, "'aws_sec_key' parameter is required on file output"
|
28
|
+
end
|
29
|
+
|
30
|
+
if s3_bucket = conf['s3_bucket']
|
31
|
+
@s3_bucket = s3_bucket
|
32
|
+
end
|
33
|
+
unless @s3_bucket
|
34
|
+
raise ConfigError, "'s3_bucket' parameter is required on file output"
|
35
|
+
end
|
36
|
+
|
37
|
+
if path = conf['path']
|
38
|
+
@path = path
|
39
|
+
end
|
40
|
+
unless @path
|
41
|
+
raise ConfigError, "'path' parameter is required on file output"
|
42
|
+
end
|
43
|
+
|
44
|
+
if @localtime
|
45
|
+
@formatter = Proc.new {|tag,event|
|
46
|
+
"#{Time.at(event.time).iso8601}\t#{tag}\t#{event.record.to_json}\n"
|
47
|
+
}
|
48
|
+
else
|
49
|
+
@formatter = Proc.new {|tag,event|
|
50
|
+
"#{Time.at(event.time).utc.iso8601}\t#{tag}\t#{event.record.to_json}\n"
|
51
|
+
}
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def start
|
56
|
+
super
|
57
|
+
@s3 = AWS::S3.new(
|
58
|
+
:access_key_id=>@aws_key_id,
|
59
|
+
:secret_access_key=>@aws_sec_key)
|
60
|
+
@bucket = @s3.buckets[@s3_bucket]
|
61
|
+
end
|
62
|
+
|
63
|
+
def format(tag, event)
|
64
|
+
@formatter.call(tag, event)
|
65
|
+
end
|
66
|
+
|
67
|
+
def write(chunk)
|
68
|
+
s3path = "#{@path}#{chunk.key}.gz"
|
69
|
+
|
70
|
+
tmp = Tempfile.new("s3-")
|
71
|
+
w = Zlib::GzipWriter.new(tmp)
|
72
|
+
begin
|
73
|
+
chunk.write_to(w)
|
74
|
+
w.finish
|
75
|
+
@bucket.objects[s3path].write(Pathname.new(tmp.path))
|
76
|
+
ensure
|
77
|
+
w.close rescue nil
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
|
83
|
+
end
|
84
|
+
|
metadata
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fluent-plugin-s3
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 25
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Sadayuki Furuhashi
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-09-27 00:00:00 +09:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: fluent
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 39
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
- 9
|
33
|
+
- 14
|
34
|
+
version: 0.9.14
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: *id001
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: aws-sdk
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
hash: 21
|
46
|
+
segments:
|
47
|
+
- 1
|
48
|
+
- 1
|
49
|
+
- 3
|
50
|
+
version: 1.1.3
|
51
|
+
type: :runtime
|
52
|
+
version_requirements: *id002
|
53
|
+
description:
|
54
|
+
email: frsyuki@gmail.com
|
55
|
+
executables: []
|
56
|
+
|
57
|
+
extensions: []
|
58
|
+
|
59
|
+
extra_rdoc_files:
|
60
|
+
- ChangeLog
|
61
|
+
- README.rdoc
|
62
|
+
files:
|
63
|
+
- AUTHORS
|
64
|
+
- Rakefile
|
65
|
+
- VERSION
|
66
|
+
- lib/fluent/plugin/out_s3.rb
|
67
|
+
- ChangeLog
|
68
|
+
- README.rdoc
|
69
|
+
has_rdoc: true
|
70
|
+
homepage: http://fluent.github.com/
|
71
|
+
licenses: []
|
72
|
+
|
73
|
+
post_install_message:
|
74
|
+
rdoc_options:
|
75
|
+
- --charset=UTF-8
|
76
|
+
require_paths:
|
77
|
+
- lib
|
78
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
79
|
+
none: false
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
hash: 3
|
84
|
+
segments:
|
85
|
+
- 0
|
86
|
+
version: "0"
|
87
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
88
|
+
none: false
|
89
|
+
requirements:
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
hash: 3
|
93
|
+
segments:
|
94
|
+
- 0
|
95
|
+
version: "0"
|
96
|
+
requirements: []
|
97
|
+
|
98
|
+
rubyforge_project:
|
99
|
+
rubygems_version: 1.3.7
|
100
|
+
signing_key:
|
101
|
+
specification_version: 3
|
102
|
+
summary: Amazon S3 output plugin for Fluent event collector
|
103
|
+
test_files: []
|
104
|
+
|