docker-lambda
Advanced tools
+1
-1
| { | ||
| "name": "docker-lambda", | ||
| "version": "0.12.1", | ||
| "version": "0.12.2", | ||
| "description": "A Docker image and test runner that (very closely) mimics the live AWS Lambda environment", | ||
@@ -5,0 +5,0 @@ "main": "index.js", |
| FROM lambci/lambda-base:build | ||
| ENV PATH=/var/lang/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \ | ||
| LD_LIBRARY_PATH=/var/lang/lib:/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib \ | ||
| LANG=en_US.UTF-8 \ | ||
| AWS_EXECUTION_ENV=AWS_Lambda_nodejs6.10 \ | ||
| NODE_PATH=/var/runtime:/var/task:/var/runtime/node_modules \ | ||
| npm_config_unsafe-perm=true | ||
| RUN rm -rf /var/runtime /var/lang && \ | ||
| curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / | ||
| CMD ["npm", "rebuild"] |
| var crypto = require('crypto') | ||
| var HANDLER = process.argv[2] || process.env.AWS_LAMBDA_FUNCTION_HANDLER || 'index.handler' | ||
| var EVENT_BODY = process.argv[3] || process.env.AWS_LAMBDA_EVENT_BODY || '{}' | ||
| var FN_NAME = process.env.AWS_LAMBDA_FUNCTION_NAME || 'test' | ||
| var VERSION = process.env.AWS_LAMBDA_FUNCTION_VERSION || '$LATEST' | ||
| var MEM_SIZE = process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE || 1536 | ||
| var TIMEOUT = process.env.AWS_LAMBDA_FUNCTION_TIMEOUT || 300 | ||
| var REGION = process.env.AWS_REGION || process.env.AWS_DEFAULT_REGION || 'us-east-1' | ||
| var ACCOUNT_ID = process.env.AWS_ACCOUNT_ID || randomAccountId() | ||
| var ACCESS_KEY_ID = process.env.AWS_ACCESS_KEY_ID || 'SOME_ACCESS_KEY_ID' | ||
| var SECRET_ACCESS_KEY = process.env.AWS_SECRET_ACCESS_KEY || 'SOME_SECRET_ACCESS_KEY' | ||
| var SESSION_TOKEN = process.env.AWS_SESSION_TOKEN | ||
| function consoleLog(str) { | ||
| process.stderr.write(formatConsole(str)) | ||
| } | ||
| function systemLog(str) { | ||
| process.stderr.write(formatSystem(str) + '\n') | ||
| } | ||
| function systemErr(str) { | ||
| process.stderr.write(formatErr(str) + '\n') | ||
| } | ||
| function handleResult(resultStr) { | ||
| process.stdout.write(resultStr) | ||
| } | ||
| // Don't think this can be done in the Docker image | ||
| process.umask(2) | ||
| process.env.AWS_LAMBDA_FUNCTION_NAME = FN_NAME | ||
| process.env.AWS_LAMBDA_FUNCTION_VERSION = VERSION | ||
| process.env.AWS_LAMBDA_FUNCTION_MEMORY_SIZE = MEM_SIZE | ||
| process.env.AWS_LAMBDA_LOG_GROUP_NAME = '/aws/lambda/' + FN_NAME | ||
| process.env.AWS_LAMBDA_LOG_STREAM_NAME = new Date().toISOString().slice(0, 10).replace(/-/g, '/') + | ||
| '/[' + VERSION + ']' + crypto.randomBytes(16).toString('hex') | ||
| process.env.AWS_REGION = REGION | ||
| process.env.AWS_DEFAULT_REGION = REGION | ||
| var OPTIONS = { | ||
| initInvokeId: uuid(), | ||
| invokeId: uuid(), | ||
| handler: HANDLER, | ||
| suppressInit: true, | ||
| credentials: { | ||
| key: ACCESS_KEY_ID, | ||
| secret: SECRET_ACCESS_KEY, | ||
| session: SESSION_TOKEN, | ||
| }, | ||
| eventBody: EVENT_BODY, | ||
| contextObjects: { | ||
| // clientContext: '{}', | ||
| // cognitoIdentityId: undefined, | ||
| // cognitoPoolId: undefined, | ||
| }, | ||
| invokedFunctionArn: arn(REGION, ACCOUNT_ID, FN_NAME), | ||
| } | ||
| // Some weird spelling error in the source? | ||
| OPTIONS.invokeid = OPTIONS.invokeId | ||
| var invoked = false | ||
| var errored = false | ||
| var start = null | ||
| module.exports = { | ||
| initRuntime: function() { return OPTIONS }, | ||
| waitForInvoke: function(fn) { | ||
| if (invoked) return | ||
| systemLog('START RequestId: ' + OPTIONS.invokeId + ' Version: ' + VERSION) | ||
| start = process.hrtime() | ||
| invoked = true | ||
| fn(OPTIONS) | ||
| }, | ||
| reportRunning: function(invokeId) {}, // eslint-disable-line no-unused-vars | ||
| reportDone: function(invokeId, errType, resultStr) { | ||
| if (!invoked) return | ||
| var diffMs = hrTimeMs(process.hrtime(start)) | ||
| var billedMs = Math.min(100 * (Math.floor(diffMs / 100) + 1), TIMEOUT * 1000) | ||
| systemLog('END RequestId: ' + invokeId) | ||
| systemLog([ | ||
| 'REPORT RequestId: ' + invokeId, | ||
| 'Duration: ' + diffMs.toFixed(2) + ' ms', | ||
| 'Billed Duration: ' + billedMs + ' ms', | ||
| 'Memory Size: ' + MEM_SIZE + ' MB', | ||
| 'Max Memory Used: ' + Math.round(process.memoryUsage().rss / (1024 * 1024)) + ' MB', | ||
| '', | ||
| ].join('\t')) | ||
| if (typeof resultStr == 'string') { | ||
| handleResult(resultStr) | ||
| } | ||
| process.exit(errored || errType ? 1 : 0) | ||
| }, | ||
| reportFault: function(invokeId, msg, errName, errStack) { | ||
| errored = true | ||
| systemErr(msg + (errName ? ': ' + errName : '')) | ||
| if (errStack) systemErr(errStack) | ||
| }, | ||
| getRemainingTime: function() { | ||
| return (TIMEOUT * 1000) - Math.floor(hrTimeMs(process.hrtime(start))) | ||
| }, | ||
| sendConsoleLogs: consoleLog, | ||
| maxLoggerErrorSize: 256 * 1024, | ||
| } | ||
| function formatConsole(str) { | ||
| return str.replace(/^[0-9TZ:\.\-]+\t[0-9a-f\-]+\t/, '\033[34m$&\u001b[0m') | ||
| } | ||
| function formatSystem(str) { | ||
| return '\033[32m' + str + '\033[0m' | ||
| } | ||
| function formatErr(str) { | ||
| return '\033[31m' + str + '\033[0m' | ||
| } | ||
| function hrTimeMs(hrtime) { | ||
| return (hrtime[0] * 1e9 + hrtime[1]) / 1e6 | ||
| } | ||
| // Approximates the look of a v1 UUID | ||
| function uuid() { | ||
| return crypto.randomBytes(4).toString('hex') + '-' + | ||
| crypto.randomBytes(2).toString('hex') + '-' + | ||
| crypto.randomBytes(2).toString('hex').replace(/^./, '1') + '-' + | ||
| crypto.randomBytes(2).toString('hex') + '-' + | ||
| crypto.randomBytes(6).toString('hex') | ||
| } | ||
| function randomAccountId() { | ||
| return String(0x100000000 * Math.random()) | ||
| } | ||
| function arn(region, accountId, fnName) { | ||
| return 'arn:aws:lambda:' + region + ':' + accountId.replace(/[^\d]/g, '') + ':function:' + fnName | ||
| } | ||
| FROM lambci/lambda-base | ||
| ENV PATH=/var/lang/bin:/usr/local/bin:/usr/bin/:/bin \ | ||
| LD_LIBRARY_PATH=/var/lang/lib:/lib64:/usr/lib64:/var/runtime:/var/runtime/lib:/var/task:/var/task/lib \ | ||
| LANG=en_US.UTF-8 \ | ||
| AWS_EXECUTION_ENV=AWS_Lambda_nodejs6.10 \ | ||
| NODE_PATH=/var/runtime:/var/task:/var/runtime/node_modules \ | ||
| LAMBDA_TASK_ROOT=/var/task \ | ||
| LAMBDA_RUNTIME_DIR=/var/runtime | ||
| RUN rm -rf /var/runtime /var/lang && mkdir /tmp && chown sbx_user1051:495 /tmp && chmod 700 /tmp && \ | ||
| curl https://lambci.s3.amazonaws.com/fs/nodejs6.10.tgz | tar -zx -C / | ||
| ADD awslambda-mock.js /var/runtime/node_modules/awslambda/build/Release/awslambda.js | ||
| WORKDIR /var/task | ||
| USER sbx_user1051 | ||
| ENTRYPOINT ["/var/lang/bin/node", "--max-old-space-size=1229", "--max-semi-space-size=76", "--max-executable-size=153", "--expose-gc", \ | ||
| "/var/runtime/node_modules/awslambda/index.js"] | ||
Sorry, the diff of this file is not supported yet
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 14 instances in 1 package
1
-95%14974
-28.1%7
-30%167
-42.21%