UNPKG

sigfox-aws

Version:

Framework for building a Sigfox server, based on Amazon Web Services and Lambda Functions

271 lines (256 loc) 12.1 kB
// 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 */