【问题标题】:Image resize using AWS lambda in same bucket在同一存储桶中使用 AWS lambda 调整图像大小
【发布时间】:2015-03-25 14:33:26
【问题描述】:
目前我在 S3 中有两个存储桶 - 我们称它们为 buck 和 buck_thumb。现在,当我将图像上传到buck 存储桶时,它会触发一个 lambda 函数,该函数将图像大小调整为缩略图并将缩略图上传到buck_thumb 存储桶中。
但现在我想让它像 - 当我在 buck 存储桶中发送图像 url 时,它会下载图像并重新调整大小。
有办法吗?我可以只使用一个桶来做到这一点吗?
【问题讨论】:
标签:
amazon-web-services
amazon-s3
aws-lambda
【解决方案1】:
我所做的是将 lambda 函数设置为 SNS 消息事件,因此当我上传到 S3 存储桶时,我会从服务器向配置的 url 发送一条 SNS 消息,该消息是 S3 上文件的整个路径, 所以 Lambda 可以下载它,调整它的大小,然后用 thumb_ 或其他方式上传。
希望对您有所帮助!这是 4 个月前的事了,但是……我希望它对未来的访客有所帮助 XD
【解决方案2】:
如果你简单地这样做,那么你上传 -> 调整大小 -> 上传 -> 调整大小.....无限循环。
因此,您应该过滤图像的大小。如果图像的尺寸已经合适,请停止该功能。
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
});
}
});