jets 1.7.2 → 1.8.0
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/CHANGELOG.md +6 -0
- data/README.md +1 -1
- data/jets.gemspec +2 -0
- data/lib/jets.rb +1 -0
- data/lib/jets/application.rb +45 -21
- data/lib/jets/aws_services.rb +2 -0
- data/lib/jets/aws_services/s3_bucket.rb +26 -0
- data/lib/jets/booter.rb +82 -2
- data/lib/jets/builders/code_builder.rb +20 -7
- data/lib/jets/builders/handler_generator.rb +20 -6
- data/lib/jets/cfn/builders/base_child_builder.rb +5 -17
- data/lib/jets/cfn/builders/parent_builder.rb +1 -1
- data/lib/jets/commands/build.rb +6 -0
- data/lib/jets/commands/deploy.rb +10 -0
- data/lib/jets/commands/templates/skeleton/config/environments/development.rb +4 -1
- data/lib/jets/commands/templates/skeleton/config/environments/production.rb +6 -1
- data/lib/jets/commands/templates/skeleton/config/environments/test.rb +7 -0
- data/lib/jets/controller/base.rb +1 -2
- data/lib/jets/controller/rendering/rack_renderer.rb +11 -3
- data/lib/jets/core.rb +5 -72
- data/lib/jets/internal/app/controllers/jets/mailers_controller.rb +97 -0
- data/lib/jets/internal/app/helpers/jets/mailers_helper.rb +9 -0
- data/lib/jets/internal/app/shared/functions/jets/s3_bucket_config.rb +43 -0
- data/lib/jets/internal/app/views/jets/mailers/email.html.erb +145 -0
- data/lib/jets/internal/app/views/jets/mailers/index.html.erb +8 -0
- data/lib/jets/internal/app/views/jets/mailers/mailer.html.erb +6 -0
- data/lib/jets/job/base.rb +10 -0
- data/lib/jets/job/dsl.rb +2 -0
- data/lib/jets/job/dsl/s3_event.rb +36 -0
- data/lib/jets/job/dsl/sns_event.rb +8 -0
- data/lib/jets/job/s3_event_helper.rb +13 -0
- data/lib/jets/lambda/dsl.rb +11 -1
- data/lib/jets/mailer.rb +51 -0
- data/lib/jets/resource/child_stack/app_class.rb +6 -15
- data/lib/jets/resource/child_stack/shared.rb +3 -1
- data/lib/jets/resource/events/rule.rb +1 -1
- data/lib/jets/resource/lambda/event_source_mapping.rb +1 -1
- data/lib/jets/resource/permission.rb +1 -1
- data/lib/jets/resource/replacer.rb +8 -0
- data/lib/jets/resource/s3.rb +3 -17
- data/lib/jets/resource/s3/bucket.rb +24 -0
- data/lib/jets/resource/sns.rb +1 -0
- data/lib/jets/resource/sns/subscription.rb +1 -1
- data/lib/jets/resource/sns/topic.rb +1 -1
- data/lib/jets/resource/sns/topic_policy.rb +40 -0
- data/lib/jets/resource/sqs/queue.rb +1 -1
- data/lib/jets/stack.rb +19 -3
- data/lib/jets/stack/builder.rb +6 -1
- data/lib/jets/stack/depends.rb +36 -0
- data/lib/jets/stack/depends/item.rb +9 -0
- data/lib/jets/stack/function.rb +19 -10
- data/lib/jets/stack/main/dsl.rb +4 -0
- data/lib/jets/stack/main/extensions/iam.rb +8 -0
- data/lib/jets/stack/main/extensions/lambda.rb +20 -7
- data/lib/jets/stack/main/extensions/s3.rb +12 -0
- data/lib/jets/stack/main/extensions/sns.rb +4 -0
- data/lib/jets/stack/s3_event.rb +87 -0
- data/lib/jets/turbine.rb +11 -0
- data/lib/jets/version.rb +1 -1
- metadata +48 -2
data/lib/jets/stack/builder.rb
CHANGED
@@ -17,7 +17,12 @@ class Jets::Stack
|
|
17
17
|
|
18
18
|
def build_section(section)
|
19
19
|
elements = build_elements(section)
|
20
|
-
|
20
|
+
return unless elements
|
21
|
+
|
22
|
+
if section == :parameters
|
23
|
+
elements["GemLayer"] = {"Type"=>"String"} unless Jets.poly_only?
|
24
|
+
end
|
25
|
+
@template[section] = elements
|
21
26
|
end
|
22
27
|
|
23
28
|
def build_elements(section)
|
@@ -0,0 +1,36 @@
|
|
1
|
+
class Jets::Stack
|
2
|
+
class Depends
|
3
|
+
autoload :Item, "jets/stack/depends/item"
|
4
|
+
|
5
|
+
def initialize(items)
|
6
|
+
@items = items
|
7
|
+
end
|
8
|
+
|
9
|
+
def params
|
10
|
+
result = {}
|
11
|
+
@items.each do |item|
|
12
|
+
logical_id = item.stack.to_s.camelize # logical_id
|
13
|
+
dependency_outputs(logical_id).each do |output|
|
14
|
+
dependency_class = logical_id.to_s.classify
|
15
|
+
output_key = item.options[:class_prefix] ?
|
16
|
+
"#{dependency_class}#{output}" : # already camelized
|
17
|
+
output
|
18
|
+
|
19
|
+
output_value = "!GetAtt #{dependency_class}.Outputs.#{output}"
|
20
|
+
result[output_key] = output_value
|
21
|
+
end
|
22
|
+
end
|
23
|
+
result
|
24
|
+
end
|
25
|
+
|
26
|
+
def stack_list
|
27
|
+
@items.map do |item|
|
28
|
+
item.stack.to_s.camelize # logical_id # logical_id
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def dependency_outputs(logical_id)
|
33
|
+
logical_id.to_s.classify.constantize.output_keys
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/jets/stack/function.rb
CHANGED
@@ -14,6 +14,8 @@ class Jets::Stack
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def lang
|
17
|
+
return if internal?
|
18
|
+
|
17
19
|
if source_file
|
18
20
|
# Detect language from file extension
|
19
21
|
ext = File.extname(source_file).sub(/^\./,'').to_sym
|
@@ -37,24 +39,31 @@ class Jets::Stack
|
|
37
39
|
memoize :source_file
|
38
40
|
|
39
41
|
def search_expression
|
42
|
+
base_search_expression.sub('handlers/shared/', "#{Jets.root}/app/shared/")
|
43
|
+
end
|
44
|
+
|
45
|
+
def internal_search_expression
|
46
|
+
internal = File.expand_path("../internal", File.dirname(__FILE__))
|
47
|
+
base_search_expression.sub('handlers/shared/', "#{internal}/app/shared/")
|
48
|
+
end
|
49
|
+
|
50
|
+
def base_search_expression
|
40
51
|
attributes = @template.values.first
|
41
52
|
handler = attributes['Properties']['Handler']
|
42
|
-
|
43
|
-
|
53
|
+
handler.split('.')[0..-2].join('.') + '.*' # search_expression
|
54
|
+
# Example: handlers/shared/functions/jets/s3_bucket_config.*
|
55
|
+
end
|
56
|
+
|
57
|
+
# Internal flag is mainly used to disable WARN messages
|
58
|
+
def internal?
|
59
|
+
!!Dir.glob(internal_search_expression).first
|
44
60
|
end
|
45
61
|
|
46
62
|
# Relative path
|
47
63
|
# app/shared/functions/kevin.py => handlers/shared/functions/kevin.py
|
48
64
|
def handler_dest
|
49
65
|
return unless source_file
|
50
|
-
|
51
|
-
dest = source_file.sub(%r{.*/app/}, "handlers/")
|
52
|
-
if lang == :ruby
|
53
|
-
filename = dest.split('.').first
|
54
|
-
filename + '.js' # change extension to .js because ruby uses a node shim
|
55
|
-
else
|
56
|
-
dest
|
57
|
-
end
|
66
|
+
source_file.sub(%r{.*/app/}, "handlers/")
|
58
67
|
end
|
59
68
|
end
|
60
69
|
end
|
data/lib/jets/stack/main/dsl.rb
CHANGED
@@ -4,14 +4,18 @@ class Jets::Stack
|
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
autoload :Base, 'jets/stack/main/extensions/base'
|
6
6
|
autoload :Cloudwatch, 'jets/stack/main/extensions/cloudwatch'
|
7
|
+
autoload :Iam, 'jets/stack/main/extensions/iam'
|
7
8
|
autoload :Lambda, 'jets/stack/main/extensions/lambda'
|
9
|
+
autoload :S3, 'jets/stack/main/extensions/s3'
|
8
10
|
autoload :Sns, 'jets/stack/main/extensions/sns'
|
9
11
|
autoload :Sqs, 'jets/stack/main/extensions/sqs'
|
10
12
|
|
11
13
|
class_methods do
|
12
14
|
include Base
|
13
15
|
include Cloudwatch
|
16
|
+
include Iam
|
14
17
|
include Lambda
|
18
|
+
include S3
|
15
19
|
include Sns
|
16
20
|
include Sqs
|
17
21
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
module Jets::Stack::Main::Dsl
|
2
2
|
module Lambda
|
3
|
+
MAX_FUNCTION_NAME_SIZE = 64
|
3
4
|
# Example:
|
4
5
|
#
|
5
6
|
# function(:hello,
|
@@ -20,39 +21,45 @@ module Jets::Stack::Main::Dsl
|
|
20
21
|
#
|
21
22
|
def function(id, props={})
|
22
23
|
# Required: code, handler, role, runtime Docs: https://amzn.to/2pdot7S
|
23
|
-
meth = id
|
24
|
+
meth = sanitize_method_name(id)
|
24
25
|
class_namespace = self.to_s.underscore.gsub('/','-') # IE: Jets::Domain => jets-domain
|
25
|
-
|
26
|
+
description = "#{self.to_s} #{meth}" # not bother adding extension
|
26
27
|
defaults = {
|
27
|
-
function_name: function_name,
|
28
28
|
code: {
|
29
29
|
s3_bucket: "!Ref S3Bucket",
|
30
30
|
s3_key: code_s3_key
|
31
31
|
},
|
32
32
|
role: "!Ref IamRole",
|
33
|
-
handler: "#{
|
33
|
+
handler: "#{id}.lambda_handler", # default ruby convention
|
34
34
|
runtime: :ruby,
|
35
35
|
timeout: Jets.config.function.timeout,
|
36
36
|
memory_size: Jets.config.function.memory_size,
|
37
|
+
description: description,
|
37
38
|
}
|
39
|
+
|
40
|
+
function_name = "#{Jets.config.project_namespace}-#{class_namespace}-#{meth}"
|
41
|
+
function_name.size > MAX_FUNCTION_NAME_SIZE ? nil : function_name
|
42
|
+
defaults[:function_name] = function_name if function_name
|
43
|
+
|
38
44
|
props = defaults.merge(props)
|
39
45
|
props[:runtime] = "ruby2.5" if props[:runtime].to_s == "ruby"
|
40
46
|
props[:handler] = handler(props[:handler])
|
41
47
|
|
42
|
-
|
48
|
+
logical_id = id.to_s.gsub('/','_')
|
49
|
+
resource(logical_id, "AWS::Lambda::Function", props)
|
43
50
|
end
|
44
51
|
alias_method :ruby_function, :function
|
45
52
|
alias_method :lambda_function, :function
|
46
53
|
|
47
54
|
def python_function(id, props={})
|
48
|
-
meth = id
|
55
|
+
meth = sanitize_method_name(id)
|
49
56
|
props[:handler] ||= "#{meth}.lambda_handler" # default python convention
|
50
57
|
props[:runtime] = "python3.6"
|
51
58
|
function(id, props)
|
52
59
|
end
|
53
60
|
|
54
61
|
def node_function(id, props={})
|
55
|
-
meth = id
|
62
|
+
meth = sanitize_method_name(id)
|
56
63
|
props[:handler] ||= "#{meth}.handler" # default python convention
|
57
64
|
props[:runtime] = "nodejs8.10"
|
58
65
|
function(id, props)
|
@@ -67,5 +74,11 @@ module Jets::Stack::Main::Dsl
|
|
67
74
|
props = defaults.merge(props)
|
68
75
|
resource(id, "AWS::Lambda::Permission", props)
|
69
76
|
end
|
77
|
+
|
78
|
+
private
|
79
|
+
# demo-dev-hard_job-dig_me
|
80
|
+
def sanitize_method_name(id)
|
81
|
+
id.to_s.gsub('/','-')
|
82
|
+
end
|
70
83
|
end
|
71
84
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Jets::Stack::Main::Dsl
|
2
|
+
module S3
|
3
|
+
def s3_bucket(id, props={})
|
4
|
+
resource(id, "AWS::S3::Bucket", props)
|
5
|
+
output(id) # Bucket name
|
6
|
+
end
|
7
|
+
|
8
|
+
def s3_bucket_configuration(id, props={})
|
9
|
+
resource(id, "Custom::S3BucketConfiguration", props)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
class Jets::Stack
|
2
|
+
class S3Event
|
3
|
+
def initialize(bucket_name)
|
4
|
+
@bucket_name = bucket_name
|
5
|
+
end
|
6
|
+
|
7
|
+
# Stack names can only contain alpha numeric chars.
|
8
|
+
# Bucket names are limit to 64 chars: https://amzn.to/2SIzvme
|
9
|
+
# Stack names are limit to 128 chars: https://amzn.to/2SFkrG0
|
10
|
+
# This gsub should handle this.
|
11
|
+
def stack_name
|
12
|
+
@bucket_name.gsub(/[^0-9a-z\-_]/i, '').gsub('-','_').camelize
|
13
|
+
end
|
14
|
+
|
15
|
+
def build_stack
|
16
|
+
# assign to local variable so its available in the block
|
17
|
+
bucket = @bucket_name
|
18
|
+
|
19
|
+
Jets::Stack.new_class(stack_name) do
|
20
|
+
s3_bucket_configuration(:s3_bucket_configuration,
|
21
|
+
service_token: "!GetAtt JetsS3BucketConfig.Arn", # Cannot change this w/o changing the logical id
|
22
|
+
# These properties correspond to the ruby aws-sdk s3.put_bucket_notification_configuration
|
23
|
+
# in jets/s3_bucket_config.rb, not the CloudFormation Bucket properties. The CloudFormation
|
24
|
+
# bucket properties have a similiar structure but is slightly different so it can be confusing.
|
25
|
+
#
|
26
|
+
# Ruby aws-sdk S3 Docs: https://amzn.to/2N7m5Lr
|
27
|
+
bucket: bucket,
|
28
|
+
notification_configuration: Jets.config.s3_event.notification_configuration,
|
29
|
+
) if Jets.config.s3_event.configure_bucket
|
30
|
+
|
31
|
+
# Important note: If we change the name of this function we should also change the
|
32
|
+
# logical id of the s3_bucket_configuration custom resource or we'll get this error:
|
33
|
+
# Modifying service token is not allowed.
|
34
|
+
function("jets/s3_bucket_config",
|
35
|
+
role: "!GetAtt BucketConfigIamRole.Arn",
|
36
|
+
layers: ["!Ref GemLayer"],
|
37
|
+
)
|
38
|
+
|
39
|
+
sns_topic(:sns_topic)
|
40
|
+
sns_topic_policy(:sns_topic_policy,
|
41
|
+
policy_document: {
|
42
|
+
version: "2012-10-17",
|
43
|
+
statement: {
|
44
|
+
effect: "Allow",
|
45
|
+
principal: { service: "s3.amazonaws.com"},
|
46
|
+
action: "sns:Publish",
|
47
|
+
resource: "!Ref SnsTopic",
|
48
|
+
condition: {
|
49
|
+
arn_like: {
|
50
|
+
"aws:SourceArn" => "!Sub arn:aws:s3:*:*:#{bucket}"
|
51
|
+
}
|
52
|
+
}
|
53
|
+
}
|
54
|
+
},
|
55
|
+
topics: ["!Ref SnsTopic"],
|
56
|
+
)
|
57
|
+
|
58
|
+
iam_role(:bucket_config_iam_role,
|
59
|
+
assume_role_policy_document: {
|
60
|
+
version: '2012-10-17',
|
61
|
+
statement: [
|
62
|
+
effect: "Allow",
|
63
|
+
principal: {service: ["lambda.amazonaws.com"]},
|
64
|
+
action: ['sts:AssumeRole'],
|
65
|
+
]
|
66
|
+
},
|
67
|
+
path: "/",
|
68
|
+
managed_policy_arns: ["arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"],
|
69
|
+
policies: [
|
70
|
+
policy_name: "S3Policy",
|
71
|
+
policy_document: {
|
72
|
+
version: '2012-10-17',
|
73
|
+
statement: [
|
74
|
+
effect: "Allow",
|
75
|
+
action: [
|
76
|
+
's3:GetBucketNotification',
|
77
|
+
's3:PutBucketNotification',
|
78
|
+
],
|
79
|
+
resource: "*"
|
80
|
+
]
|
81
|
+
}
|
82
|
+
]
|
83
|
+
)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
data/lib/jets/turbine.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
module Jets
|
2
2
|
class Turbine
|
3
|
+
class_attribute :after_initializers
|
3
4
|
class_attribute :initializers
|
4
5
|
class_attribute :on_exceptions
|
5
6
|
|
@@ -12,6 +13,11 @@ module Jets
|
|
12
13
|
subclasses << base
|
13
14
|
end
|
14
15
|
|
16
|
+
def after_initializer(label, &block)
|
17
|
+
self.after_initializers ||= {}
|
18
|
+
self.after_initializers[label] = block
|
19
|
+
end
|
20
|
+
|
15
21
|
def initializer(label, &block)
|
16
22
|
self.initializers ||= {}
|
17
23
|
self.initializers[label] = block
|
@@ -25,6 +31,11 @@ module Jets
|
|
25
31
|
def exception_reporter(label, &block)
|
26
32
|
on_exception(label, &block)
|
27
33
|
end
|
34
|
+
|
35
|
+
# Make config available in Turbine. Note only available outside of hooks like initializers.
|
36
|
+
def config
|
37
|
+
Jets.application.config
|
38
|
+
end
|
28
39
|
end
|
29
40
|
end
|
30
41
|
end
|
data/lib/jets/version.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tung Nguyen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-02-
|
11
|
+
date: 2019-02-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: actionmailer
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 5.2.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 5.2.1
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: activerecord
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -150,6 +164,20 @@ dependencies:
|
|
150
164
|
- - ">="
|
151
165
|
- !ruby/object:Gem::Version
|
152
166
|
version: '0'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: cfnresponse
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ">="
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: '0'
|
174
|
+
type: :runtime
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: '0'
|
153
181
|
- !ruby/object:Gem::Dependency
|
154
182
|
name: dotenv
|
155
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -452,6 +480,7 @@ files:
|
|
452
480
|
- lib/jets/application.rb
|
453
481
|
- lib/jets/aws_info.rb
|
454
482
|
- lib/jets/aws_services.rb
|
483
|
+
- lib/jets/aws_services/s3_bucket.rb
|
455
484
|
- lib/jets/aws_services/stack_status.rb
|
456
485
|
- lib/jets/booter.rb
|
457
486
|
- lib/jets/builders.rb
|
@@ -581,6 +610,7 @@ files:
|
|
581
610
|
- lib/jets/commands/templates/skeleton/config/dynamodb.yml
|
582
611
|
- lib/jets/commands/templates/skeleton/config/environments/development.rb
|
583
612
|
- lib/jets/commands/templates/skeleton/config/environments/production.rb
|
613
|
+
- lib/jets/commands/templates/skeleton/config/environments/test.rb
|
584
614
|
- lib/jets/commands/templates/skeleton/config/routes.rb
|
585
615
|
- lib/jets/commands/templates/skeleton/db/.gitkeep
|
586
616
|
- lib/jets/commands/templates/skeleton/public/404.html
|
@@ -643,17 +673,25 @@ files:
|
|
643
673
|
- lib/jets/generator/templates/rails/scaffold_controller/api_controller.rb
|
644
674
|
- lib/jets/generator/templates/rails/scaffold_controller/controller.rb
|
645
675
|
- lib/jets/inflections.rb
|
676
|
+
- lib/jets/internal/app/controllers/jets/mailers_controller.rb
|
646
677
|
- lib/jets/internal/app/controllers/jets/public_controller.rb
|
647
678
|
- lib/jets/internal/app/controllers/jets/rack_controller.rb
|
648
679
|
- lib/jets/internal/app/functions/jets/base_path.rb
|
680
|
+
- lib/jets/internal/app/helpers/jets/mailers_helper.rb
|
649
681
|
- lib/jets/internal/app/jobs/jets/preheat_job.rb
|
682
|
+
- lib/jets/internal/app/shared/functions/jets/s3_bucket_config.rb
|
683
|
+
- lib/jets/internal/app/views/jets/mailers/email.html.erb
|
684
|
+
- lib/jets/internal/app/views/jets/mailers/index.html.erb
|
685
|
+
- lib/jets/internal/app/views/jets/mailers/mailer.html.erb
|
650
686
|
- lib/jets/io.rb
|
651
687
|
- lib/jets/job.rb
|
652
688
|
- lib/jets/job/base.rb
|
653
689
|
- lib/jets/job/dsl.rb
|
654
690
|
- lib/jets/job/dsl/event_source_mapping.rb
|
691
|
+
- lib/jets/job/dsl/s3_event.rb
|
655
692
|
- lib/jets/job/dsl/sns_event.rb
|
656
693
|
- lib/jets/job/dsl/sqs_event.rb
|
694
|
+
- lib/jets/job/s3_event_helper.rb
|
657
695
|
- lib/jets/klass.rb
|
658
696
|
- lib/jets/lambda.rb
|
659
697
|
- lib/jets/lambda/dsl.rb
|
@@ -662,6 +700,7 @@ files:
|
|
662
700
|
- lib/jets/lambda/functions.rb
|
663
701
|
- lib/jets/lambda/task.rb
|
664
702
|
- lib/jets/logger.rb
|
703
|
+
- lib/jets/mailer.rb
|
665
704
|
- lib/jets/mega.rb
|
666
705
|
- lib/jets/mega/hash_converter.rb
|
667
706
|
- lib/jets/mega/request.rb
|
@@ -744,9 +783,11 @@ files:
|
|
744
783
|
- lib/jets/resource/route53.rb
|
745
784
|
- lib/jets/resource/route53/record_set.rb
|
746
785
|
- lib/jets/resource/s3.rb
|
786
|
+
- lib/jets/resource/s3/bucket.rb
|
747
787
|
- lib/jets/resource/sns.rb
|
748
788
|
- lib/jets/resource/sns/subscription.rb
|
749
789
|
- lib/jets/resource/sns/topic.rb
|
790
|
+
- lib/jets/resource/sns/topic_policy.rb
|
750
791
|
- lib/jets/resource/sqs.rb
|
751
792
|
- lib/jets/resource/sqs/queue.rb
|
752
793
|
- lib/jets/resource/standardizer.rb
|
@@ -763,12 +804,16 @@ files:
|
|
763
804
|
- lib/jets/stack.rb
|
764
805
|
- lib/jets/stack/builder.rb
|
765
806
|
- lib/jets/stack/definition.rb
|
807
|
+
- lib/jets/stack/depends.rb
|
808
|
+
- lib/jets/stack/depends/item.rb
|
766
809
|
- lib/jets/stack/function.rb
|
767
810
|
- lib/jets/stack/main.rb
|
768
811
|
- lib/jets/stack/main/dsl.rb
|
769
812
|
- lib/jets/stack/main/extensions/base.rb
|
770
813
|
- lib/jets/stack/main/extensions/cloudwatch.rb
|
814
|
+
- lib/jets/stack/main/extensions/iam.rb
|
771
815
|
- lib/jets/stack/main/extensions/lambda.rb
|
816
|
+
- lib/jets/stack/main/extensions/s3.rb
|
772
817
|
- lib/jets/stack/main/extensions/sns.rb
|
773
818
|
- lib/jets/stack/main/extensions/sqs.rb
|
774
819
|
- lib/jets/stack/output.rb
|
@@ -778,6 +823,7 @@ files:
|
|
778
823
|
- lib/jets/stack/parameter/dsl.rb
|
779
824
|
- lib/jets/stack/resource.rb
|
780
825
|
- lib/jets/stack/resource/dsl.rb
|
826
|
+
- lib/jets/stack/s3_event.rb
|
781
827
|
- lib/jets/tmp_loader.rb
|
782
828
|
- lib/jets/turbine.rb
|
783
829
|
- lib/jets/turbo.rb
|