如何解决如何在 NodeJS 中从 AWS Lambda 调用 ImageMagick?
这是我尝试过的。
我在 AWS Lambda 中创建了 ImageMagick 作为层。
这是我调用转换代码的方式
const { spawnSync } = require("child_process")
const { readFileSync,writeFileSync,unlinkSync } = require("fs")
const AWS = require("aws-sdk")
var fs = require("fs")
const s3 = new AWS.S3()
var path = require('path')
var os = require('os')
module.exports.handler = async (event,context) => {
try {
let imageURL = 'https://via.placeholder.com/600.png'
let fileName = "magik.png"
let bucket = "testing-image"
let id = context.awsRequestId
let workdir = os.tmpdir()
let outputFile = path.join(workdir,'converted-' + id + ".png");
console.log("Output File Path>>>>",imageURL);
let spawn = spawnSync(
"/opt/bin/convert",[
imageURL,"-resize","50%",outputFile
],{ stdio: ['inherit','inherit','pipe'] }
)
if (spawn.stderr) {
console.log("Spawn error>>>>>"+ Error(spawn.stderr))
process.exitCode = 1;
}
} catch (e) {
console.log("Exception in Lambda Fn >>>>>>>",e)
}
}
当我运行这个时,我不断收到以下错误:
Spawn error>>>>>Error: convert: delegate failed `'curl' -s -k -L -o '%o' 'https:%M'' @
error/delegate.c/InvokeDelegate/1867.
convert: unable to open file '/tmp/magick-23JJ4ectjZG7CF': No such file or directory @
error/constitute.c/ReadImage/596.
convert: no images defined `/tmp/converted-69f6a8ae-2bdd-4a7b-a9c4-75f22f93c821.png' @
error/convert.c/ConvertImageCommand/3300.
END RequestId: 69f6a8ae-2bdd-4a7b-a9c4-75f22f93c821
当我从 mac 终端尝试以下代码时,它运行良好:
magick convert 'https://via.placeholder.com/600.png' -resize 50% outputImage.png
我在 Lambda 中缺少什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。