【发布时间】:2022-02-15 12:29:48
【问题描述】:
我正在尝试编写一个在图像上添加水印的 lambda,然后将结果保存到 S3。我正在使用Sharp library 这样做。我正在使用Serverless Framework 进行部署。
我不确定如何在 lambda 中“包含”图像。我将为数百万张图像添加水印,因此我想避免每次都从 S3 中“读取”图像,我希望将其包含在 lambda 包中。
let overlayResp;
try {
const overlayImg = await Sharp(sourceImage.Body)
.composite([{input: './logos/white.png', gravity: 'southeast' }])
.toFormat('jpeg').toBuffer();
overlayResp = await s3.putObject({
Bucket: IMAGE_BUCKET,
Body: overlayImg,
Key: `${filename.replace('original', 'overlay')}`
}).promise();
} catch (err) {
console.error('Overlay err :>> ', err); //TODO: DLQ
}
我尝试将图像包含在我的 processNewImage.js 文件夹旁边的“logos”文件夹中,如下所示:
使用上面的代码。提示“输入文件丢失”时出错。
我尝试导入图像const WHITE = require('/logos/white.png'); 并将复合行更改为.composite([{input: WHITE, gravity: 'southeast' }]),结果代码甚至无法运行(Cannot find module '/logos/white.png)。
感觉好像 lambda 包没有包含图像。如何包含它和/或引用它?
【问题讨论】:
标签: javascript aws-lambda serverless-framework