jets 5.0.6 → 5.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -0
- data/lib/jets/builders/handler_generator.rb +1 -1
- data/lib/jets/commands/deploy/deploy_command.rb +1 -1
- data/lib/jets/core.rb +2 -2
- data/lib/jets/generators/job/templates/event_types/s3.rb.tt +2 -2
- data/lib/jets/generators/job/templates/event_types/sns.rb.tt +2 -0
- data/lib/jets/generators/job/templates/event_types/sqs.rb.tt +2 -0
- data/lib/jets/job/base.rb +7 -7
- data/lib/jets/job/dsl/s3_event.rb +4 -4
- data/lib/jets/job/helpers/{kinesis_event_helper.rb → kinesis_event.rb} +5 -1
- data/lib/jets/job/helpers/{log_event_helper.rb → log_event.rb} +5 -1
- data/lib/jets/job/helpers/s3_event.rb +50 -0
- data/lib/jets/job/helpers/sns_event.rb +26 -0
- data/lib/jets/job/helpers/sqs_event.rb +26 -0
- data/lib/jets/stack/function.rb +2 -0
- data/lib/jets/stack/output/lookup.rb +5 -1
- data/lib/jets/version.rb +1 -1
- metadata +7 -7
- data/lib/jets/job/helpers/s3_event_helper.rb +0 -13
- data/lib/jets/job/helpers/sns_event_helper.rb +0 -8
- data/lib/jets/job/helpers/sqs_event_helper.rb +0 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3c9deeac005b373929e04e747ce2465b82eccc49a99a39830025228e1da199e7
|
4
|
+
data.tar.gz: e1e5849237312cfe6725a1d4bd163b8b17f4ef904a000b5c5323de05a7afbaf4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c351ace071bea12bca7785140d1a3cd0abcc8750a1e06d99cbe5691af1a26a573f8ff915a1d4569dd97c736df852d83d8944161c2387c42791588f568d13e17f
|
7
|
+
data.tar.gz: 1bef67bd4957279b84d2315597568a78c4fe17806d659116dd59f55018e242b432fbc23d186ca4e171f97db001ac22c5f86158049b817713b2ead712158eb419
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,14 @@
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
This project *loosely tries* to adhere to [Semantic Versioning](http://semver.org/).
|
5
5
|
|
6
|
+
## [5.0.8] - 2023-12-24
|
7
|
+
- [#702](https://github.com/rubyonjets/jets/pull/702) prettier event helpers IE: s3_events vs s3_event_payloads
|
8
|
+
|
9
|
+
## [5.0.7] - 2023-12-24
|
10
|
+
- [#699](https://github.com/rubyonjets/jets/pull/699) cache Stack.lookup output in class memory
|
11
|
+
- [#700](https://github.com/rubyonjets/jets/pull/700) update s3 sns and sqs event helpers to return all events
|
12
|
+
- [#701](https://github.com/rubyonjets/jets/pull/701) fix s3_event and change method to s3_event_payloads
|
13
|
+
|
6
14
|
## [5.0.6] - 2023-12-21
|
7
15
|
- [#698](https://github.com/rubyonjets/jets/pull/698) make iam_policy additive to default_iam_policy for event
|
8
16
|
- jets new environments/production.rb dont include assets.compile for api mode
|
data/lib/jets/core.rb
CHANGED
@@ -4,8 +4,8 @@ class <%= class_name %>Job < ApplicationJob
|
|
4
4
|
s3_event "my-bucket" # new or existing bucket
|
5
5
|
def <%= options[:name] %>
|
6
6
|
puts "event #{JSON.dump(event)}"
|
7
|
-
puts "
|
8
|
-
puts "
|
7
|
+
puts "s3_events #{JSON.dump(s3_events)}"
|
8
|
+
puts "s3_objects #{JSON.dump(s3_objects)}"
|
9
9
|
end
|
10
10
|
end
|
11
11
|
<% end -%>
|
data/lib/jets/job/base.rb
CHANGED
@@ -10,17 +10,17 @@ module Jets::Job
|
|
10
10
|
include Dsl
|
11
11
|
|
12
12
|
# non-DSL methods
|
13
|
-
include Helpers::
|
14
|
-
include Helpers::
|
15
|
-
include Helpers::
|
16
|
-
include Helpers::
|
17
|
-
include Helpers::
|
13
|
+
include Helpers::KinesisEvent
|
14
|
+
include Helpers::LogEvent
|
15
|
+
include Helpers::S3Event
|
16
|
+
include Helpers::SnsEvent
|
17
|
+
include Helpers::SqsEvent
|
18
18
|
prepend Jets::ExceptionReporting::Process
|
19
19
|
|
20
20
|
# Tracks bucket each time an s3_event is declared
|
21
21
|
# Map of bucket_name => stack_name (nested part)
|
22
|
-
cattr_accessor :
|
23
|
-
self.
|
22
|
+
cattr_accessor :_s3_events # dont want this to be inheritable intentionally
|
23
|
+
self._s3_events = {}
|
24
24
|
|
25
25
|
class << self
|
26
26
|
def process(event, context, meth)
|
@@ -11,7 +11,7 @@ module Jets::Job::Dsl
|
|
11
11
|
# We will not generate them again. However, we still need to always
|
12
12
|
# add the depends_on declaration to ensure that the shared stack parameters
|
13
13
|
# are properly passed to the nested child stack.
|
14
|
-
stack_name =
|
14
|
+
stack_name = _s3_events[bucket_name] # already registered
|
15
15
|
if stack_name
|
16
16
|
depends_on stack_name.underscore.to_sym, class_prefix: true # always add this
|
17
17
|
return stack_name
|
@@ -20,7 +20,7 @@ module Jets::Job::Dsl
|
|
20
20
|
# Create shared resources - one time
|
21
21
|
stack_name = declare_shared_s3_event_resources(bucket_name)
|
22
22
|
depends_on stack_name.underscore.to_sym, class_prefix: true # always add this
|
23
|
-
self.
|
23
|
+
self._s3_events[bucket_name] = stack_name # tracks buckets already set up
|
24
24
|
end
|
25
25
|
|
26
26
|
def declare_shared_s3_event_resources(bucket_name)
|
@@ -29,8 +29,8 @@ module Jets::Job::Dsl
|
|
29
29
|
s3_stack.stack_name
|
30
30
|
end
|
31
31
|
|
32
|
-
def
|
33
|
-
Jets::Job::Base.
|
32
|
+
def _s3_events
|
33
|
+
Jets::Job::Base._s3_events
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'base64'
|
2
2
|
|
3
3
|
module Jets::Job::Helpers
|
4
|
-
module
|
4
|
+
module KinesisEvent
|
5
5
|
def kinesis_data
|
6
6
|
records = event["Records"]
|
7
7
|
records.map do |record|
|
@@ -9,5 +9,9 @@ module Jets::Job::Helpers
|
|
9
9
|
Base64.decode64(encoded) # data
|
10
10
|
end
|
11
11
|
end
|
12
|
+
|
13
|
+
def kinesis_data?
|
14
|
+
event["Records"]&.any? { |r| r.dig("kinesis", "data") }
|
15
|
+
end
|
12
16
|
end
|
13
17
|
end
|
@@ -4,7 +4,7 @@ require 'stringio'
|
|
4
4
|
require 'zlib'
|
5
5
|
|
6
6
|
module Jets::Job::Helpers
|
7
|
-
module
|
7
|
+
module LogEvent
|
8
8
|
def log_event
|
9
9
|
encoded = event["awslogs"]["data"]
|
10
10
|
compressed_string = Base64.decode64(encoded)
|
@@ -13,5 +13,9 @@ module Jets::Job::Helpers
|
|
13
13
|
data = JSON.load(uncompressed_string)
|
14
14
|
ActiveSupport::HashWithIndifferentAccess.new(data)
|
15
15
|
end
|
16
|
+
|
17
|
+
def log_event?
|
18
|
+
!!event.dig("awslogs", "data")
|
19
|
+
end
|
16
20
|
end
|
17
21
|
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Jets::Job::Helpers
|
2
|
+
module S3Event
|
3
|
+
def s3_events
|
4
|
+
encoded_messages = event["Records"].map do |record|
|
5
|
+
record["Sns"]["Message"] # SNS message is JSON
|
6
|
+
end
|
7
|
+
# Decode the JSON messages
|
8
|
+
messages = encoded_messages.map do |message|
|
9
|
+
JSON.load(message)
|
10
|
+
end
|
11
|
+
# Extract the S3 event records
|
12
|
+
messages.map do |message|
|
13
|
+
message["Records"].map do |record|
|
14
|
+
ActiveSupport::HashWithIndifferentAccess.new(record)
|
15
|
+
end
|
16
|
+
end.flatten
|
17
|
+
end
|
18
|
+
alias s3_event_payloads s3_events
|
19
|
+
|
20
|
+
def s3_events?
|
21
|
+
event["Records"]&.any? { |r| r.dig("Sns", "Message") }
|
22
|
+
end
|
23
|
+
alias s3_event_payloads? s3_events?
|
24
|
+
|
25
|
+
def s3_objects
|
26
|
+
s3_events.map do |record|
|
27
|
+
record["s3"]["object"]
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def s3_objects?
|
32
|
+
s3_events.any? { |r| r.dig("s3", "object") }
|
33
|
+
end
|
34
|
+
|
35
|
+
# Deprecated methods below
|
36
|
+
def s3_event
|
37
|
+
puts "WARN: s3_event is deprecated".color(:yellow)
|
38
|
+
puts "It can possibly drop events when they come in extremely fast."
|
39
|
+
puts "Use s3_events instead"
|
40
|
+
s3_events.first
|
41
|
+
end
|
42
|
+
|
43
|
+
def s3_object
|
44
|
+
puts "WARN: s3_object is deprecated".color(:yellow)
|
45
|
+
puts "It can possibly drop events when they come in extremely fast."
|
46
|
+
puts "Use s3_objects instead"
|
47
|
+
s3_objects.first
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Jets::Job::Helpers
|
2
|
+
module SnsEvent
|
3
|
+
def sns_events
|
4
|
+
records = event["Records"]
|
5
|
+
return [] unless records
|
6
|
+
records.map do |record|
|
7
|
+
message = record["Sns"]["Message"]
|
8
|
+
ActiveSupport::HashWithIndifferentAccess.new(JSON.load(message))
|
9
|
+
end
|
10
|
+
end
|
11
|
+
alias sns_event_payloads sns_events
|
12
|
+
|
13
|
+
def sns_events?
|
14
|
+
event["Records"]&.any? { |r| r.dig("Sns", "Message") }
|
15
|
+
end
|
16
|
+
alias sns_event_payloads? sns_events?
|
17
|
+
|
18
|
+
# Deprecated methods below
|
19
|
+
def sns_event_payload
|
20
|
+
puts "WARN: sns_event_payload is deprecated".color(:yellow)
|
21
|
+
puts "It can possibly drop events when they come in extremely fast."
|
22
|
+
puts "Use sns_events instead"
|
23
|
+
sns_events.first
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Jets::Job::Helpers
|
2
|
+
module SqsEvent
|
3
|
+
def sqs_events
|
4
|
+
records = event["Records"]
|
5
|
+
return [] unless records
|
6
|
+
records.map do |record|
|
7
|
+
message = record["body"]
|
8
|
+
ActiveSupport::HashWithIndifferentAccess.new(JSON.load(message))
|
9
|
+
end
|
10
|
+
end
|
11
|
+
alias sqs_event_payloads sqs_events
|
12
|
+
|
13
|
+
def sqs_events?
|
14
|
+
event["Records"]&.any? { |r| r.dig("body") }
|
15
|
+
end
|
16
|
+
alias sqs_event_payloads? sqs_events?
|
17
|
+
|
18
|
+
# Deprecated methods below
|
19
|
+
def sqs_event_payload
|
20
|
+
puts "WARN: sqs_event_payload is deprecated".color(:yellow)
|
21
|
+
puts "It can possibly drop events when they come in extremely fast."
|
22
|
+
puts "Use sqs_events instead"
|
23
|
+
sqs_events.first
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/jets/stack/function.rb
CHANGED
@@ -56,6 +56,8 @@ class Jets::Stack
|
|
56
56
|
|
57
57
|
# Internal flag is mainly used to disable WARN messages
|
58
58
|
def internal?
|
59
|
+
return true if internal_search_expression.include?("jets/base_path")
|
60
|
+
return true if internal_search_expression.include?("jets/s3_bucket_config")
|
59
61
|
!!Dir.glob(internal_search_expression).first
|
60
62
|
end
|
61
63
|
|
@@ -6,7 +6,11 @@ class Jets::Stack::Output
|
|
6
6
|
@stack_subclass = stack_subclass
|
7
7
|
end
|
8
8
|
|
9
|
+
@@cache = {}
|
9
10
|
def output(logical_id)
|
11
|
+
cache_key = "#{@stack_subclass}-#{logical_id}"
|
12
|
+
return @@cache[cache_key] if @@cache[cache_key]
|
13
|
+
|
10
14
|
child_stack_id = @stack_subclass.to_s.camelize
|
11
15
|
|
12
16
|
stack_arn = shared_stack_arn(child_stack_id)
|
@@ -14,7 +18,7 @@ class Jets::Stack::Output
|
|
14
18
|
child = resp.stacks.first
|
15
19
|
return unless child
|
16
20
|
|
17
|
-
output_value(child, logical_id)
|
21
|
+
@@cache[cache_key] = output_value(child, logical_id)
|
18
22
|
end
|
19
23
|
|
20
24
|
# Shared child stack arn
|
data/lib/jets/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0.
|
4
|
+
version: 5.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tung Nguyen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-12-
|
11
|
+
date: 2023-12-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionmailer
|
@@ -1039,11 +1039,11 @@ files:
|
|
1039
1039
|
- lib/jets/job/dsl/s3_event.rb
|
1040
1040
|
- lib/jets/job/dsl/sns_event.rb
|
1041
1041
|
- lib/jets/job/dsl/sqs_event.rb
|
1042
|
-
- lib/jets/job/helpers/
|
1043
|
-
- lib/jets/job/helpers/
|
1044
|
-
- lib/jets/job/helpers/
|
1045
|
-
- lib/jets/job/helpers/
|
1046
|
-
- lib/jets/job/helpers/
|
1042
|
+
- lib/jets/job/helpers/kinesis_event.rb
|
1043
|
+
- lib/jets/job/helpers/log_event.rb
|
1044
|
+
- lib/jets/job/helpers/s3_event.rb
|
1045
|
+
- lib/jets/job/helpers/sns_event.rb
|
1046
|
+
- lib/jets/job/helpers/sqs_event.rb
|
1047
1047
|
- lib/jets/klass.rb
|
1048
1048
|
- lib/jets/lambda/definition.rb
|
1049
1049
|
- lib/jets/lambda/dsl.rb
|
@@ -1,13 +0,0 @@
|
|
1
|
-
module Jets::Job::Helpers
|
2
|
-
module S3EventHelper
|
3
|
-
def s3_event
|
4
|
-
message = event["Records"][0]["Sns"]["Message"]
|
5
|
-
h = JSON.load(message)
|
6
|
-
ActiveSupport::HashWithIndifferentAccess.new(h)
|
7
|
-
end
|
8
|
-
|
9
|
-
def s3_object
|
10
|
-
s3_event["Records"][0]["s3"]["object"]
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|