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 +4 -4
- data/js/package.json +2 -0
- data/js/request.js +39 -9
- data/lib/lambda_runner.rb +3 -2
- data/lib/sample_cloudwatch_event.json +26 -0
- data/lib/sample_scheduled_event.json +12 -0
- metadata +3 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1072f1479b4079a9ad869e54f88e9d7868c5b43b
|
|
4
|
+
data.tar.gz: 8385219cdbf104fed5b41b7b44192e78023c0e25
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a36af0663924daa993afb7eac23650e743f7687aa8169a2157959be3866f75e94663a18944da8fd599d8b985d7efb4c709c36abe2b30867d05eda29381a67cd2
|
|
7
|
+
data.tar.gz: fa743cd813123c3dc80dee145b0fee65d942a0dec0515c5c063bcd1b0c2978e4deb885a7fe1d7fb8113f6c2e887d67663fcc0cf9eaf74fc3ce99a5ff93bb7897
|
data/js/package.json
CHANGED
|
@@ -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
|
}
|
data/js/request.js
CHANGED
|
@@ -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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
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
|
|
data/lib/lambda_runner.rb
CHANGED
|
@@ -50,8 +50,9 @@ module LambdaRunner
|
|
|
50
50
|
"http://localhost:#{@port}/"
|
|
51
51
|
end
|
|
52
52
|
|
|
53
|
-
def
|
|
54
|
-
|
|
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.
|
|
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
|