Module: Jets::Stack::Main::Dsl::Sqs

Defined in:
lib/jets/stack/main/extensions/sqs.rb

Instance Method Summary collapse

Instance Method Details

#sqs_lambda_trigger(id, props = {}) ⇒ Object



7
8
9
10
# File 'lib/jets/stack/main/extensions/sqs.rb', line 7

def sqs_lambda_trigger(id, props={})
  resource(id, "AWS::Lambda::EventSourceMapping", props)
  output(id)
end

#sqs_queue(id, props = {}) ⇒ Object



3
4
5
6
# File 'lib/jets/stack/main/extensions/sqs.rb', line 3

def sqs_queue(id, props={})
  resource(id, "AWS::SQS::Queue", props)
  output(id)
end

#sqs_queue_with_lambda_trigger(id, props = {}) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/jets/stack/main/extensions/sqs.rb', line 11

def sqs_queue_with_lambda_trigger(id, props={})
  defaults = {
      dlq: {
          queue_name: "#{id}-DLQ"
      },
      queue: {
          queue_name: "#{id}",
          redrive_policy: {
              dead_letter_target_arn: "!GetAtt #{id}DeadLetterQueue.Arn",
          },
          visibility_timeout: 900
      },
      lambda: {
          batch_size: 10,
          enabled: true,
          event_source_arn: "!GetAtt #{id}Queue.Arn",
      }
  }

  sqs_queue("#{id}DeadLetterQueue", defaults[:dlq].deep_merge(props.fetch(:dlq, {})))
  sqs_queue("#{id}Queue", defaults[:queue].deep_merge(props.fetch(:queue, {})))
  sqs_lambda_trigger("#{id}LambdaTrigger", defaults[:lambda].deep_merge(props.fetch(:lambda, {})))
  [output("#{id}DeadLetterQueue"), output("#{id}Queue"), output("#{id}LambdaTrigger")]
end