class DbBlaster::SnsPublisher

Publishes records to AWS SNS

Public Instance Methods

client() click to toggle source
# File lib/db_blaster/sns_publisher.rb, line 23
def client
  @client ||= Aws::SNS::Client.new(region: DbBlaster.configuration.aws_region,
                                   credentials: Aws::Credentials.new(DbBlaster.configuration.aws_access_key,
                                                                     DbBlaster.configuration.aws_access_secret))
end
message_attributes() click to toggle source
# File lib/db_blaster/sns_publisher.rb, line 29
def message_attributes
  (DbBlaster.configuration.extra_sns_message_attributes || {})
    .merge('source_table' => { data_type: 'String', string_value: source_table.name })
end
publish() click to toggle source
# File lib/db_blaster/sns_publisher.rb, line 10
def publish
  topic.publish(message_attributes: message_attributes,
                message: records.to_json)
end
resource() click to toggle source
# File lib/db_blaster/sns_publisher.rb, line 19
def resource
  @resource ||= Aws::SNS::Resource.new(client: client)
end
topic() click to toggle source
# File lib/db_blaster/sns_publisher.rb, line 15
def topic
  resource.topic(DbBlaster.configuration.sns_topic)
end