funktor 0.2.1 → 0.2.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +35 -0
- data/.gitignore +2 -2
- data/Gemfile.lock +6 -6
- data/funktor.gemspec +1 -1
- data/lib/funktor.rb +0 -1
- data/lib/funktor/cli/bootstrap.rb +7 -7
- data/lib/funktor/cli/init.rb +135 -30
- data/lib/funktor/cli/templates/Gemfile +1 -3
- data/lib/funktor/cli/templates/{workers → app/workers}/hello_worker.rb +0 -0
- data/lib/funktor/cli/templates/config/boot.rb +16 -0
- data/lib/funktor/cli/templates/config/environment.yml +4 -2
- data/lib/funktor/cli/templates/{function_definitions → config/function_definitions}/incoming_job_handler.yml +1 -1
- data/lib/funktor/cli/templates/config/function_definitions/work_queue_handler.yml +11 -0
- data/lib/funktor/cli/templates/config/funktor.yml +27 -14
- data/lib/funktor/cli/templates/{iam_permissions → config/iam_permissions}/incoming_job_queue.yml +0 -0
- data/lib/funktor/cli/templates/{iam_permissions → config/iam_permissions}/ssm.yml +0 -0
- data/lib/funktor/cli/templates/{iam_permissions/active_job_queue.yml → config/iam_permissions/work_queue.yml} +1 -1
- data/lib/funktor/cli/templates/config/package.yml +4 -2
- data/lib/funktor/cli/templates/{resources → config/resources}/cloudwatch_dashboard.yml +268 -231
- data/lib/funktor/cli/templates/{resources → config/resources}/incoming_job_queue.yml +0 -0
- data/lib/funktor/cli/templates/{resources → config/resources}/incoming_job_queue_user.yml +0 -0
- data/lib/funktor/cli/templates/config/resources/work_queue.yml +22 -0
- data/lib/funktor/cli/templates/funktor_init.yml.tt +69 -0
- data/lib/funktor/cli/templates/{handlers → lambda_event_handlers}/incoming_job_handler.rb +1 -1
- data/lib/funktor/cli/templates/lambda_event_handlers/work_queue_handler.rb +8 -0
- data/lib/funktor/cli/templates/package.json +8 -1
- data/lib/funktor/cli/templates/serverless.yml +13 -12
- data/lib/funktor/incoming_job_handler.rb +11 -1
- data/lib/funktor/job.rb +4 -0
- data/lib/funktor/version.rb +1 -1
- data/lib/funktor/worker.rb +9 -0
- metadata +17 -18
- data/lib/funktor/cli/templates/function_definitions/active_job_handler.yml +0 -11
- data/lib/funktor/cli/templates/funktor.yml.tt +0 -51
- data/lib/funktor/cli/templates/handlers/active_job_handler.rb +0 -17
- data/lib/funktor/cli/templates/resources/active_job_queue.yml +0 -22
- data/lib/funktor/deploy/cli.rb +0 -42
- data/lib/funktor/deploy/serverless.rb +0 -60
- data/lib/funktor/deploy/serverless_templates/serverless.yml +0 -156
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3a92d7870ba1cde9f91c5d872aab7e5dcc9d7a0d9ee8b4deb75fa1e679ea6ddc
|
4
|
+
data.tar.gz: 79d938d9d46f9763ae6bf7001bf54bb1ad48eefee0a0b5dcbb624a934edbba85
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b741a360102285bc392c6b846677b1859dbb02652b9e9412773fa989172c4a2368429f7825736f4438a543f4ac058098884fd78ce8a8f89be81b10f6b2e4db94
|
7
|
+
data.tar.gz: a450bec63e833671d3eeb7e4e1f00c38eec6c66c59de610ba431f8660a1273dac0ab4db85ff7b41ca2ff9e234c19f771087127d16ab2a21612b731ed61678609
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# This workflow uses actions that are not certified by GitHub.
|
2
|
+
# They are provided by a third-party and are governed by
|
3
|
+
# separate terms of service, privacy policy, and support
|
4
|
+
# documentation.
|
5
|
+
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
|
6
|
+
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
7
|
+
|
8
|
+
name: Ruby
|
9
|
+
|
10
|
+
on:
|
11
|
+
push:
|
12
|
+
branches: [ main ]
|
13
|
+
pull_request:
|
14
|
+
branches: [ main ]
|
15
|
+
|
16
|
+
jobs:
|
17
|
+
test:
|
18
|
+
|
19
|
+
runs-on: ubuntu-latest
|
20
|
+
strategy:
|
21
|
+
matrix:
|
22
|
+
ruby-version: ['2.6', '2.7', '3.0']
|
23
|
+
|
24
|
+
steps:
|
25
|
+
- uses: actions/checkout@v2
|
26
|
+
- name: Set up Ruby
|
27
|
+
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
28
|
+
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
29
|
+
# uses: ruby/setup-ruby@v1
|
30
|
+
uses: ruby/setup-ruby@473e4d8fe5dd94ee328fdfca9f8c9c7afc9dae5e
|
31
|
+
with:
|
32
|
+
ruby-version: ${{ matrix.ruby-version }}
|
33
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
34
|
+
- name: Run tests
|
35
|
+
run: bundle exec rake
|
data/.gitignore
CHANGED
@@ -10,6 +10,6 @@
|
|
10
10
|
# rspec failure tracking
|
11
11
|
.rspec_status
|
12
12
|
|
13
|
-
# The funktor dir isn't a real part of the gem, it's where things
|
13
|
+
# The funktor app dir isn't a real part of the gem, it's where things
|
14
14
|
# get generated as I'm testing the gem locally. It doesn't need to be in git.
|
15
|
-
/funktor/
|
15
|
+
/myapp-funktor/
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
funktor (0.2.
|
4
|
+
funktor (0.2.6)
|
5
5
|
activesupport
|
6
6
|
aws-sdk-sqs (~> 1.37)
|
7
7
|
thor
|
@@ -9,7 +9,7 @@ PATH
|
|
9
9
|
GEM
|
10
10
|
remote: https://rubygems.org/
|
11
11
|
specs:
|
12
|
-
activesupport (6.1.
|
12
|
+
activesupport (6.1.4)
|
13
13
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
14
14
|
i18n (>= 1.6, < 2)
|
15
15
|
minitest (>= 5.1)
|
@@ -18,8 +18,8 @@ GEM
|
|
18
18
|
addressable (2.7.0)
|
19
19
|
public_suffix (>= 2.0.2, < 5.0)
|
20
20
|
aws-eventstream (1.1.1)
|
21
|
-
aws-partitions (1.
|
22
|
-
aws-sdk-core (3.
|
21
|
+
aws-partitions (1.471.0)
|
22
|
+
aws-sdk-core (3.115.0)
|
23
23
|
aws-eventstream (~> 1, >= 1.0.2)
|
24
24
|
aws-partitions (~> 1, >= 1.239.0)
|
25
25
|
aws-sigv4 (~> 1.1)
|
@@ -29,7 +29,7 @@ GEM
|
|
29
29
|
aws-sigv4 (~> 1.1)
|
30
30
|
aws-sigv4 (1.2.3)
|
31
31
|
aws-eventstream (~> 1, >= 1.0.2)
|
32
|
-
concurrent-ruby (1.1.
|
32
|
+
concurrent-ruby (1.1.9)
|
33
33
|
crack (0.4.5)
|
34
34
|
rexml
|
35
35
|
diff-lcs (1.4.4)
|
@@ -41,7 +41,7 @@ GEM
|
|
41
41
|
minitest (5.14.4)
|
42
42
|
public_suffix (4.0.6)
|
43
43
|
rake (12.3.3)
|
44
|
-
rexml (3.2.
|
44
|
+
rexml (3.2.5)
|
45
45
|
rspec (3.10.0)
|
46
46
|
rspec-core (~> 3.10.0)
|
47
47
|
rspec-expectations (~> 3.10.0)
|
data/funktor.gemspec
CHANGED
@@ -31,7 +31,7 @@ Gem::Specification.new do |spec|
|
|
31
31
|
|
32
32
|
spec.add_dependency 'aws-sdk-sqs', '~> 1.37'
|
33
33
|
spec.add_dependency "activesupport" # TODO - Can we build our own verison of cattr_accessor to avoid this?
|
34
|
-
spec.add_dependency "thor" #
|
34
|
+
spec.add_dependency "thor" # Thor drives the CLI
|
35
35
|
|
36
36
|
spec.add_development_dependency 'simplecov'
|
37
37
|
spec.add_development_dependency 'webmock'
|
data/lib/funktor.rb
CHANGED
@@ -3,16 +3,15 @@ module Funktor
|
|
3
3
|
class Bootstrap < Thor::Group
|
4
4
|
include Thor::Actions
|
5
5
|
|
6
|
+
argument :name, :type => :string, :desc => "The name of the app to initialize"
|
7
|
+
|
6
8
|
class_option :file, :aliases => "-f",
|
7
9
|
:type => :string, :desc => "The bootstrap file to generate.",
|
8
|
-
:default => "
|
9
|
-
class_option :directory, :aliases => "-d",
|
10
|
-
:type => :string, :desc => "The directory to initialize",
|
11
|
-
:default => "funktor"
|
10
|
+
:default => "funktor_init.yml"
|
12
11
|
|
13
12
|
desc <<~DESC
|
14
13
|
Description:
|
15
|
-
Bootstrap a new funktor application by generating a
|
14
|
+
Bootstrap a new funktor application by generating a funktor_init.yml file."
|
16
15
|
DESC
|
17
16
|
|
18
17
|
def self.source_root
|
@@ -20,13 +19,14 @@ module Funktor
|
|
20
19
|
end
|
21
20
|
|
22
21
|
def funktor_yml
|
22
|
+
# TODO - Should we camelize the app name before writing it into the config? (CloudFormation names get weird with underscores and dashes.)
|
23
23
|
puts funktor_file_target
|
24
|
-
template "templates/
|
24
|
+
template "templates/funktor_init.yml", funktor_file_target
|
25
25
|
end
|
26
26
|
|
27
27
|
private
|
28
28
|
def funktor_file_target
|
29
|
-
File.join
|
29
|
+
File.join name, options[:file]
|
30
30
|
end
|
31
31
|
|
32
32
|
end
|
data/lib/funktor/cli/init.rb
CHANGED
@@ -1,14 +1,21 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'active_support/core_ext/string/inflections'
|
3
|
+
|
1
4
|
module Funktor
|
2
5
|
module CLI
|
3
6
|
class Init < Thor::Group
|
4
7
|
include Thor::Actions
|
5
8
|
|
6
|
-
|
9
|
+
attr_accessor :work_queue_name
|
10
|
+
attr_accessor :work_queue_config
|
11
|
+
|
12
|
+
class_option :deployment_framework, :aliases => "-d",
|
7
13
|
:type => :string, :desc => "The deployment/provisioning framework to use.",
|
8
14
|
:default => "serverless"
|
9
|
-
|
10
|
-
|
11
|
-
:
|
15
|
+
|
16
|
+
class_option :file, :aliases => "-f",
|
17
|
+
:type => :string, :desc => "The funktor init file.",
|
18
|
+
:default => "funktor_init.yml"
|
12
19
|
|
13
20
|
desc <<~DESC
|
14
21
|
Description:
|
@@ -20,59 +27,157 @@ module Funktor
|
|
20
27
|
end
|
21
28
|
|
22
29
|
def self.destination_root
|
23
|
-
|
24
|
-
end
|
25
|
-
|
26
|
-
def serverless_yml
|
27
|
-
template "serverless.yml", File.join(options[:directory], "serverless.yml")
|
30
|
+
name
|
28
31
|
end
|
29
32
|
|
30
33
|
def funktor_config_yml
|
31
|
-
#template "funktor_config.yml", File.join(
|
32
|
-
template File.join("config", "funktor.yml"), File.join(
|
33
|
-
template File.join("config", "ruby_layer.yml"), File.join(
|
34
|
-
template File.join("config", "package.yml"), File.join(
|
35
|
-
template File.join("config", "environment.yml"), File.join(
|
34
|
+
#template "funktor_config.yml", File.join("funktor_config.yml")
|
35
|
+
template File.join("config", "funktor.yml"), File.join("config", "funktor.yml")
|
36
|
+
template File.join("config", "ruby_layer.yml"), File.join("config", "ruby_layer.yml")
|
37
|
+
template File.join("config", "package.yml"), File.join("config", "package.yml")
|
38
|
+
template File.join("config", "environment.yml"), File.join("config", "environment.yml")
|
39
|
+
template File.join("config", "boot.rb"), File.join("config", "boot.rb")
|
36
40
|
end
|
37
41
|
|
38
42
|
def package_json
|
39
|
-
template "package.json", File.join(
|
43
|
+
template "package.json", File.join("package.json")
|
40
44
|
end
|
41
45
|
|
42
46
|
def gemfile
|
43
|
-
template "Gemfile", File.join(
|
47
|
+
template "Gemfile", File.join("Gemfile")
|
44
48
|
end
|
45
49
|
|
46
50
|
def gitignore
|
47
|
-
template "gitignore", File.join(
|
51
|
+
template "gitignore", File.join(".gitignore")
|
52
|
+
end
|
53
|
+
|
54
|
+
def workers
|
55
|
+
template File.join("app", "workers", "hello_worker.rb"), File.join("app", "workers", "hello_worker.rb")
|
48
56
|
end
|
49
57
|
|
50
58
|
def resources
|
51
|
-
template File.join("resources", "incoming_job_queue.yml"), File.join(
|
52
|
-
template File.join("resources", "incoming_job_queue_user.yml"), File.join(
|
53
|
-
|
54
|
-
template File.join("resources", "cloudwatch_dashboard.yml"), File.join(
|
59
|
+
template File.join("config", "resources", "incoming_job_queue.yml"), File.join("config", "resources", "incoming_job_queue.yml")
|
60
|
+
template File.join("config", "resources", "incoming_job_queue_user.yml"), File.join("config", "resources", "incoming_job_queue_user.yml")
|
61
|
+
# TODO - Figure out how to make the dashboard aware of various queues...
|
62
|
+
template File.join("config", "resources", "cloudwatch_dashboard.yml"), File.join("config", "resources", "cloudwatch_dashboard.yml")
|
63
|
+
queues.each do |queue_details|
|
64
|
+
@work_queue_name = queue_details.keys.first
|
65
|
+
@work_queue_config = queue_details.values.first
|
66
|
+
template File.join("config", "resources", "work_queue.yml"), File.join("config", "resources", "#{work_queue_name.underscore}_queue.yml")
|
67
|
+
end
|
55
68
|
end
|
56
69
|
|
57
70
|
def iam_permissions
|
58
|
-
template File.join("iam_permissions", "ssm.yml"), File.join(
|
59
|
-
template File.join("iam_permissions", "incoming_job_queue.yml"), File.join(
|
60
|
-
|
71
|
+
template File.join("config", "iam_permissions", "ssm.yml"), File.join("config", "iam_permissions", "ssm.yml")
|
72
|
+
template File.join("config", "iam_permissions", "incoming_job_queue.yml"), File.join("config", "iam_permissions", "incoming_job_queue.yml")
|
73
|
+
queues.each do |queue_details|
|
74
|
+
@work_queue_name = queue_details.keys.first
|
75
|
+
@work_queue_config = queue_details.values.first
|
76
|
+
template File.join("config", "iam_permissions", "work_queue.yml"), File.join("config", "iam_permissions", "#{work_queue_name.underscore}_queue.yml")
|
77
|
+
end
|
61
78
|
end
|
62
79
|
|
63
80
|
def function_definitions
|
64
|
-
template File.join("function_definitions", "
|
65
|
-
|
81
|
+
template File.join("config", "function_definitions", "incoming_job_handler.yml"), File.join("config", "function_definitions", "incoming_job_handler.yml")
|
82
|
+
queues.each do |queue_details|
|
83
|
+
@work_queue_name = queue_details.keys.first
|
84
|
+
@work_queue_config = queue_details.values.first
|
85
|
+
template File.join("config", "function_definitions", "work_queue_handler.yml"), File.join("config", "function_definitions", "#{work_queue_name.underscore}_queue_handler.yml")
|
86
|
+
end
|
66
87
|
end
|
67
88
|
|
68
89
|
def lambda_handlers
|
69
|
-
template File.join("
|
70
|
-
|
90
|
+
template File.join("lambda_event_handlers", "incoming_job_handler.rb"), File.join("lambda_event_handlers", "incoming_job_handler.rb")
|
91
|
+
queues.each do |queue_details|
|
92
|
+
@work_queue_name = queue_details.keys.first
|
93
|
+
@work_queue_config = queue_details.values.first
|
94
|
+
template File.join("lambda_event_handlers", "work_queue_handler.rb"), File.join("lambda_event_handlers", "#{work_queue_name.underscore}_queue_handler.rb")
|
95
|
+
end
|
71
96
|
end
|
72
97
|
|
73
|
-
def
|
74
|
-
template
|
98
|
+
def serverless_yml
|
99
|
+
template "serverless.yml", File.join("serverless.yml")
|
100
|
+
end
|
101
|
+
|
102
|
+
private
|
103
|
+
|
104
|
+
def app_worker_names
|
105
|
+
app_worker_files.map do |file|
|
106
|
+
File.basename(file, ".rb").camelize
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def app_worker_files
|
111
|
+
Dir.glob(File.join('app', 'workers', '**.rb'))
|
112
|
+
end
|
113
|
+
|
114
|
+
def all_iam_permissions
|
115
|
+
Dir.glob(File.join('config', 'iam_permissions', '**.yml'))
|
116
|
+
end
|
117
|
+
|
118
|
+
def all_function_definitions
|
119
|
+
Dir.glob(File.join('config', 'function_definitions', '**.yml'))
|
120
|
+
end
|
121
|
+
|
122
|
+
def all_resources
|
123
|
+
Dir.glob(File.join('config', 'resources', '**.yml'))
|
124
|
+
end
|
125
|
+
|
126
|
+
def funktor_config
|
127
|
+
@funktor_config ||= YAML.load_file options[:file]
|
128
|
+
end
|
129
|
+
|
130
|
+
def name
|
131
|
+
funktor_config["appName"]
|
132
|
+
end
|
133
|
+
|
134
|
+
def app_name
|
135
|
+
funktor_config["appName"]
|
136
|
+
end
|
137
|
+
|
138
|
+
def runtime
|
139
|
+
funktor_config["runtime"]
|
140
|
+
end
|
141
|
+
|
142
|
+
def queues
|
143
|
+
funktor_config["queues"]
|
75
144
|
end
|
145
|
+
|
146
|
+
def queue_names
|
147
|
+
funktor_config["queues"].map{|queue_details| queue_details.keys.first }
|
148
|
+
end
|
149
|
+
|
150
|
+
def work_queue_name
|
151
|
+
@work_queue_name
|
152
|
+
end
|
153
|
+
|
154
|
+
def work_queue_config
|
155
|
+
@work_queue_config
|
156
|
+
end
|
157
|
+
|
158
|
+
def queue_config(queue_name)
|
159
|
+
funktor_config["queues"].each do |queue_details|
|
160
|
+
if queue_details.keys.first == queue_name
|
161
|
+
return queue_details.values.first
|
162
|
+
end
|
163
|
+
end
|
164
|
+
return nil
|
165
|
+
end
|
166
|
+
|
167
|
+
def incoming_config_value(config_name)
|
168
|
+
funktor_config.dig("incomingJobHandler", config_name) ||
|
169
|
+
funktor_config.dig("handlerDefaults", config_name) ||
|
170
|
+
"null" # When we parse yaml 'null' gets turned to nil, which comes out as an empty string in the template
|
171
|
+
end
|
172
|
+
|
173
|
+
def queue_config_value(queue_name, config_name)
|
174
|
+
puts funktor_config
|
175
|
+
queue_config(queue_name)&.dig(config_name) ||
|
176
|
+
funktor_config.dig("handlerDefaults", config_name) ||
|
177
|
+
"null" # When we parse yaml 'null' gets turned to nil, which comes out as an empty string in the template
|
178
|
+
|
179
|
+
end
|
180
|
+
|
76
181
|
end
|
77
182
|
end
|
78
183
|
end
|
File without changes
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# Point at our Gemfile
|
2
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
|
3
|
+
|
4
|
+
# load rubygems & bundler
|
5
|
+
require "rubygems"
|
6
|
+
require 'bundler/setup'
|
7
|
+
|
8
|
+
# Set up gems listed in the Gemfile.
|
9
|
+
Bundler.require(:default, :production)
|
10
|
+
|
11
|
+
# Load all ruby files in the app directory
|
12
|
+
Dir.glob( File.join('..', 'app', '**', '*.rb'), base: File.dirname(__FILE__) ).each do |ruby_file|
|
13
|
+
puts "require_relative #{ruby_file}"
|
14
|
+
require_relative ruby_file
|
15
|
+
end
|
16
|
+
|
@@ -1,4 +1,4 @@
|
|
1
|
-
handler:
|
1
|
+
handler: lambda_event_handlers/incoming_job_handler.call
|
2
2
|
timeout: ${self:custom.funktor.incomingJobHandler.timeout, 30}
|
3
3
|
reservedConcurrency: ${self:custom.funktor.incomingJobHandler.reservedConcurrency, null}
|
4
4
|
provisionedConcurrency: ${self:custom.funktor.incomingJobHandler.provisionedConcurrency, null}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
handler: lambda_event_handlers/<%= work_queue_name.underscore %>_queue_handler.call
|
2
|
+
timeout: ${self:custom.funktor.<%= work_queue_name.camelize %>QueueHandler.timeout, 900}
|
3
|
+
reservedConcurrency: ${self:custom.funktor.<%= work_queue_name.camelize %>QueueHandler.reservedConcurrency, null}
|
4
|
+
provisionedConcurrency: ${self:custom.funktor.<%= work_queue_name.camelize %>QueueHandler.provisionedConcurrency, null}
|
5
|
+
memorySize: ${self:custom.funktor.<%= work_queue_name.camelize %>QueueHandler.memorySize, 256}
|
6
|
+
events:
|
7
|
+
- sqs:
|
8
|
+
arn:
|
9
|
+
Fn::GetAtt:
|
10
|
+
- <%= work_queue_name.camelize %>Queue
|
11
|
+
- Arn
|
@@ -3,49 +3,62 @@ incomingJobHandler:
|
|
3
3
|
# to a handler at one time, so you'll want this to be at least 10x the maximum time you
|
4
4
|
# expect to spend for one message. The incoming job handler usually will be pretty fast,
|
5
5
|
# but we default to a high number here to allow for the times when things go weird.
|
6
|
-
timeout:
|
6
|
+
timeout: <%= incoming_config_value 'timeout' %>
|
7
7
|
# reservedConcurrency represents the maximum number of concurrent executions.
|
8
8
|
# For the incoming job handler you probably don't want to limit it because you
|
9
9
|
# want to get things onto work queues as quickly as possible.
|
10
|
-
reservedConcurrency:
|
10
|
+
reservedConcurrency: <%= incoming_config_value 'reservedConcurrency' %>
|
11
11
|
# provisionedConcurrency represents the number of lambda functions that will always
|
12
12
|
# be available. For the incoming jobs handler you probably don't need to set this
|
13
13
|
# unless your jobs are very bursty AND very time sensitive.
|
14
|
-
provisionedConcurrency:
|
14
|
+
provisionedConcurrency: <%= incoming_config_value 'provisionedConcurrency' %>
|
15
15
|
# Use memory_size to adjust the reousrces (both memory and CPU) available.
|
16
16
|
# For the incoming jobs handler you probably don't need this to be too large,
|
17
17
|
# but if you're seeing large delays at this stage it might help to bump it up.
|
18
|
-
memorySize:
|
18
|
+
memorySize: <%= incoming_config_value 'memorySize' %>
|
19
|
+
batchSize: <%= incoming_config_value 'batchSize' %>
|
20
|
+
maximumBatchingWindow: <%= incoming_config_value 'maximumBatchingWindow' %>
|
21
|
+
visibilityTimeout: <%= incoming_config_value 'visibilityTimeout' %>
|
22
|
+
logRetentionInDays: <%= incoming_config_value 'logRetentionInDays' %>
|
19
23
|
|
20
|
-
|
24
|
+
<%- queue_names.each do |queue_name| -%>
|
25
|
+
<%= queue_name.camelize %>QueueHandler:
|
21
26
|
# timeout is how long the handler can possibly run. Up to 10 messages may be delivered
|
22
27
|
# to a handler at one time, so you'll want this to be at least 10x the maximum time you
|
23
28
|
# expect to spend for one message. The active job handler may be slow if your jobs are
|
24
29
|
# doing a lot of work, so we default to the maximum here.
|
25
|
-
timeout:
|
30
|
+
timeout: <%= queue_config_value queue_name, 'timeout' %>
|
26
31
|
# reservedConcurrency represents the maximum number of concurrent executions.
|
27
32
|
# For the active job handler you may want to limit it if you have resource limitations
|
28
33
|
# like database connections that you need to avoid exhausting.
|
29
|
-
reservedConcurrency:
|
34
|
+
reservedConcurrency: <%= queue_config_value queue_name, 'reservedConcurrency' %>
|
30
35
|
# provisionedConcurrency represents the number of lambda functions that will always
|
31
36
|
# be available. For the active job handler you probably don't need to set this
|
32
37
|
# unless your jobs are very bursty AND very time sensitive.
|
33
|
-
provisionedConcurrency:
|
38
|
+
provisionedConcurrency: <%= queue_config_value queue_name, 'provisionedConcurrency' %>
|
34
39
|
# Use memory_size to adjust the reousrces (both memory and CPU) available.
|
35
40
|
# For the active jobs handler you'll want this to be at least as large as the memory
|
36
41
|
# required to actually do your jobs. You can choose an even higher number to increase
|
37
42
|
# the available CPU to make the jobs run faster.
|
38
|
-
memorySize:
|
43
|
+
memorySize: <%= queue_config_value queue_name, 'memorySize' %>
|
44
|
+
batchSize: <%= queue_config_value queue_name, 'batchSize' %>
|
45
|
+
maximumBatchingWindow: <%= queue_config_value queue_name, 'maximumBatchingWindow' %>
|
46
|
+
visibilityTimeout: <%= queue_config_value queue_name, 'visibilityTimeout' %>
|
47
|
+
logRetentionInDays: <%= queue_config_value queue_name, 'logRetentionInDays' %>
|
39
48
|
|
49
|
+
<%- end -%>
|
40
50
|
|
41
51
|
|
42
52
|
# You shouldn't need to mess with these under most circumstances. But you could if you want to change
|
43
53
|
# the name of some of your resources in AWS.
|
44
54
|
incomingJobQueueName: ${self:service}-${self:custom.stage}-incoming-jobs
|
55
|
+
incomingDeadJobQueueName: ${self:service}-${self:custom.stage}-incoming-dead
|
45
56
|
incomingJobQueueAccessPolicyName: ${self:service}-${self:custom.stage}-incoming-job-queue-access
|
46
|
-
incomingDeadJobQueueName: ${self:service}-${self:custom.stage}-incoming-dead-jobs
|
47
|
-
activeJobQueueName: ${self:service}-${self:custom.stage}-active-jobs
|
48
|
-
activityQueueName: ${self:service}-${self:custom.stage}-activity
|
49
|
-
activityDeadQueueName: ${self:service}-${self:custom.stage}-activity-dead
|
50
|
-
deadJobQueueName: ${self:service}-${self:custom.stage}-dead-jobs
|
51
57
|
dashboardName: ${self:service}-${self:custom.stage}-dashboard
|
58
|
+
<%- queue_names.each do |queue_name| -%>
|
59
|
+
<%= queue_name.camelize %>QueueName: ${self:service}-${self:custom.stage}-<%= queue_name.underscore.dasherize %>
|
60
|
+
<%= queue_name.camelize %>DeadJobQueueName: ${self:service}-${self:custom.stage}-<%= queue_name.underscore.dasherize %>-dead
|
61
|
+
<%= queue_name.camelize %>QueueHandlerName: ${self:service}-${self:custom.stage}-<%= queue_name.camelize %>QueueHandler
|
62
|
+
<%- end -%>
|
63
|
+
|
64
|
+
|