Method: Jets::Job::Dsl::SqsEvent#sqs_event

Defined in:
lib/jets/job/dsl/sqs_event.rb

#sqs_event(queue_name, options = {}) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/jets/job/dsl/sqs_event.rb', line 40

def sqs_event(queue_name, options={})
  if queue_name.to_s =~ /generate/
    queue_arn = "!GetAtt {namespace}SqsQueue.Arn"
    default_iam_policy = default_sqs_iam_policy('*') # Dont have access to full ARN on initial creation
    declare_sqs_queue(options.delete(:queue_properties)) # delete to avoid using them for event_source_mapping
  elsif queue_name.include?('!Ref') # reference shared resource
    queue_arn = queue_name
    default_iam_policy = default_sqs_iam_policy('*') # Dont have access to full ARN on initial creation
  else # existing queue: short name or full arn
    queue_arn = full_sqs_queue_arn(queue_name)
    default_iam_policy = default_sqs_iam_policy(queue_arn)
  end

  # Create iam policy allows access to queue
  # Allow disabling in case use wants to add permission application-wide and not have extra IAM policy
  iam_policy_props = options.delete(:iam_policy) || @iam_policy || default_iam_policy
  iam_policy(iam_policy_props) unless iam_policy_props == :disable

  props = options # by this time options only has EventSourceMapping properties
  default = {
    event_source_arn: queue_arn
  }
  props = default.merge(props)

  event_source_mapping(props)
end