Module: SendAwsKinesisEvent

Defined in:
lib/send_aws_kinesis_event.rb,
lib/send_aws_kinesis_event/version.rb

Constant Summary collapse

VERSION =
"1.0.4"

Class Method Summary collapse

Class Method Details

.call(partition_key, data) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/send_aws_kinesis_event.rb', line 5

def self.call(partition_key, data)
  begin
    kinesis = Aws::Kinesis::Client.new(
        region: ENV['AWS_REGION'],
        access_key_id: ENV['AWS_ACCESS_KEY_ID'],
        secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
    )

    data_blob = MultiJson.dump(data)

    record = kinesis.put_record(:stream_name => ENV['KINESIS_STREAM_NAME'],
                           :data => data_blob,
                           :partition_key => partition_key
    )
  rescue
    if record
      shard_id = record[:shard_id] if record
      sequence_number = record[:sequence_number] if record
    end
    Rails.logger.info "Put Kinesis event record to partition key '#{partition_key}' shard '#{shard_id}' (#{sequence_number}): '#{data_blob}'"
  end
end