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 ADDED
@@ -0,0 +1 @@
1
+ FURUHASHI Sadayuki <frsyuki _at_ gmail.com>
@@ -0,0 +1,7 @@
1
+
2
+ Release 0.1.1 - 2011/09/27
3
+
4
+ * First release
5
+
6
+
7
+
@@ -0,0 +1,7 @@
1
+ = Treasure Data output plugin for Fluent
2
+
3
+ == Copyright
4
+
5
+ Copyright:: Copyright (c) 2011 Treasure Data, Inc.
6
+ License:: Apache License, Version 2.0
7
+
@@ -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
+