funktor 0.2.7 → 0.2.8

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0fee608bd2e1c3272dbfb578144c618d1fc9b21a87cb92a180d24476b93f5805
4
- data.tar.gz: 641e22473435c8a01a1253891117183278d1af33b0aa0e640e19e5eed0496bec
3
+ metadata.gz: ed00bb1e70f943b1b4193e681fdde83c41fd0bd84bae056d4b171689f2dbe5c8
4
+ data.tar.gz: 57c02b8d42a470f0f52b90d60fff3c4b176523a7c606a7f7c562649dddbdfe4e
5
5
  SHA512:
6
- metadata.gz: 6395cef9f105bfd8772c815abfba51611e45894e9733ed67f733a7e2c08d1c7969abaf04956ff0aa1e8a9c9d345f7c2c59e7f8bb3e6f5e98d2e9442a16895958
7
- data.tar.gz: 0b29706049f47b3159b559529c535abcdca384cc2a9a3a4ad4af1fac0138eab957f799a94731fa7a097dcdae8ea45be920952a24d627133e5433f1620bf468b1
6
+ metadata.gz: 3575e30e6ae1dea0d36f4b31dcc06ec06b2e92ac07342f79cafc5cc99da9f66d22df79091643e4b036a24f22dab01747adb485806e4e3bae42be3441250f1839
7
+ data.tar.gz: f2a1827d30175051202691e9ab062929cbf73ba6b32b2bf8081259696fcb29d386822e94cfd4706993864581f294ded37918f45d23ab0cf986d5f21ada0c7f2c
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- funktor (0.2.7)
4
+ funktor (0.2.8)
5
5
  activesupport
6
6
  aws-sdk-sqs (~> 1.37)
7
7
  thor
@@ -18,7 +18,7 @@ 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.471.0)
21
+ aws-partitions (1.472.0)
22
22
  aws-sdk-core (3.115.0)
23
23
  aws-eventstream (~> 1, >= 1.0.2)
24
24
  aws-partitions (~> 1, >= 1.239.0)
data/README.md CHANGED
@@ -34,41 +34,20 @@ npm install -g serverless
34
34
 
35
35
  Then you can initialize a new app by doing:
36
36
 
37
-
38
37
  ```bash
38
+ funktor bootstrap my-funktor-app
39
+ cd my-funktor-app
39
40
  funktor init
40
41
  ```
41
42
 
43
+ Then you sh
44
+
42
45
  This will create a `funktor` directory that is ready to deploy to AWS. If you've already configured
43
46
  your aws tools via `~/.aws/credentials` you should be ready to deploy.
44
47
 
45
- `funktor/serverless.yml` is the main file that ties everything together.
46
-
47
- `funktor/config` contains a few files that you can use to configure your `funktor` application.
48
-
49
- `funktor/resources` contains a few files that provision some AWS resources that are used by `funktor`.
50
- * An SQS Queue for the "incoming jobs queue"
51
- * A Dynamo DB table to allow queueing of jobs more than 15 minutes in the future (Funktor Pro)
52
- * One or more SQS Queues for active jobs (currently there is only the default queue, support for additional queues is coming soon)
53
- * An IAM User with permission to push jobs to the incoming jobs queue
54
- * A CloudWatch dashboard to let you keep tabs on your application
55
-
56
- `funktor/lambda_handlers` contains some scripts that receive events from Lambda, then invoke `funktor` to
57
- do various things:
58
- * `active_job_handler.rb` executes your jobs
59
- * `delayed_job_scheduler.rb` (Funktor Pro) pulls delayed jobs out of DynamoDB and places them on the active job queue.
60
- * `incoming_job_handler.rb` receives incoming jobs and pushes them to DynamoDB for delayed execution or to the active job queue as appropriate.
61
-
62
- `funktor/function_definitions` contains details about hooking up the `lambda_handlers` to events.
63
-
64
- `funktor/iam_permissions` contains some details about giving your lambda functions the appropriate permissions
65
- to interact with SQS.
66
-
67
- `funktor/workers` is where your workers will live.
68
-
69
- `funktor/Gemfile` is the `Gemfile` that contains the gems that are needed for your workers to execute
70
- jobs. This should be the minimal set of gems you can get away with so that cold start times remain reasonable.
71
- This file will already contain `funktor`. (Don't remove it or `funktor` won't work!)
48
+ See the [wiki](https://github.com/Octo-Labs/funktor/wiki)
49
+ for more info, especially the
50
+ [section about getting started in a stand alone project](https://github.com/Octo-Labs/funktor/wiki/Getting-started-in-a-stand-alone-project).
72
51
 
73
52
  ## Deploying
74
53
 
@@ -1,8 +1,8 @@
1
1
  handler: lambda_event_handlers/incoming_job_handler.call
2
- timeout: ${self:custom.funktor.incomingJobHandler.timeout, 30}
3
- reservedConcurrency: ${self:custom.funktor.incomingJobHandler.reservedConcurrency, null}
4
- provisionedConcurrency: ${self:custom.funktor.incomingJobHandler.provisionedConcurrency, null}
5
- memorySize: ${self:custom.funktor.incomingJobHandler.memorySize, 256}
2
+ timeout: ${self:custom.funktor.IncomingJobHandler.timeout, 30}
3
+ reservedConcurrency: ${self:custom.funktor.IncomingJobHandler.reservedConcurrency, null}
4
+ provisionedConcurrency: ${self:custom.funktor.IncomingJobHandler.provisionedConcurrency, null}
5
+ memorySize: ${self:custom.funktor.IncomingJobHandler.memorySize, 256}
6
6
  events:
7
7
  - sqs:
8
8
  arn:
@@ -1,4 +1,4 @@
1
- incomingJobHandler:
1
+ IncomingJobHandler:
2
2
  # timeout is how long the handler can possibly run. Up to 10 messages may be delivered
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,
@@ -51,10 +51,11 @@ incomingJobHandler:
51
51
 
52
52
  # You shouldn't need to mess with these under most circumstances. But you could if you want to change
53
53
  # the name of some of your resources in AWS.
54
- incomingJobQueueName: ${self:service}-${self:custom.stage}-incoming-jobs
55
- incomingDeadJobQueueName: ${self:service}-${self:custom.stage}-incoming-dead
56
- incomingJobQueueAccessPolicyName: ${self:service}-${self:custom.stage}-incoming-job-queue-access
57
- dashboardName: ${self:service}-${self:custom.stage}-dashboard
54
+ IncomingJobQueueName: ${self:service}-${self:custom.stage}-incoming-jobs
55
+ IncomingDeadJobQueueName: ${self:service}-${self:custom.stage}-incoming-dead
56
+ IncomingJobHandlerName: ${self:service}-${self:custom.stage}-IncomingJobHandler
57
+ IncomingJobQueueAccessPolicyName: ${self:service}-${self:custom.stage}-incoming-job-queue-access
58
+ DashboardName: ${self:service}-${self:custom.stage}-dashboard
58
59
  <%- queue_names.each do |queue_name| -%>
59
60
  <%= queue_name.camelize %>QueueName: ${self:service}-${self:custom.stage}-<%= queue_name.underscore.dasherize %>
60
61
  <%= queue_name.camelize %>DeadJobQueueName: ${self:service}-${self:custom.stage}-<%= queue_name.underscore.dasherize %>-dead
@@ -2,7 +2,7 @@ Resources:
2
2
  FunktorDashboard:
3
3
  Type: AWS::CloudWatch::Dashboard
4
4
  Properties:
5
- DashboardName: ${self:custom.funktor.dashboardName}
5
+ DashboardName: ${self:custom.funktor.DashboardName}
6
6
  DashboardBody: >
7
7
  {
8
8
  "widgets": [
@@ -25,7 +25,7 @@ Resources:
25
25
  "type": "metric",
26
26
  "properties": {
27
27
  "metrics": [
28
- [ "AWS/SQS", "NumberOfMessagesReceived", "QueueName", "${self:custom.funktor.incomingJobQueueName}", { "label": "Messages Per Minute" } ]
28
+ [ "AWS/SQS", "NumberOfMessagesReceived", "QueueName", "${self:custom.funktor.IncomingJobQueueName}", { "label": "Messages Per Minute" } ]
29
29
  ],
30
30
  "view": "singleValue",
31
31
  "region": "us-east-1",
@@ -42,7 +42,7 @@ Resources:
42
42
  "type": "metric",
43
43
  "properties": {
44
44
  "metrics": [
45
- [ "AWS/Lambda", "Duration", "FunctionName", "${self:service}-${self:provider.stage}-incoming_job_handler", "Resource", "${self:service}-${self:provider.stage}-incoming_job_handler", { "label": "p10" } ],
45
+ [ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.IncomingJobHandlerName}", "Resource", "${self:custom.funktor.IncomingJobHandlerName}", { "label": "p10" } ],
46
46
  [ "...", { "label": "p50", "stat": "p50" } ],
47
47
  [ "...", { "label": "p99", "stat": "p99" } ],
48
48
  [ "...", { "label": "Average", "stat": "Average" } ]
@@ -63,10 +63,10 @@ Resources:
63
63
  "type": "metric",
64
64
  "properties": {
65
65
  "metrics": [
66
- [ "AWS/SQS", "NumberOfMessagesReceived", "QueueName", "${self:custom.funktor.incomingJobQueueName}", { "label": "Received" } ],
66
+ [ "AWS/SQS", "NumberOfMessagesReceived", "QueueName", "${self:custom.funktor.IncomingJobQueueName}", { "label": "Received" } ],
67
67
  [ ".", "NumberOfMessagesDeleted", ".", ".", { "label": "Handled" } ],
68
- [ "AWS/Lambda", "Invocations", "FunctionName", "${self:service}-${self:provider.stage}-incoming_job_handler", "Resource", "${self:service}-${self:provider.stage}-incoming_job_handler", { "label": "Handler Invocations" } ],
69
- [ "AWS/SQS", "ApproximateNumberOfMessagesVisible", "QueueName", "${self:custom.funktor.incomingJobQueueName}", { "label": "Pending?" } ],
68
+ [ "AWS/Lambda", "Invocations", "FunctionName", "${self:custom.funktor.IncomingJobHandlerName}", "Resource", "${self:custom.funktor.IncomingJobHandlerName}", { "label": "Handler Invocations" } ],
69
+ [ "AWS/SQS", "ApproximateNumberOfMessagesVisible", "QueueName", "${self:custom.funktor.IncomingJobQueueName}", { "label": "Pending?" } ],
70
70
  [ ".", "ApproximateNumberOfMessagesNotVisible", ".", ".", { "label": "Backlog?" } ],
71
71
  [ ".", "NumberOfMessagesSent", ".", ".", { "label": "Sent" } ],
72
72
  [ ".", "ApproximateNumberOfMessagesDelayed", ".", ".", { "label": "Delayed" } ]
@@ -90,7 +90,7 @@ Resources:
90
90
  "properties": {
91
91
  "period": 60,
92
92
  "metrics": [
93
- [ "AWS/Lambda", "Duration", "FunctionName", "${self:service}-${self:provider.stage}-incoming_job_handler", { "stat": "Minimum" } ],
93
+ [ "AWS/Lambda", "Duration", "FunctionName", "${self:custom.funktor.IncomingJobHandlerName}", { "stat": "Minimum" } ],
94
94
  [ "...", { "stat": "Average" } ],
95
95
  [ "...", { "stat": "Maximum" } ]
96
96
  ],
@@ -110,7 +110,7 @@ Resources:
110
110
  "properties": {
111
111
  "period": 60,
112
112
  "metrics": [
113
- [ "AWS/Lambda", "Errors", "FunctionName", "${self:service}-${self:provider.stage}-incoming_job_handler", { "id": "errors", "stat": "Sum", "color": "#d13212" } ],
113
+ [ "AWS/Lambda", "Errors", "FunctionName", "${self:custom.funktor.IncomingJobHandlerName}", { "id": "errors", "stat": "Sum", "color": "#d13212" } ],
114
114
  [ ".", "Invocations", ".", ".", { "id": "invocations", "stat": "Sum", "visible": false } ],
115
115
  [ { "expression": "100 - 100 * errors / MAX([errors, invocations])", "label": "Success rate (%)", "id": "availability", "yAxis": "right", "region": "us-east-1" } ]
116
116
  ],
@@ -137,7 +137,7 @@ Resources:
137
137
  "properties": {
138
138
  "period": 60,
139
139
  "metrics": [
140
- [ "AWS/Lambda", "ConcurrentExecutions", "FunctionName", "${self:service}-${self:provider.stage}-incoming_job_handler", { "stat": "Maximum" } ]
140
+ [ "AWS/Lambda", "ConcurrentExecutions", "FunctionName", "${self:custom.funktor.IncomingJobHandlerName}", { "stat": "Maximum" } ]
141
141
  ],
142
142
  "region": "us-east-1",
143
143
  "title": "Incoming Job Handler Concurrent Executions",
@@ -2,7 +2,7 @@ Resources:
2
2
  IncomingJobQueue:
3
3
  Type: AWS::SQS::Queue
4
4
  Properties:
5
- QueueName: ${self:custom.funktor.incomingJobQueueName}
5
+ QueueName: ${self:custom.funktor.IncomingJobQueueName}
6
6
  VisibilityTimeout: 300
7
7
  RedrivePolicy:
8
8
  deadLetterTargetArn:
@@ -11,7 +11,7 @@ Resources:
11
11
  IncomingJobDeadLetterQueue:
12
12
  Type: AWS::SQS::Queue
13
13
  Properties:
14
- QueueName: ${self:custom.funktor.incomingDeadJobQueueName}
14
+ QueueName: ${self:custom.funktor.IncomingDeadJobQueueName}
15
15
 
16
16
  Outputs:
17
17
  IncomingJobQueueUrl:
@@ -1,3 +1,3 @@
1
1
  module Funktor
2
- VERSION = "0.2.7"
2
+ VERSION = "0.2.8"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: funktor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Green