github.com/iron-io/functions@v0.0.0-20180820112432-d59d7d1c40b2/examples/s3/example.js (about) 1 var im = require('imagemagick'); 2 var fs = require('fs'); 3 var AWS = require('aws-sdk'); 4 5 // cb(err, resized) is called with true if resized. 6 function resizeIfRequired(err, features, fileSrc, fileDst, cb) { 7 if (err) { 8 cb(err, false); 9 return; 10 } 11 12 var targetWidth = 1024; 13 if (features.width > targetWidth) 14 { 15 im.resize({ 16 srcPath : fileSrc, 17 dstPath : fileDst, 18 width : targetWidth, 19 format: 'jpg' 20 }, function(err) { 21 if (err) { 22 cb(err, false); 23 } else { 24 cb(null, true); 25 } 26 }); 27 } else { 28 cb(null, false); 29 } 30 } 31 32 exports.run = function(event, context) { 33 var bucketName = event['bucket'] 34 var srcImageKey = event['srcKey'] 35 var dstImageKey = event['dstKey'] 36 37 var s3 = new AWS.S3(); 38 39 s3.getObject({ 40 Bucket: bucketName, 41 Key: srcImageKey 42 }, function (err, data) { 43 44 if (err) throw err; 45 46 var fileSrc = '/tmp/image-src.dat'; 47 var fileDst = '/tmp/image-dst.dat' 48 fs.writeFileSync(fileSrc, data.Body) 49 50 im.identify(fileSrc, function(err, features) { 51 resizeIfRequired(err, features, fileSrc, fileDst, function(err, resized) { 52 if (err) throw err; 53 if (resized) { 54 s3.putObject({ 55 Bucket:bucketName, 56 Key: dstImageKey, 57 Body: fs.createReadStream(fileDst), 58 ContentType: 'image/jpeg', 59 ACL: 'public-read', 60 }, function (err, data) { 61 if (err) throw err; 62 context.succeed("Image updated"); 63 }); 64 } else { 65 context.succeed("Image not updated"); 66 } 67 }); 68 }); 69 }); 70 }