aws-lambda-runner 1.3.6 → 1.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 84e5c0d53686fa3db9d9e0ee802ef4b70f2a25d5
4
- data.tar.gz: e85652219b0b1459d917d6723a3e0b916410b962
3
+ metadata.gz: 1072f1479b4079a9ad869e54f88e9d7868c5b43b
4
+ data.tar.gz: 8385219cdbf104fed5b41b7b44192e78023c0e25
5
5
  SHA512:
6
- metadata.gz: a7d27ed31291f9a515c1d7dc9d7d079953c1888e9ca0778881367b7afc72fd75460402d469488877ab338d4e2d2667b97ac3e7f3adb65b8170c3e3878844e8d3
7
- data.tar.gz: b9cd0da1e68c7f612cbb0b66e6a01642e15249f424ed1d230e374fafee5a1928fc929db7e024a42d7aa08d31cccfba66768a1c6bc6c00fc62dafc912bcc932ee
6
+ metadata.gz: a36af0663924daa993afb7eac23650e743f7687aa8169a2157959be3866f75e94663a18944da8fd599d8b985d7efb4c709c36abe2b30867d05eda29381a67cd2
7
+ data.tar.gz: fa743cd813123c3dc80dee145b0fee65d942a0dec0515c5c063bcd1b0c2978e4deb885a7fe1d7fb8113f6c2e887d67663fcc0cf9eaf74fc3ce99a5ff93bb7897
@@ -9,6 +9,7 @@
9
9
  "author": "",
10
10
  "license": " ",
11
11
  "devDependencies": {
12
+ "assert": "^1.3.0",
12
13
  "jshint": "^2.5.11",
13
14
  "mocha": "^2.1.0",
14
15
  "mocha-jshint": "0.0.9",
@@ -18,6 +19,7 @@
18
19
  "dependencies": {
19
20
  "aws-sdk": "^2.1.34",
20
21
  "istanbul": "^0.3.6",
22
+ "merge": "^1.2.0",
21
23
  "mock-req": "^0.1.0",
22
24
  "stdio": "^0.2.7"
23
25
  }
@@ -1,9 +1,14 @@
1
+ var merge = require('merge');
1
2
  var url = require('url');
2
3
 
3
4
  var next_id = 0;
4
5
  // results[id] = { threw: error, completed: [ errorValue, successValue ], timedOut: bool };
5
6
  var results = {};
6
7
 
8
+ var region = function () {
9
+ return process.env.AWS_DEFAULT_REGION || process.env.AWS_REGION || process.env.AMAZON_REGION || "xx-dummy-0";
10
+ };
11
+
7
12
  exports.request = function(req, res, opts, handler) {
8
13
 
9
14
  if (req.method === 'POST') {
@@ -37,15 +42,37 @@ exports.request = function(req, res, opts, handler) {
37
42
  res.writeHead(200, {'Content-Type': 'text/plain'});
38
43
  res.end(String(id));
39
44
 
40
- try {
41
- handler(requestObject, {
42
- done: function(err, message) {
43
- results[id].completed = [ err, message ];
44
- if (err) {
45
- console.warn('Error:', err);
46
- }
45
+ var approximateEndTime = (new Date().getTime()) + opts.timeout;
46
+
47
+ var context = {
48
+ done: function(err, message) {
49
+ results[id].completed = [ err, message ];
50
+ if (err) {
51
+ console.warn('Error:', err);
47
52
  }
48
- });
53
+ },
54
+ getRemainingTimeInMillis: function () {
55
+ return approximateEndTime - (new Date().getTime());
56
+ },
57
+
58
+ // Fixed, but reasonably representative
59
+ functionName: "via-aws-lambda-runner",
60
+ functionVersion: "$LATEST",
61
+ invokedFunctionArn: "arn:aws:lambda:" + region() + ":000000000000:function:via-aws-lambda-runner:$LATEST",
62
+ memoryLimitInMB: 100,
63
+ awsRequestId: "00000000-0000-0000-0000-000000000000",
64
+ logGroupName: "/aws/lambda/via-aws-lambda-runner",
65
+ logStreamName: "some-log-stream-name",
66
+ };
67
+
68
+ context.fail = function(err) { context.done(err, null); };
69
+ context.succeed = function(data) { context.done(null, data); };
70
+
71
+ var event = requestObject.event;
72
+ merge(context, requestObject.context || {});
73
+
74
+ try {
75
+ handler(event, context);
49
76
  } catch (e) {
50
77
  console.log("Handler crashed", e);
51
78
  results[id].threw = e;
@@ -74,7 +101,7 @@ exports.request = function(req, res, opts, handler) {
74
101
  status = 404;
75
102
  } else {
76
103
  if (result.completed) {
77
- if (result.completed[0] !== null) {
104
+ if (result.completed[0] !== null && result.completed[0] !== undefined) {
78
105
  status = 502;
79
106
  responseBody = result.completed[0];
80
107
  } else {
@@ -92,6 +119,9 @@ exports.request = function(req, res, opts, handler) {
92
119
  }
93
120
  }
94
121
 
122
+ // non-standard stringification of undefined
123
+ if (responseBody === undefined) responseBody = null;
124
+
95
125
  res.writeHead(status, {'Content-Type': 'application/json'});
96
126
  res.end(JSON.stringify(responseBody) + '\n');
97
127
 
@@ -50,8 +50,9 @@ module LambdaRunner
50
50
  "http://localhost:#{@port}/"
51
51
  end
52
52
 
53
- def send(message)
54
- id = RestClient.post(url, message, content_type: :json).to_str
53
+ def process_event(event, context = {})
54
+ payload = JSON.generate({ event: event, context: context })
55
+ id = RestClient.post(url, payload, content_type: :json).to_str
55
56
  loop do
56
57
  response = RestClient.get(url, params: { id: id })
57
58
  data = JSON.parse('['+response.body+']').first
@@ -0,0 +1,26 @@
1
+ {
2
+ "AWSAccountId": "475907659466",
3
+ "AlarmDescription": null,
4
+ "AlarmName": "cw-sns-lambda-test-alarm",
5
+ "NewStateReason": "Insufficient Data: 1 datapoint was unknown.",
6
+ "NewStateValue": "INSUFFICIENT_DATA",
7
+ "OldStateValue": "ALARM",
8
+ "Region": "EU - Ireland",
9
+ "StateChangeTime": "2015-09-30T12:08:32.313+0000",
10
+ "Trigger": {
11
+ "ComparisonOperator": "GreaterThanOrEqualToThreshold",
12
+ "Dimensions": [
13
+ {
14
+ "name": "FunctionName",
15
+ "value": "echo"
16
+ }
17
+ ],
18
+ "EvaluationPeriods": 1,
19
+ "MetricName": "Invocations",
20
+ "Namespace": "AWS/Lambda",
21
+ "Period": 60,
22
+ "Statistic": "AVERAGE",
23
+ "Threshold": 0,
24
+ "Unit": null
25
+ }
26
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "account": "244376974009",
3
+ "detail": {},
4
+ "detail-type": "Scheduled Event",
5
+ "id": "f6a3b160-89b8-45ba-b934-a42790456ad8",
6
+ "region": "eu-west-1",
7
+ "resources": [
8
+ "arn:aws:events:eu-west-1:244376974009:rule/5min"
9
+ ],
10
+ "source": "aws.events",
11
+ "time": "2015-10-28T09:26:29Z"
12
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-lambda-runner
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.6
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - andrew wheat
@@ -148,8 +148,10 @@ files:
148
148
  - js/request.js
149
149
  - js/startup.js
150
150
  - lib/lambda_runner.rb
151
+ - lib/sample_cloudwatch_event.json
151
152
  - lib/sample_s3_event.json
152
153
  - lib/sample_s3_test_event.json
154
+ - lib/sample_scheduled_event.json
153
155
  - lib/sample_sns_event.json
154
156
  - spec/lambda-runner_spec.rb
155
157
  homepage: https://github.com/bbc/aws-lambda-runner