funktor 0.2.7 → 0.2.8

Sign up to get free protection for your applications and to get access to all the features.
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