我需要AWS CDK来部署一个lambda fleet,并希望使用gm
将PDF的第一页转换为PNG。我对实现没问题,因为它在我的笔记本电脑上工作得很好,我只是需要帮助添加图形二进制文件。
我当然会得到Error: Stream yields empty buffer
,因为下面的NodejsFunction没有包含必要的二进制文件。我如何部署安装了graphicsmagick的NodejsFunction?
const designerHandler = new NodejsFunction(this, "designer-server", {
functionName: "designer-server",
memorySize: 512,
runtime: lambda.Runtime.NODEJS_12_X,
handler: "handler",
entry: path.join(__dirname, "./server/src/index.ts"),
timeout: cdk.Duration.seconds(30),
});
我已经尝试过使用层没有成功,我现在正在考虑使用docker。
designerHandler.addLayers(
lambda.LayerVersion.fromLayerVersionArn(
this,
"layer-graphicsmagick",
"arn:aws:lambda:ap-southeast-2:391641713082:layer:graphicsmagick-layer:1"
)
);
下面是我对gm
的用法。
const pngOf = (pdf: Buffer) => {
return new Promise(
(resolve: (value: Buffer) => void, reject: (reason: any) => void) => {
gm(pdf)
.density(600, 600)
.resize(600)
.toBuffer('PNG', (err, png) => {
if (err) {
reject(err);
}
resolve(png);
});
}
);
};
1条答案
按热度按时间kmpatx3s1#
最后我用DockerImage函数解决了这个问题。
Dockerfile
为处理程序中的用法就像下面这样简单:
这是
tsconfig.json
以防万一。如果不使用typescript,则完全删除构建器,只需
COPY usr/app/src ./
。