Amazon SNS output plugin for Fluent

Install

$ gem install fluent-plugin-sns

Component

SNSOutput

Send fluent-event as message to amazon SNS.

Configuratin

SNSOutput

<match sns.**>

  type sns

  # following attibutes are required

  sns_topic_name {sns_topic_name}

  # following attibutes are required if you don't use IAM Role nor export credentials to ENV

  aws_key_id {your_aws_key_id}
  aws_sec_key {your_aws_secret_key}

  # following attibutes are optional

  sns_endpoint {endpointURL}

  ### endpoint list ###
  # Asia Pacific (Tokyo) [Default] : sns.ap-northeast-1.amazonaws.com
  # Asia Pacific (Singapore)       : sns.ap-southeast-1.amazonaws.com
  # US-East (Virginia)             : sns.us-east-1.amazonaws.com
  # US-West (Oregon)               : sns.us-west-2.amazonaws.com
  # US-West (N.California)         : sns.us-west-1.amazonaws.com
  # EU-West (Ireland)              : sns.eu-west-1.amazonaws.com
  # South America (São Paulo)      : sns.sa-east-1.amazonaws.com

  sns_subject_template {template_erb_file_path}
  sns_subject_key {sns_subject_key}
  sns_subject {sns_subject} #constant subject

  sns_body_template {sns_body_template}
  sns_body_key {sns_body_key}

  proxy http(s)://{url}:{port}

</match>

Example

fluentd.conf

<match sns.**>

  type sns

  sns_topic_name example

  sns_endpoint sns.ap-northeast-1.amazonaws.com

  sns_subject_key from
  sns_body_template /path/to/template/body_template.erb

</match>

template

/path/to/template/body_template.erb

hello <%= record['to'] %>!

sample input

$ echo '{"from":'Alice',"to":"Bob" }' | fluent-cat sns.example

Then, the message is published. (subject -> ‘Alice’, body -> ‘hello Bob!’)

Copyright

Copyright © 2011- Yuri Odagiri

License

Apache License, Version 2.0