aws-lambda-runner 1.3.6 → 1.4.0

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
  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