Sha256: 5da983b38d456f5c079d9bf52af2af3dd487b54ac18a23ceb9dc62504f75299f

Contents?: true

Size: 1.87 KB

Versions: 5

Compression:

Stored size: 1.87 KB

Contents

module Fluent
    
    require 'aws-sdk'

    class SNSOutput < Output
        
        Fluent::Plugin.register_output('sns', self)
        
        include SetTagKeyMixin
        config_set_default :include_tag_key, false
        
        include SetTimeKeyMixin
        config_set_default :include_time_key, true
        
        config_param :aws_key_id, :string, :default => nil
        config_param :aws_sec_key, :string, :default => nil
        
        config_param :sns_topic_name, :string
        config_param :sns_subject_key, :string, :default => nil
        config_param :sns_subject, :string, :default => nil
        config_param :sns_endpoint, :string, :default => 'sns.ap-northeast-1.amazonaws.com'
        config_param :proxy, :string, :default => ENV['HTTP_PROXY']
        
        def configure(conf)
            super
        end
        
        def start
            super
            options = {}
            options[:sns_endpoint] = @sns_endpoint
            options[:proxy_uri] = @proxy
            if @aws_key_id && @aws_sec_key
              options[:access_key_id] = @aws_key_id
              options[:secret_access_key] = @aws_sec_key
            end
            AWS.config(options)
            
            @sns = AWS::SNS.new
            @topic = get_topic
        end
        
        def shutdown
            super
        end
        
        def emit(tag, es, chain)
            chain.next
            es.each {|time,record|
                record["time"] = Time.at(time).localtime
                subject = record[@sns_subject_key] || @sns_subject  || 'Fluent-Notification'
                @topic.publish(record.to_json, :subject => subject )
            }
        end
        
        def get_topic()
            @sns.topics.each do |topic|
                if @sns_topic_name == topic.name
                    return topic
                end
            end
        end
    end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
fluent-plugin-sns-2.0.2 lib/fluent/plugin/out_sns.rb
fluent-plugin-sns-2.0.0 lib/fluent/plugin/out_sns.rb
fluent-plugin-sns-1.0.2 lib/fluent/plugin/out_sns.rb
fluent-plugin-sns-1.0.1 lib/fluent/plugin/out_sns.rb
fluent-plugin-sns-1.0.0 lib/fluent/plugin/out_sns.rb