Class: Kybus::AWS::Queue
Instance Attribute Summary collapse
Attributes inherited from Resource
#region
Instance Method Summary
collapse
Methods inherited from Resource
#account_id, #with_retries
Constructor Details
#initialize(configs, name) ⇒ Queue
Returns a new instance of Queue.
8
9
10
11
12
|
# File 'lib/kybus/aws/queue.rb', line 8
def initialize(configs, name)
require 'aws-sdk-sqs'
super(configs)
@name = name
end
|
Instance Attribute Details
#name ⇒ Object
Returns the value of attribute name.
6
7
8
|
# File 'lib/kybus/aws/queue.rb', line 6
def name
@name
end
|
#queue_url ⇒ Object
Returns the value of attribute queue_url.
6
7
8
|
# File 'lib/kybus/aws/queue.rb', line 6
def queue_url
@queue_url
end
|
Instance Method Details
#arn ⇒ Object
48
49
50
|
# File 'lib/kybus/aws/queue.rb', line 48
def arn
"arn:aws:sqs:#{region}:#{account_id}:#{name}"
end
|
#create_or_update! ⇒ Object
18
19
20
21
22
|
# File 'lib/kybus/aws/queue.rb', line 18
def create_or_update!
create_queue!
make_write_policy.create_or_update!
make_processor_policy.create_or_update!
end
|
#create_queue! ⇒ Object
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# File 'lib/kybus/aws/queue.rb', line 24
def create_queue!
response = sqs_client.create_queue({
queue_name: name,
attributes: {
'DelaySeconds' => '0',
'MessageRetentionPeriod' => '86400'
}
})
@queue_url = response.queue_url
puts "Queue '#{name}' created with URL #{@queue_url}"
@queue_url
rescue Aws::SQS::Errors::QueueNameExists
@queue_url = sqs_client.get_queue_url(name:).queue_url
puts "Queue '#{name}' already exists with URL #{@queue_url}"
@queue_url
end
|
#destroy! ⇒ Object
41
42
43
44
45
46
|
# File 'lib/kybus/aws/queue.rb', line 41
def destroy!
sqs_client.delete_queue(queue_url: @queue_url)
puts "Queue '#{name}' deleted."
rescue Aws::SQS::Errors::NonExistentQueue
puts "Queue '#{name}' not found."
end
|
#make_processor_policy ⇒ Object
92
93
94
95
|
# File 'lib/kybus/aws/queue.rb', line 92
def make_processor_policy
policy_name = "#{name}_queue_processor"
@make_processor_policy ||= Policy.new(@config, policy_name, queue_processor_policy_document)
end
|
#make_write_policy ⇒ Object
87
88
89
90
|
# File 'lib/kybus/aws/queue.rb', line 87
def make_write_policy
policy_name = "#{name}_queue_publisher"
@make_write_policy ||= Policy.new(@config, policy_name, queue_write_policy_document)
end
|
#queue_processor_policy_document ⇒ Object
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
# File 'lib/kybus/aws/queue.rb', line 70
def queue_processor_policy_document
{
Version: '2012-10-17',
Statement: [{
Effect: 'Allow',
Action: [
'sqs:ReceiveMessage',
'sqs:SendMessage',
'sqs:Get*',
'sqs:DeleteMEssage',
'sqs:ChangeMessageVisibility'
],
Resource: [arn]
}]
}
end
|
#queue_write_policy_document ⇒ Object
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/kybus/aws/queue.rb', line 52
def queue_write_policy_document
{
Version: '2012-10-17',
Statement: [
{
Effect: 'Allow',
Action: [
'sqs:Get*',
'sqs:SendMessage'
],
Resource: [
arn
]
}
]
}
end
|
#sqs_client ⇒ Object
14
15
16
|
# File 'lib/kybus/aws/queue.rb', line 14
def sqs_client
@sqs_client ||= Aws::SQS::Client.new(region: @region)
end
|