-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathtest-autoinstall.js
270 lines (256 loc) · 11.8 KB
/
test-autoinstall.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
// TODO OBSOLETE: Use sigfox-iot-cloud/test/test-autoinstall.js instead.
/* eslint-disable camelcase,max-len,global-require,import/no-unresolved */
const package_json = /* eslint-disable quote-props,quotes,comma-dangle,indent */
// PASTE PACKAGE.JSON BELOW //////////////////////////////////////////////////////////
{ "dependencies": {
"dnscache": "^1.0.1",
"sigfox-aws": ">=1.0.9",
"uuid": "^3.1.0" } };
// eslint-disable-next-line no-unused-vars
const isGoogleCloud = !!process.env.FUNCTION_NAME || !!process.env.GAE_SERVICE;
const isAWS = !!process.env.AWS_LAMBDA_FUNCTION_NAME;
// //////////////////////////////////////////////////////////////////////////////////// endregion
// region Portable Code for Google Cloud and AWS
function wrap() {
// Wrap the module into a function so that all we defer loading of dependencies,
// and ensure that cloud resources are properly disposed.
function main(event, context, callback) {
const scloud = require('sigfox-aws');
console.log('main', { event, context, callback, scloud });
return callback(null, 'OK');
}
// Expose these functions outside of the wrapper.
// "main" is called to execute the wrapped function when the dependencies and wrapper have been loaded.
return { main };
}
// //////////////////////////////////////////////////////////////////////////////////// endregion
// region Standard Code for AutoInstall Startup Function. Do not modify. https://github.com/UnaBiz/sigfox-aws/blob/master/autoinstall.js
/* eslint-disable camelcase,no-unused-vars,import/no-absolute-path,import/no-unresolved,no-use-before-define,global-require,max-len,no-tabs,brace-style,import/no-extraneous-dependencies */
const wrapper = {}; // The single reused wrapper instance (initially empty) for invoking the module functions.
exports.main = isGoogleCloud ? require('sigfox-gcloud/lib/main').getMainFunction(wrapper, wrap, package_json)
: (event, context, callback) => { // exports.main is the startup function for AWS Lambda and Google Cloud Function.
// When AWS starts our Lambda function, we load the autoinstall script from GitHub to install any NPM dependencies.
// For first run, install the dependencies specified in package_json and proceed to next step.
// For future runs, just execute the wrapper function with the event, context, callback parameters.
const afterExec = error => error ? callback(error, 'AutoInstall Failed')
: require('/tmp/autoinstall').installAndRunWrapper(event, context, callback,
package_json, __filename, wrapper, wrap);
if (require('fs').existsSync('/tmp/autoinstall.js')) return afterExec(null); // Already downloaded.
const cmd = 'curl -s -S -o /tmp/autoinstall.js https://raw.githubusercontent.com/UnaBiz/sigfox-aws/master/autoinstall.js';
const child = require('child_process').exec(cmd, { maxBuffer: 1024 * 500 }, afterExec);
child.stdout.on('data', console.log); child.stderr.on('data', console.error); return null; };
// //////////////////////////////////////////////////////////////////////////////////// endregion
/* Expected Output:
START RequestId: Version: $LATEST
2017-11-26T03:11:21.775Z total 12
-rw-rw-r-- 1 sbx_user1064 482 5120 Nov 26 03:11 autoinstall.js
-rw-rw-r-- 1 sbx_user1064 482 103 Nov 26 03:11 package.json
2017-11-26T03:11:40.396Z /tmp
├─┬ dnscache@1.0.1
│ ├── asap@2.0.6
│ └─┬ lodash.clone@4.3.2
│ └── lodash._baseclone@4.5.7
├─┬ sigfox-aws@1.0.9
│ ├─┬ aws-sdk@2.156.0
│ │ ├─┬ buffer@4.9.1
│ │ │ ├── base64-js@1.2.1
│ │ │ ├── ieee754@1.1.8
│ │ │ └── isarray@1.0.0
│ │ ├── crypto-browserify@1.0.9
│ │ ├── events@1.1.1
│ │ ├── jmespath@0.15.0
│ │ ├── querystring@0.2.0
│ │ ├── sax@1.2.1
│ │ ├─┬ url@0.10.3
│ │ │ └── punycode@1.3.2
│ │ ├── xml2js@0.4.17
│ │ └─┬ xmlbuilder@4.2.1
│ │ └── lodash@4.17.4
│ ├─┬ aws-xray-sdk-core@1.1.6
│ │ ├─┬ continuation-local-storage@3.2.1
│ │ │ ├─┬ async-listener@0.6.8
│ │ │ │ └── shimmer@1.2.0
│ │ │ └── emitter-listener@1.1.1
│ │ ├── moment@2.19.2
│ │ ├── pkginfo@0.4.1
│ │ ├── semver@5.4.1
│ │ ├── underscore@1.8.3
│ │ └─┬ winston@2.4.0
│ │ ├── async@1.0.0
│ │ ├── colors@1.0.3
│ │ ├── cycle@1.0.3
│ │ ├── eyes@0.1.8
│ │ ├── isstream@0.1.2
│ │ └── stack-trace@0.0.10
│ ├── dotenv@4.0.0
│ └── json-stringify-safe@5.0.1
└── uuid@3.1.0
2017-11-26T03:11:40.415Z npm
2017-11-26T03:11:40.415Z WARN tmp No description
2017-11-26T03:11:40.415Z npm
2017-11-26T03:11:40.415Z WARN
2017-11-26T03:11:40.415Z tmp No repository field.
2017-11-26T03:11:40.415Z npm
2017-11-26T03:11:40.416Z WARN tmp No license field.
2017-11-26T03:11:40.497Z total 20
-rw-rw-r-- 1 sbx_user1064 482 5120 Nov 26 03:11 autoinstall.js
drwxrwxr-x 42 sbx_user1064 482 4096 Nov 26 03:11 node_modules
drwxrwxr-x 3 sbx_user1064 482 4096 Nov 26 03:11 npm-16-567280b0
-rw-rw-r-- 1 sbx_user1064 482 103 Nov 26 03:11 package.json
2017-11-26T03:11:40.498Z total 172
drwxrwxr-x 2 sbx_user1064 482 4096 Nov 26 03:11 asap
drwxrwxr-x 4 sbx_user1064 482 4096 Nov 26 03:11 async
drwxrwxr-x 3 sbx_user1064 482 4096 Nov 26 03:11 async-listener
drwxrwxr-x 9 sbx_user1064 482 4096 Nov 26 03:11 aws-sdk
drwxrwxr-x 4 sbx_user1064 482 4096 Nov 26 03:11 aws-xray-sdk-core
drwxrwxr-x 3 sbx_user1064 482 4096 Nov 26 03:11 base64-js
drwxrwxr-x 4 sbx_user1064 482 4096 Nov 26 03:11 buffer
drwxrwxr-x 7 sbx_user1064 482 4096 Nov 26 03:11 colors
drwxrwxr-x 3 sbx_user1064 482 4096 Nov 26 03:11 continuation-local-storage
drwxrwxr-x 4 sbx_user1064 482 4096 Nov 26 03:11 crypto-browserify
drwxrwxr-x 2 sbx_user1064 482 4096 Nov 26 03:11 cycle
drwxrwxr-x 5 sbx_user1064 482 4096 Nov 26 03:11 dnscache
drwxrwxr-x 3 sbx_user1064 482 4096 Nov 26 03:11 dotenv
drwxrwxr-x 3 sbx_user1064 482 4096 Nov 26 03:11 emitter-listener
drwxrwxr-x 3 sbx_user1064 482 4096 Nov 26 03:11 events
drwxrwxr-x 4 sbx_user1064 482 4096 Nov 26 03:11 eyes
drwxrwxr-x 3 sbx_user1064 482 4096 Nov 26 03:11 ieee754
drwxrwxr-x 2 sbx_user1064 482 4096 Nov 26 03:11 isarray
drwxrwxr-x 2 sbx_user1064 482 4096 Nov 26 03:11 isstream
drwxrwxr-x 4 sbx_user1064 482 4096 Nov 26 03:11 jmespath
drwxrwxr-x 3 sbx_user1064 482 4096 Nov 26 03:11 json-stringify-safe
drwxrwxr-x 3 sbx_user1064 482 20480 Nov 26 03:11 lodash
drwxrwxr-x 2 sbx_user1064 482 4096 Nov 26 03:11 lodash._baseclone
drwxrwxr-x 2 sbx_user1064 482 4096 Nov 26 03:11 lodash.clone
drwxrwxr-x 5 sbx_user1064 482 4096 Nov 26 03:11 moment
drwxrwxr-x 5 sbx_user1064 482 4096 Nov 26 03:11 pkginfo
drwxrwxr-x 2 sbx_user1064 482 4096 Nov 26 03:11 punycode
drwxrwxr-x 3 sbx_user1064 482 4096 Nov 26 03:11 querystring
drwxrwxr-x 3 sbx_user1064 482 4096 Nov 26 03:11 sax
drwxrwxr-x 3 sbx_user1064 482 4096 Nov 26 03:11 semver
drwxrwxr-x 3 sbx_user1064 482 4096 Nov 26 03:11 shimmer
drwxrwxr-x 8 sbx_user1064 482 4096 Nov 26 03:11 sigfox-aws
drwxrwxr-x 3 sbx_user1064 482 4096 Nov 26 03:11 stack-trace
drwxrwxr-x 2 sbx_user1064 482 4096 Nov 26 03:11 underscore
drwxrwxr-x 2 sbx_user1064 482 4096 Nov 26 03:11 url
drwxrwxr-x 4 sbx_user1064 482 4096 Nov 26 03:11 uuid
drwxrwxr-x 4 sbx_user1064 482 4096 Nov 26 03:11 winston
drwxrwxr-x 3 sbx_user1064 482 4096 Nov 26 03:11 xml2js
drwxrwxr-x 3 sbx_user1064 482 4096 Nov 26 03:11 xmlbuilder
2017-11-26T03:11:40.499Z Creating /tmp/index.js
2017-11-26T03:11:40.499Z require /tmp/index.js
2017-11-26T03:11:40.500Z Calling handler in /tmp/index.js from /tmp/autoinstall.js...
2017-11-26T03:11:40.500Z Creating instance of wrap function... /tmp/autoinstall.js
2017-11-26T03:11:40.778Z AWS_XRAY_DAEMON_ADDRESS is set. Configured daemon address to 169.254.79.2:2000.
2017-11-26T03:11:40.781Z AWS_XRAY_CONTEXT_MISSING is set. Configured context missing strategy to LOG_ERROR.
2017-11-26T03:11:40.834Z Subsegment streaming threshold set to: 0
2017-11-26T03:11:40.836Z Using custom sampling rules source.
2017-11-26T03:11:41.536Z main { event: { key3: 'value3', key2: 'value2', key1: 'value1' },
context:
{ callbackWaitsForEmptyEventLoop: [Getter/Setter],
done: [Function: done],
succeed: [Function: succeed],
fail: [Function: fail],
logGroupName: '/aws/lambda/testExec',
logStreamName: '2017/11/26/[$LATEST]1737c4c280894369806c0e583ef72d40',
functionName: 'testExec',
memoryLimitInMB: '640',
functionVersion: '$LATEST',
getRemainingTimeInMillis: [Function: getRemainingTimeInMillis],
invokeid: '',
awsRequestId: '',
invokedFunctionArn: 'arn:aws:lambda:ap-southeast-1:112039193356:function:testExec',
autoinstalled: true },
callback: [Function: callback],
scloud:
{ isGoogleCloud: false,
isAWS: true,
projectId: null,
functionName: 'testExec',
sleep: [Function: sleep],
removeNulls: [Function: removeNulls],
log: [Function: log],
error: [Function: log],
flushLog: [Function: flushLog],
logQueue: [Function: logQueue],
dumpError: [Function: dumpError],
dumpNullError: [Function: dumpNullError],
createTraceID: [Function: createTraceID],
startRootSpan: [Function: startRootSpan],
publishJSON: [Function: publishJSON],
publishMessage: [Function: publishMessage],
updateMessageHistory: [Function: updateMessageHistory],
dispatchMessage: [Function: dispatchMessage],
createDevice: [Function: createDevice],
getDeviceState: [Function: getDeviceState],
updateDeviceState: [Function: updateDeviceState],
init: [Function: init],
main: [Function: main],
endTask: [Function: endTask],
logQueueConfig: [],
setLogQueue: [Function: setLogQueue],
transformRoute: [Function: transformRoute],
setRoute: [Function: setRoute],
getRootSpan: [Function: getRootSpan],
endRootSpan: [Function: endRootSpan],
createChildSpan: [Function: createChildSpan] } }
END RequestId:
REPORT RequestId: Duration: 20028.25 ms Billed Duration: 20100 ms Memory Size: 640 MB Max Memory Used: 234 MB
*/
/* Subsequent Run:
START RequestId: Version: $LATEST
2017-11-26T03:16:46.877Z Reusing /tmp/index.js
2017-11-26T03:16:46.877Z require /tmp/index.js
2017-11-26T03:16:46.877Z Calling handler in /tmp/index.js from /tmp/autoinstall.js...
2017-11-26T03:16:46.877Z main { event: { key3: 'value3', key2: 'value2', key1: 'value1' },
context:
{ callbackWaitsForEmptyEventLoop: [Getter/Setter],
done: [Function: done],
succeed: [Function: succeed],
fail: [Function: fail],
logGroupName: '/aws/lambda/testExec',
logStreamName: '2017/11/26/[$LATEST]1737c4c280894369806c0e583ef72d40',
functionName: 'testExec',
memoryLimitInMB: '640',
functionVersion: '$LATEST',
getRemainingTimeInMillis: [Function: getRemainingTimeInMillis],
invokeid: '',
awsRequestId: '',
invokedFunctionArn: 'arn:aws:lambda:ap-southeast-1:112039193356:function:testExec',
autoinstalled: true },
callback: [Function: callback],
scloud:
{ isGoogleCloud: false,
isAWS: true,
projectId: null,
functionName: 'testExec',
sleep: [Function: sleep],
removeNulls: [Function: removeNulls],
log: [Function: log],
error: [Function: log],
flushLog: [Function: flushLog],
logQueue: [Function: logQueue],
dumpError: [Function: dumpError],
dumpNullError: [Function: dumpNullError],
createTraceID: [Function: createTraceID],
startRootSpan: [Function: startRootSpan],
publishJSON: [Function: publishJSON],
publishMessage: [Function: publishMessage],
updateMessageHistory: [Function: updateMessageHistory],
dispatchMessage: [Function: dispatchMessage],
createDevice: [Function: createDevice],
getDeviceState: [Function: getDeviceState],
updateDeviceState: [Function: updateDeviceState],
init: [Function: init],
main: [Function: main],
endTask: [Function: endTask],
logQueueConfig: [],
setLogQueue: [Function: setLogQueue],
transformRoute: [Function: transformRoute],
setRoute: [Function: setRoute],
getRootSpan: [Function: getRootSpan],
endRootSpan: [Function: endRootSpan],
createChildSpan: [Function: createChildSpan] } }
END RequestId:
REPORT RequestId: Duration: 15.88 ms Billed Duration: 100 ms Memory Size: 640 MB Max Memory Used: 234 MB
*/