aws-broker 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +53 -3
- data/lib/aws/broker/base.rb +4 -8
- data/lib/aws/broker/config.rb +3 -5
- data/lib/aws/broker/constants.rb +1 -1
- data/lib/aws/broker/subscriber.rb +27 -23
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 47445eb1fe64609e924b638fba632b0d59808374
|
4
|
+
data.tar.gz: ffaa55778697fe1c9fa6dd4e59d79e07dbd23f6a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 00cbd98f3230911e14f541a5f917e6009ed6c83673f8298d73cebe9f0a1a522c9eb903d38cbcafae28e933b5c702639cbdf7ab9b7c4b6c130261ca5c43b01787
|
7
|
+
data.tar.gz: b627d025fe2558cfdd629ff289bc5a18602a25f2e70e6a164aeedb081954b6db930e02f462001b70fd58cf3d52208fe1972c00c3e826511b0fd9c2467753b349
|
data/README.md
CHANGED
@@ -1,22 +1,72 @@
|
|
1
|
-
# AWS Broker
|
1
|
+
# AWS Broker [](https://badge.fury.io/rb/aws-broker)
|
2
2
|
|
3
3
|
:incoming_envelope: Ruby pub-sub on AWS
|
4
4
|
|
5
5
|
* * *
|
6
6
|
|
7
|
+
[](https://circleci.com/gh/Thanx/aws-broker)
|
8
|
+
|
7
9
|
### Background
|
8
10
|
|
9
11
|
This lightweight abstraction simplifies pub-sub on AWS's SNS and SQS services.
|
10
12
|
Message processing is not part of this gem - we recommend using
|
11
13
|
[Shoryuken](https://github.com/phstc/shoryuken) in addition to this gem.
|
12
14
|
|
13
|
-
###
|
15
|
+
### Installation
|
14
16
|
|
15
|
-
|
17
|
+
gem 'aws-broker'
|
18
|
+
|
19
|
+
### Usage
|
16
20
|
|
17
21
|
Broker = Aws::Broker
|
18
22
|
topic = 'topic'
|
19
23
|
queue = 'queue'
|
20
24
|
message = { id: 0 }
|
25
|
+
|
26
|
+
# subscribe topic to specified queue
|
21
27
|
Broker.subscribe(topic, queue)
|
28
|
+
|
29
|
+
# subscribe topic to default queue
|
30
|
+
# "topic" or "prefix-topic" (see options)
|
31
|
+
Broker.subscribe(topic)
|
32
|
+
|
33
|
+
# publish message to topic
|
22
34
|
Broker.publish(topic, message)
|
35
|
+
|
36
|
+
### Configuration
|
37
|
+
|
38
|
+
#### Broker Options
|
39
|
+
|
40
|
+
Aws::Broker can be configured via the following:
|
41
|
+
|
42
|
+
Aws::Broker.configure do |config|
|
43
|
+
config.enabled = false
|
44
|
+
config.queue_prefix = 'prefix'
|
45
|
+
end
|
46
|
+
|
47
|
+
The following options are available:
|
48
|
+
|
49
|
+
| Option | Default | Description |
|
50
|
+
|----------------|---------|--------------------------------------------------|
|
51
|
+
| `enabled` | true | if false, don't trigger API calls to AWS |
|
52
|
+
| `queue_prefix` | nil | prefix for default queue name (prefix-topic) |
|
53
|
+
|
54
|
+
#### AWS Client
|
55
|
+
|
56
|
+
AWS Broker wraps the AWS SQS and SNS clients. All configuration is the same as
|
57
|
+
the AWS SDK. See
|
58
|
+
[Configuring the AWS SDK for Ruby](http://docs.aws.amazon.com/sdk-for-ruby/v3/developer-guide/setup-config.html)
|
59
|
+
for details.
|
60
|
+
|
61
|
+
Some supported options:
|
62
|
+
|
63
|
+
* `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_REGION` env variables
|
64
|
+
* shared `~/.aws/credentials` file
|
65
|
+
* IAM
|
66
|
+
* `Aws.config[:credentials]`
|
67
|
+
|
68
|
+
### Inspiration
|
69
|
+
|
70
|
+
* [propono](https://github.com/iHiD/propono)
|
71
|
+
* [shoryuken](https://github.com/phstc/shoryuken)
|
72
|
+
* [bunny](https://github.com/ruby-amqp/bunny)
|
data/lib/aws/broker/base.rb
CHANGED
@@ -5,7 +5,7 @@ module Aws
|
|
5
5
|
private
|
6
6
|
|
7
7
|
def enabled?
|
8
|
-
|
8
|
+
config.enabled?
|
9
9
|
end
|
10
10
|
|
11
11
|
def create_topic
|
@@ -13,15 +13,11 @@ module Aws
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def sns
|
16
|
-
@sns ||= Aws::SNS::Client.new
|
16
|
+
@sns ||= Aws::SNS::Client.new
|
17
17
|
end
|
18
18
|
|
19
|
-
def
|
20
|
-
|
21
|
-
access_key_id: ENV['AWS_ACCESS_KEY'],
|
22
|
-
secret_access_key: ENV['AWS_SECRET_KEY'],
|
23
|
-
region: ENV['AWS_REGION']
|
24
|
-
}
|
19
|
+
def config
|
20
|
+
Broker.config
|
25
21
|
end
|
26
22
|
|
27
23
|
end
|
data/lib/aws/broker/config.rb
CHANGED
@@ -2,14 +2,12 @@ module Aws
|
|
2
2
|
class Broker
|
3
3
|
class Config
|
4
4
|
|
5
|
-
attr_accessor :enabled
|
5
|
+
attr_accessor :enabled, :queue_prefix
|
6
6
|
alias_method :enabled?, :enabled
|
7
7
|
|
8
|
-
attr_accessor :queue_prefix
|
9
|
-
|
10
8
|
def initialize
|
11
|
-
self.enabled
|
12
|
-
self.queue_prefix
|
9
|
+
self.enabled = true
|
10
|
+
self.queue_prefix = nil
|
13
11
|
end
|
14
12
|
|
15
13
|
end
|
data/lib/aws/broker/constants.rb
CHANGED
@@ -12,6 +12,7 @@ module Aws
|
|
12
12
|
def subscribe
|
13
13
|
return unless enabled?
|
14
14
|
create_queue
|
15
|
+
find_queue_arn
|
15
16
|
create_topic
|
16
17
|
sns.subscribe(
|
17
18
|
topic_arn: @topic_arn,
|
@@ -24,8 +25,8 @@ module Aws
|
|
24
25
|
private
|
25
26
|
|
26
27
|
def queue_name
|
27
|
-
if
|
28
|
-
"#{
|
28
|
+
if config.queue_prefix
|
29
|
+
"#{config.queue_prefix}-#{@topic}"
|
29
30
|
else
|
30
31
|
@topic
|
31
32
|
end
|
@@ -35,6 +36,9 @@ module Aws
|
|
35
36
|
@queue_url = sqs.create_queue(
|
36
37
|
queue_name: @queue
|
37
38
|
).queue_url
|
39
|
+
end
|
40
|
+
|
41
|
+
def find_queue_arn
|
38
42
|
@queue_arn = sqs.get_queue_attributes(
|
39
43
|
queue_url: @queue_url,
|
40
44
|
attribute_names: ['QueueArn']
|
@@ -50,31 +54,31 @@ module Aws
|
|
50
54
|
|
51
55
|
def policy
|
52
56
|
<<-POLICY
|
53
|
-
{
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
}
|
57
|
+
{
|
58
|
+
"Version": "2008-10-17",
|
59
|
+
"Id": "#{@queue_arn}/SQSDefaultPolicy",
|
60
|
+
"Statement": [
|
61
|
+
{
|
62
|
+
"Sid": "#{@queue_arn}-Sid",
|
63
|
+
"Effect": "Allow",
|
64
|
+
"Principal": {
|
65
|
+
"AWS": "*"
|
66
|
+
},
|
67
|
+
"Action": "SQS:*",
|
68
|
+
"Resource": "#{@queue_arn}",
|
69
|
+
"Condition": {
|
70
|
+
"StringEquals": {
|
71
|
+
"aws:SourceArn": "#{@topic_arn}"
|
72
|
+
}
|
73
|
+
}
|
74
|
+
}
|
75
|
+
]
|
76
|
+
}
|
73
77
|
POLICY
|
74
78
|
end
|
75
79
|
|
76
80
|
def sqs
|
77
|
-
@sqs ||= Aws::SQS::Client.new
|
81
|
+
@sqs ||= Aws::SQS::Client.new
|
78
82
|
end
|
79
83
|
|
80
84
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aws-broker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eng @ Thanx
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-11-
|
11
|
+
date: 2017-11-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-sns
|