使用AWS lambda在同一存储桶中调整图像大小

时间:2015-03-25 14:33:27

标签: amazon-web-services amazon-s3 aws-lambda

目前我在S3中有两个存储桶 - 让我们称之为buckbuck_thumb。现在,当我将图像上传到buck存储桶时,会触发lambda函数,将图像大小调整为缩略图,并将缩略图上传到buck_thumb存储桶。

但现在我想这样做 - 当我在buck存储桶中发送图像网址时,它会下载图像并重新调整大小。

有办法吗?我只用一个桶就可以做到这一点?

2 个答案:

答案 0 :(得分:5)

我所做的是将lambda函数设置为SNS消息事件,因此当我上传到S3存储桶时,我从服务器发送SNS消息到配置的URL,消息是S3到文件的整个路径,所以Lambda可以下载它,调整大小,然后用thumb_或其他任何内容上传。

希望它有所帮助!这是4个月前,但是...我希望它能帮助未来的访客XD

答案 1 :(得分:1)

如果简单地执行此操作,则可以上传->调整大小->上传->调整大小.....无限循环。     因此,您应该过滤图像的大小。如果图像已经是合适的尺寸,请停止该功能。

gm(data.Body)
.size(function (err, size) {
  if(err){
    callback('gm(data.Body) error');
    context.fail(err);
  }
  if (size.width <= resizeWidth && size.height <= resizeHeight) {
    console.log('already resized')
    context.succeed({
    "error":false
     });
   }
 });