Class: Alerty::Plugin::AmazonSns
- Inherits:
-
Object
- Object
- Alerty::Plugin::AmazonSns
- Defined in:
- lib/alerty/plugin/amazon_sns.rb
Instance Method Summary collapse
- #alert(record) ⇒ Object
-
#initialize(config) ⇒ AmazonSns
constructor
A new instance of AmazonSns.
Constructor Details
#initialize(config) ⇒ AmazonSns
Returns a new instance of AmazonSns.
9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/alerty/plugin/amazon_sns.rb', line 9 def initialize(config) raise ConfigError.new('amazon_sns: topic_arn is not configured') unless config.topic_arn raise ConfigError.new('amazon_sns: subject is not configured') unless config.subject # see http://docs.aws.amazon.com/sdkforruby/api/Aws/SNS/Client.html # ENV or ~/.aws/credentials or instance profile on EC2, or alerty config file params = {} params[:region] = config.aws_region || guess_region(config.topic_arn) params[:access_key_id] = config.aws_access_key_id if config.aws_access_key_id params[:secret_access_key] = config.aws_secret_access_key if config.aws_secret_access_key @client = Aws::SNS::Client.new(params) @subject = config.subject @topic_arn = config.topic_arn @num_retries = config.num_retries || 3 end |
Instance Method Details
#alert(record) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/alerty/plugin/amazon_sns.rb', line 24 def alert(record) = record[:output] subject = (@subject, record) subject = subject[0..98] # SNS constraint, must be less than 100 character long retries = 0 begin @client.publish(topic_arn: @topic_arn, message: , subject: subject) Alerty.logger.info "Sent #{{subject: subject, message: }} to #{@topic_arn}" rescue => e retries += 1 sleep 1 if retries <= @num_retries retry else raise e end end end |