jets 1.2.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/Gemfile.lock +4 -4
  4. data/README.md +2 -2
  5. data/lib/jets.rb +3 -4
  6. data/lib/jets/application.rb +13 -2
  7. data/lib/jets/builders.rb +3 -0
  8. data/lib/jets/builders/code_builder.rb +22 -89
  9. data/lib/jets/builders/code_size.rb +55 -0
  10. data/lib/jets/builders/gem_replacer.rb +22 -1
  11. data/lib/jets/builders/handler_generator.rb +31 -5
  12. data/lib/jets/builders/lambda_layer.rb +50 -0
  13. data/lib/jets/builders/md5.rb +10 -5
  14. data/lib/jets/builders/md5_zip.rb +1 -0
  15. data/lib/jets/builders/purger.rb +35 -0
  16. data/lib/jets/builders/rack_packager.rb +25 -5
  17. data/lib/jets/builders/rackup_wrappers/rackup +1 -5
  18. data/lib/jets/builders/ruby_packager.rb +25 -27
  19. data/lib/jets/builders/shim_vars/app.rb +3 -3
  20. data/lib/jets/builders/shim_vars/base.rb +9 -4
  21. data/lib/jets/builders/shim_vars/shared.rb +2 -2
  22. data/lib/jets/builders/templates/handler.rb +7 -0
  23. data/lib/jets/builders/tidy.rb +4 -3
  24. data/lib/jets/builders/util.rb +11 -3
  25. data/lib/jets/cfn/builders/base_child_builder.rb +6 -3
  26. data/lib/jets/cfn/builders/interface.rb +1 -1
  27. data/lib/jets/cfn/builders/parent_builder.rb +5 -0
  28. data/lib/jets/commands/build.rb +4 -2
  29. data/lib/jets/commands/help/gems/check.md +1 -1
  30. data/lib/jets/commands/main.rb +1 -1
  31. data/lib/jets/commands/new.rb +4 -2
  32. data/lib/jets/commands/sequence.rb +1 -1
  33. data/lib/jets/commands/templates/skeleton/Gemfile.tt +2 -2
  34. data/lib/jets/commands/templates/skeleton/config/application.rb.tt +0 -5
  35. data/lib/jets/commands/templates/skeleton/config/database.yml.tt +2 -2
  36. data/lib/jets/commands/templates/skeleton/config/environments/development.rb +2 -1
  37. data/lib/jets/commands/templates/skeleton/config/environments/production.rb +2 -3
  38. data/lib/jets/commands/upgrade/v1.rb +21 -0
  39. data/lib/jets/controller/renderers/template_renderer.rb +1 -1
  40. data/lib/jets/controller/rendering.rb +1 -4
  41. data/lib/jets/core.rb +45 -6
  42. data/lib/jets/internal/app/jobs/jets/preheat_job.rb +32 -34
  43. data/lib/jets/mega/request.rb +11 -0
  44. data/lib/jets/overrides/lambda.rb +1 -0
  45. data/lib/jets/overrides/lambda/marshaller.rb +31 -0
  46. data/lib/jets/overrides/rails.rb +4 -0
  47. data/lib/jets/{rails_overrides → overrides/rails}/asset_tag_helper.rb +0 -0
  48. data/lib/jets/{rails_overrides → overrides/rails}/common_methods.rb +0 -0
  49. data/lib/jets/{rails_overrides → overrides/rails}/rendering_helper.rb +0 -0
  50. data/lib/jets/{rails_overrides → overrides/rails}/url_helper.rb +0 -0
  51. data/lib/jets/poly_fun/base_executor.rb +1 -1
  52. data/lib/jets/preheat.rb +1 -0
  53. data/lib/jets/processors/main_processor.rb +3 -10
  54. data/lib/jets/{server.rb → rack_server.rb} +31 -2
  55. data/lib/jets/resource.rb +1 -1
  56. data/lib/jets/resource/api_gateway/base_path/function.rb +1 -1
  57. data/lib/jets/resource/child_stack/app_class.rb +10 -4
  58. data/lib/jets/resource/lambda.rb +5 -0
  59. data/lib/jets/resource/{function.rb → lambda/function.rb} +8 -6
  60. data/lib/jets/resource/{function → lambda/function}/environment.rb +1 -1
  61. data/lib/jets/resource/lambda/gem_layer.rb +17 -0
  62. data/lib/jets/resource/lambda/layer_version.rb +46 -0
  63. data/lib/jets/tmp_loader.rb +52 -0
  64. data/lib/jets/version.rb +1 -1
  65. data/{README → readme}/prerelease.md +0 -0
  66. data/{README → readme}/testing.md +5 -0
  67. data/vendor/jets-gems/lib/jets/gems.rb +1 -1
  68. data/vendor/jets-gems/lib/jets/gems/check.rb +7 -7
  69. data/vendor/jets-gems/lib/jets/gems/exist.rb +5 -5
  70. data/vendor/jets-gems/lib/jets/gems/extract/base.rb +4 -11
  71. data/vendor/jets-gems/lib/jets/gems/extract/gem.rb +15 -8
  72. data/vendor/jets-gems/lib/jets/gems/extract/ruby.rb +19 -10
  73. metadata +22 -15
  74. data/lib/jets/builders/templates/handler.js +0 -9
  75. data/lib/jets/builders/templates/shim.js +0 -275
  76. data/lib/jets/rails_overrides.rb +0 -4
  77. data/lib/jets/ruby_server.rb +0 -148
@@ -0,0 +1,50 @@
1
+ class Jets::Builders
2
+ class LambdaLayer
3
+ include Util
4
+
5
+ # At this point we gems have all been moved to stage/code/vendor/bundle, this includes
6
+ # binary gems, a good state. This method moves them:
7
+ #
8
+ # from stage/code/vendor/bundle/ruby/2.5.0
9
+ # to stage/opt/ruby/gems/2.5.0
10
+ #
11
+ # So we can move gems into the Lambda Layer. Important folders later:
12
+ #
13
+ # stage/code/opt/lib
14
+ # stage/code/opt/ruby
15
+ #
16
+ def build
17
+ move_opt_to_stage
18
+ move_vendor_to_opt
19
+ symlink_vendor_gems
20
+ end
21
+
22
+ def move_opt_to_stage
23
+ opt_original = "#{code_area}/opt"
24
+ opt = "#{stage_area}/opt"
25
+ FileUtils.mkdir_p(File.dirname(opt))
26
+ FileUtils.mv(opt_original, opt)
27
+ end
28
+
29
+ def move_vendor_to_opt
30
+ ruby_folder = Jets::Gems.ruby_folder
31
+ gems_original = "#{code_area}/vendor/bundle/ruby/#{ruby_folder}"
32
+ gems = "#{stage_area}/opt/ruby/gems/#{ruby_folder}"
33
+ FileUtils.mkdir_p(File.dirname(gems))
34
+ FileUtils.mv(gems_original, gems)
35
+ # Deleting in this way to make sure folders are empty before we delete them
36
+ FileUtils.rmdir("#{code_area}/vendor/bundle/ruby")
37
+ FileUtils.rmdir("#{code_area}/vendor/bundle")
38
+ FileUtils.rmdir("#{code_area}/vendor") if Dir.empty?("#{code_area}/vendor")
39
+ end
40
+
41
+ # Simple logic: vendor/bundle/ruby/2.5.0 -> /opt/ruby/gems/2.5.0
42
+ def symlink_vendor_gems
43
+ ruby_folder = Jets::Gems.ruby_folder
44
+ dest = "#{code_area}/vendor/bundle/ruby/#{ruby_folder}"
45
+ FileUtils.mkdir_p(File.dirname(dest))
46
+ puts "ln -sf /opt/ruby/gems/#{ruby_folder} #{dest}" # uncommen to debug
47
+ FileUtils.ln_sf("/opt/ruby/gems/#{ruby_folder}", dest)
48
+ end
49
+ end
50
+ end
@@ -4,7 +4,7 @@ require 'digest'
4
4
  # to reference files with the md5 checksum. The files are the:
5
5
  #
6
6
  # jets/code/rack-checksum.zip
7
- # jets/code/bundled-checksum.zip
7
+ # jets/code/opt-checksum.zip
8
8
  #
9
9
  # We compute the checksums before we generate the node shim handlers.
10
10
  class Jets::Builders
@@ -17,14 +17,19 @@ class Jets::Builders
17
17
 
18
18
  def stage_folders
19
19
  paths = []
20
- paths << "stage/bundled" if Jets.lazy_load?
21
- paths << "stage/rack" if Jets.rack?
22
- # Important to have stage/code at the end, since it will use the other
23
- # 'symlinked' folders to adjust the md5 hash.
20
+ paths << "stage/opt" if folder_exist?("opt")
21
+ paths << "stage/rack" if folder_exist?("rack")
22
+ # Important to have stage/code at the end, since its md5 checksum depends
23
+ # on the previous folders.
24
24
  paths << "stage/code"
25
25
  paths
26
26
  end
27
27
 
28
+ def folder_exist?(folder)
29
+ path = "#{Jets.build_root}/stage/#{folder}"
30
+ File.directory?(path)
31
+ end
32
+
28
33
  def compute!
29
34
  stage_folders.each do |path|
30
35
  @@checksums[path] = dir(path)
@@ -20,6 +20,7 @@ class Jets::Builders
20
20
 
21
21
  def create
22
22
  headline "Creating zip file for #{@path}"
23
+ # => Creating zip file for /tmp/jets/demo/stage/bundled
23
24
 
24
25
  # https://serverfault.com/questions/265675/how-can-i-zip-compress-a-symlink
25
26
  command = "cd #{@path} && zip --symlinks -rq #{zip_file} ."
@@ -0,0 +1,35 @@
1
+ # When upgrading jets, automatically rm -rf /tmp/jets/project in case the structure has changed.
2
+ class Jets::Builders
3
+ class Purger
4
+ def initialize
5
+ @project_name = Jets.config.project_name
6
+ @version_file = "/tmp/jets/#{@project_name}/jets_version.txt"
7
+ end
8
+
9
+ def purge
10
+ if version_changed?
11
+ last_version = @last_version || "unknown"
12
+ puts "The jets version has changed enough since the last build to merit freshing the build cache."
13
+ puts "Current jets version: #{Jets::VERSION} Last built jets version: #{last_version}"
14
+ puts "Removing /tmp/jets/#{@project_name} to start fresh."
15
+ FileUtils.rm_rf("/tmp/jets/#{@project_name}")
16
+ end
17
+ write_version
18
+ end
19
+
20
+ # When jets changes versions major or minor version consider it a big enough can to purge the cache
21
+ def version_changed?
22
+ return true unless File.exist?(@version_file)
23
+
24
+ @last_version = IO.read(@version_file).strip
25
+ last_major, last_minor, _ = @last_version.split('.')
26
+ current_major, current_minor, _ = Jets::VERSION.split('.')
27
+ last_major != current_major || last_minor != current_minor
28
+ end
29
+
30
+ def write_version
31
+ FileUtils.mkdir_p(File.dirname(@version_file))
32
+ IO.write(@version_file, Jets::VERSION)
33
+ end
34
+ end
35
+ end
@@ -3,15 +3,17 @@ class Jets::Builders
3
3
  def finish
4
4
  return unless gemfile_exist?
5
5
 
6
- symlink_rack_bundled
6
+ symlink_gems
7
+ rack_symlink
7
8
  copy_rackup_wrappers
8
9
  end
9
10
 
10
- def symlink_rack_bundled
11
+ def symlink_gems
12
+ ruby_folder = Jets::Gems.ruby_folder
11
13
  # IE: @full_app_root: /tmp/jets/demo/stage/code/rack
12
- rack_bundled = "#{@full_app_root}/bundled"
13
- FileUtils.rm_f(rack_bundled) # looks like FileUtils.ln_sf doesnt remove existing symlinks
14
- FileUtils.ln_sf("/var/task/bundled", rack_bundled)
14
+ dest = "#{@full_app_root}/vendor/bundle/ruby/#{ruby_folder}"
15
+ FileUtils.mkdir_p(File.dirname(dest))
16
+ FileUtils.ln_sf("/opt/ruby/gems/#{ruby_folder}", dest)
15
17
  end
16
18
 
17
19
  def copy_rackup_wrappers
@@ -25,5 +27,23 @@ class Jets::Builders
25
27
  FileUtils.chmod 0755, dest
26
28
  end
27
29
  end
30
+
31
+ # Moves folder to a stage folder and create a symlink its place
32
+ # that links from /var/task to /tmp. Example:
33
+ #
34
+ # code_area/rack => /tmp/rack
35
+ #
36
+ def rack_symlink
37
+ src = "#{@full_app_root}/rack"
38
+ return unless File.exist?(src)
39
+
40
+ dest = "#{stage_area}/rack"
41
+ dir = File.dirname(dest)
42
+ FileUtils.mkdir_p(dir) unless File.exist?(dir)
43
+ FileUtils.mv(src, dest)
44
+
45
+ # Create symlink
46
+ FileUtils.ln_sf("/tmp/rack", "/#{@full_app_root}/rack")
47
+ end
28
48
  end
29
49
  end
@@ -16,8 +16,4 @@ unset BUNDLE_IGNORE_CONFIG
16
16
  # echo $$ > /tmp/jets-rackup.pid
17
17
 
18
18
  # Run the actual app using the bundled Ruby interpreter, with Bundler activated.
19
- if [ -n "$C9_USER" ]; then
20
- exec ruby -rbundler/setup bin/rackup.rb "$@"
21
- else
22
- exec "$PROJECTDIR/bundled/rbenv/shims/ruby" -rbundler/setup "$PROJECTDIR/bin/rackup.rb" "$@"
23
- fi
19
+ exec ruby -rbundler/setup bin/rackup.rb "$@"
@@ -18,12 +18,16 @@ class Jets::Builders
18
18
  setup_bundle_config
19
19
  end
20
20
 
21
+ # build gems in vendor/bundle/ruby/2.5.0 (done in install phase)
22
+ # replace_compiled_gems:
23
+ # remove binary gems in vendor/bundle/ruby/2.5.0
24
+ # extract binary gems in opt/ruby/gems/2.5.0
25
+ # move binary gems from opt/ruby/gems/2.5.0 to vendor/bundle/ruby/2.5.0
21
26
  def finish
22
27
  return unless gemfile_exist?
23
28
 
24
- copy_bundled_cache
25
- extract_ruby
26
- extract_gems
29
+ copy_cache_gems
30
+ replace_compiled_gems
27
31
  tidy
28
32
  end
29
33
 
@@ -36,7 +40,7 @@ class Jets::Builders
36
40
  # If user is on a macosx machine, macosx gems will be installed.
37
41
  # If user is on a linux machine, linux gems will be installed.
38
42
  #
39
- # Copies Gemfile* to /tmp/jetss/demo/bundled folder and installs
43
+ # Copies Gemfile* to /tmp/jets/demo/cache folder and installs
40
44
  # gems with bundle install from there.
41
45
  #
42
46
  # We take the time to copy Gemfile and bundle into a separate directory
@@ -44,8 +48,6 @@ class Jets::Builders
44
48
  # project gets built again not all the gems from get installed from the
45
49
  # beginning.
46
50
  def bundle_install
47
- return if poly_only?
48
-
49
51
  full_project_path = @full_app_root
50
52
  headline "Bundling: running bundle install in cache area: #{cache_area}."
51
53
 
@@ -53,10 +55,9 @@ class Jets::Builders
53
55
 
54
56
  require "bundler" # dynamically require bundler so user can use any bundler
55
57
  Bundler.with_clean_env do
56
- # cd /tmp/jets/demo
57
58
  sh(
58
59
  "cd #{cache_area} && " \
59
- "env BUNDLE_IGNORE_CONFIG=1 bundle install --path #{cache_area}/bundled/gems --without development test"
60
+ "env BUNDLE_IGNORE_CONFIG=1 bundle install --path #{cache_area}/vendor/bundle --without development test"
60
61
  )
61
62
  end
62
63
 
@@ -95,7 +96,7 @@ class Jets::Builders
95
96
  end
96
97
 
97
98
  # When using submodules, bundler leaves old submodules behind. Over time this inflates
98
- # the size of the the bundled gems. So we'll clean it up.
99
+ # the size of the the cache gems. So we'll clean it up.
99
100
  def clean_old_submodules
100
101
  # https://stackoverflow.com/questions/38800129/parsing-a-gemfile-lock-with-bundler
101
102
  lockfile = "#{cache_area}/Gemfile.lock"
@@ -117,8 +118,8 @@ class Jets::Builders
117
118
  md[1] # git_sha
118
119
  end
119
120
 
120
- # IE: /tmp/jets/demo/cache/bundled/gems/ruby/2.5.0/bundler/gems/webpacker-a8c46614c675
121
- Dir.glob("#{cache_area}/bundled/gems/ruby/2.5.0/bundler/gems/*").each do |path|
121
+ # IE: /tmp/jets/demo/cache/vendor/bundle/ruby/2.5.0/bundler/gems/webpacker-a8c46614c675
122
+ Dir.glob("#{cache_area}/vendor/bundle/ruby/2.5.0/bundler/gems/*").each do |path|
122
123
  sha = path.split('-').last[0..6] # only first 7 chars of the git sha
123
124
  unless git_shas.include?(sha)
124
125
  # puts "Removing old submoduled gem: #{path}" # uncomment to see and debug
@@ -139,7 +140,7 @@ class Jets::Builders
139
140
  # Override project's .bundle/config and ensure that .bundle/config matches
140
141
  # at these 2 spots:
141
142
  # app_root/.bundle/config
142
- # bundled/gems/.bundle/config
143
+ # vendor/bundle/.bundle/config
143
144
  cache_bundle_config = "#{cache_area}/.bundle/config"
144
145
  app_bundle_config = "#{@full_app_root}/.bundle/config"
145
146
  FileUtils.mkdir_p(File.dirname(app_bundle_config))
@@ -153,7 +154,8 @@ class Jets::Builders
153
154
  def ensure_build_cache_bundle_config_exists!
154
155
  text =<<-EOL
155
156
  ---
156
- BUNDLE_PATH: "bundled/gems"
157
+ BUNDLE_FROZEN: "true"
158
+ BUNDLE_PATH: "vendor/bundle"
157
159
  BUNDLE_WITHOUT: "development:test"
158
160
  EOL
159
161
  bundle_config = "#{cache_area}/.bundle/config"
@@ -169,25 +171,21 @@ EOL
169
171
  }
170
172
  end
171
173
 
172
- def extract_ruby
173
- headline "Setting up a vendored copy of ruby."
174
- Jets::Gems::Extract::Ruby.new(Jets::RUBY_VERSION, gems_options).run
175
- end
176
-
177
- def extract_gems
174
+ def replace_compiled_gems
178
175
  headline "Replacing compiled gems with AWS Lambda Linux compiled versions."
179
176
  GemReplacer.new(Jets::RUBY_VERSION, gems_options).run
180
177
  end
181
178
 
182
- def copy_bundled_cache
183
- app_root_bundled = "#{@full_app_root}/bundled"
184
- if File.exist?(app_root_bundled)
185
- puts "Removing current bundled from project"
186
- FileUtils.rm_rf(app_root_bundled)
179
+ def copy_cache_gems
180
+ vendor_bundle = "#{@full_app_root}/vendor/bundle"
181
+ if File.exist?(vendor_bundle)
182
+ puts "Removing current vendor_bundle from project"
183
+ FileUtils.rm_rf(vendor_bundle)
187
184
  end
188
- # Leave #{Jets.build_root}/bundled behind to act as cache
189
- if File.exist?("#{cache_area}/bundled")
190
- FileUtils.cp_r("#{cache_area}/bundled", app_root_bundled)
185
+ # Leave #{Jets.build_root}/vendor_bundle behind to act as cache
186
+ if File.exist?("#{cache_area}/vendor/bundle")
187
+ FileUtils.mkdir_p(File.dirname(vendor_bundle))
188
+ FileUtils.cp_r("#{cache_area}/vendor/bundle", vendor_bundle)
191
189
  end
192
190
  end
193
191
 
@@ -8,7 +8,7 @@
8
8
  #
9
9
  # functions: IE [:index, :show]
10
10
  # handler_for(function_name): IE handlers/controllers/posts_controller.index
11
- # js_path: IE: handlers/controllers/posts_controller.js
11
+ # dest_path: IE: handlers/controllers/posts_controller.js
12
12
  #
13
13
  module Jets::Builders::ShimVars
14
14
  class App < Base
@@ -69,10 +69,10 @@ module Jets::Builders::ShimVars
69
69
  end
70
70
 
71
71
  # Example return: "handlers/controllers/posts.js"
72
- def js_path
72
+ # TODO: rename this to dest_path or something better now since using native ruby
73
+ def dest_path
73
74
  @relative_path
74
75
  .sub("app", "handlers")
75
- .sub(/\.rb$/, ".js")
76
76
  end
77
77
  end
78
78
  end
@@ -8,13 +8,18 @@ module Jets::Builders::ShimVars
8
8
  end
9
9
 
10
10
  def rack_zip
11
- checksum = Jets::Builders::Md5.checksums["stage/rack"]
12
- "rack-#{checksum}.zip"
11
+ checksum_zip(:rack)
13
12
  end
14
13
 
15
14
  def bundled_zip
16
- checksum = Jets::Builders::Md5.checksums["stage/bundled"]
17
- "bundled-#{checksum}.zip"
15
+ checksum_zip(:bundled)
16
+ end
17
+
18
+ private
19
+ def checksum_zip(name)
20
+ checksum = Jets::Builders::Md5.checksums["stage/#{name}"]
21
+ return unless checksum
22
+ "#{name}-#{checksum}.zip"
18
23
  end
19
24
 
20
25
  def stage_area
@@ -8,7 +8,7 @@
8
8
  #
9
9
  # functions: IE [:index, :show]
10
10
  # handler_for(function_name): IE handlers/controllers/posts_controller.index
11
- # js_path: IE: handlers/controllers/posts_controller.js
11
+ # dest_path: IE: handlers/controllers/posts_controller.js
12
12
  #
13
13
  module Jets::Builders::ShimVars
14
14
  class Shared < Base
@@ -30,7 +30,7 @@ module Jets::Builders::ShimVars
30
30
  end
31
31
 
32
32
  # IE handlers/shared/functions/bob.js
33
- def js_path
33
+ def dest_path
34
34
  @fun.handler_dest
35
35
  end
36
36
  end
@@ -0,0 +1,7 @@
1
+ require "bundler/setup"
2
+ require "jets"
3
+ Jets.once # runs once in lambda execution context
4
+
5
+ <% @vars.functions.each do |function_name| -%>
6
+ Jets.handler(self, "<%= @vars.handler_for(function_name) %>")
7
+ <% end %>
@@ -48,9 +48,9 @@ class Jets::Builders
48
48
  (defaults + keep).uniq
49
49
  end
50
50
 
51
- # folders to remove in the bundled folder regardless of the level of the folder
51
+ # folders to remove in the vendor/bundle folder regardless of the level of the folder
52
52
  def tidy_bundled
53
- Dir.glob("#{@project_root}/bundled/**/*").each do |path|
53
+ Dir.glob("#{@project_root}/vendor/bundle/**/*").each do |path|
54
54
  next unless File.directory?(path)
55
55
  dir = File.basename(path)
56
56
  next unless always_removals.include?(dir)
@@ -65,7 +65,8 @@ class Jets::Builders
65
65
  # actual cache folders that they used.
66
66
  def remove_gem_cache
67
67
  ruby_minor_version = Jets::RUBY_VERSION.split('.')[0..1].join('.') + '.0'
68
- FileUtils.rm_rf("#{@project_root}/bundled/gems/ruby/#{ruby_minor_version}/cache")
68
+ cache_path = "#{@project_root}/vendor/bundle/ruby/#{ruby_minor_version}/cache"
69
+ FileUtils.rm_rf(cache_path)
69
70
  end
70
71
 
71
72
  def rm_rf(path)
@@ -3,7 +3,11 @@ class Jets::Builders
3
3
  def sh(command)
4
4
  puts "=> #{command}".colorize(:green)
5
5
  success = system(command)
6
- abort("#{command} failed to run") unless success
6
+ unless success
7
+ puts "#{command} failed to run.".colorize(:red)
8
+ puts caller[0]
9
+ exit 1
10
+ end
7
11
  success
8
12
  end
9
13
 
@@ -17,8 +21,12 @@ class Jets::Builders
17
21
  "#{Jets.build_root}/#{relative_path}"
18
22
  end
19
23
 
20
- def poly_only?
21
- Jets.poly_only?
24
+ def stage_area
25
+ "#{Jets.build_root}/stage"
26
+ end
27
+
28
+ def code_area
29
+ "#{stage_area}/code"
22
30
  end
23
31
  end
24
32
  end
@@ -22,8 +22,11 @@ class Jets::Cfn::Builders
22
22
  end
23
23
 
24
24
  def add_common_parameters
25
- add_parameter("IamRole", Description: "Iam Role that Lambda function uses.")
26
- add_parameter("S3Bucket", Description: "S3 Bucket for source code.")
25
+ common_parameters = Jets::Resource::ChildStack::AppClass.common_parameters
26
+ common_parameters.each do |k,_|
27
+ add_parameter(k, Description: k)
28
+ end
29
+
27
30
  depends_on_params.each do |logical_id, desc|
28
31
  add_parameter(logical_id, Description: desc)
29
32
  end
@@ -58,7 +61,7 @@ class Jets::Cfn::Builders
58
61
  end
59
62
 
60
63
  def add_function(task)
61
- resource = Jets::Resource::Function.new(task)
64
+ resource = Jets::Resource::Lambda::Function.new(task)
62
65
  add_resource(resource)
63
66
  end
64
67