const fs = require('fs')
const { execSync } = require('child_process')
const AWS = require('aws-sdk')
const s3 = new AWS.S3()
// Depends on tar-find-layer for the tar/find/xargs binaries
exports.handler = async(event, context) => {
const execOpts = { stdio: 'inherit', maxBuffer: 16 * 1024 * 1024 }
let filename = 'base-2.tgz'
let cmd = 'tar -cpzf /tmp/' + filename +
' -C / --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/tmp ' +
'--exclude=/var/task/* --exclude=/var/runtime/* --exclude=/var/lang/* --exclude=/var/rapid/* --exclude=/opt/* ' +
'--numeric-owner --ignore-failed-read /'
execSync(event.cmd || cmd, execOpts)
if (event.cmd) return
console.log('Zipping done! Uploading...')
let data = await s3.upload({
Bucket: 'lambci',
Key: 'fs/' + filename,
Body: fs.createReadStream('/tmp/' + filename),
ACL: 'public-read',
}).promise()
filename = 'nodejs10.x.tgz'
cmd = 'tar -cpzf /tmp/' + filename +
' --numeric-owner --ignore-failed-read /var/runtime /var/lang /var/rapid'
execSync(cmd, execOpts)
console.log('Zipping done! Uploading...')
data = await s3.upload({
Bucket: 'lambci',
Key: 'fs/' + filename,
Body: fs.createReadStream('/tmp/' + filename),
ACL: 'public-read',
}).promise()
console.log('Uploading done!')
console.log(process.execPath)
console.log(process.execArgv)
console.log(process.argv)
console.log(process.cwd())
console.log(__filename)
console.log(process.env)
execSync('echo /proc/1/environ; xargs -n 1 -0 < /proc/1/environ', execOpts)
execSync("bash -O extglob -c 'for cmd in /proc/+([0-9])/cmdline; do echo $cmd; xargs -n 1 -0 < $cmd; done'", execOpts)
console.log(context)
return data
}