【问题标题】:How files in a lambda layer will be copied to the /opt/bin directory?如何将 lambda 层中的文件复制到 /opt/bin 目录?
【发布时间】:2019-09-20 04:02:58
【问题描述】:

我正在使用 AWS Lambda 中的 PDF 到图像转换项目,但遇到了一些问题,因为 AWS lambda 在环境中没有像 ImageMagick 这样的相关二进制文件,所以我关注了一些链接和 StackOverflow 问题并提出相关的二进制文件作为一个层,我必须使用 Ghostscript 编译的二进制文件。

层 zip 包含这样的文件

GhostScript.zip > bin > gs

我有一个包装库调用pdf2png,它会执行一个子进程来进行转换,这个子进程使用的命令是上面提到的gs 实用程序,但是我的问题是我提到的路径对于实用程序错误,它会抛出一个错误提示,

错误:spawn /opt/bin/bin/gs ENOENT

所以我想知道的是如何将 lambda 层文件复制到/opt/bin/ 目录?我应该如何替换路径?

对应代码,

gs()
    .batch()
    .nopause()
    .option('-r' + options.density)
  // .option('-dDownScaleFactor=2')
    .option('-dFirstPage=' + page)
    .option('-dLastPage=' + page)


    .executablePath('/opt/bin/bin/gs')


    .device('png16m')
    .output(output)
    .input(filepath)
    .exec(function (err, stdout, stderr) {

【问题讨论】:

    标签: node.js aws-lambda imagemagick aws-lambda-layers


    【解决方案1】:

    在我的情况下可执行路径必须是这样的

    .executablePath('/opt/bin/gs')
    

    已经将层内bin文件夹中的文件直接解压到/opt/bin/文件夹中。

    【讨论】:

    • 如果这是面向公众的 SaaS 实施,那么您需要遵守 AGPL 的条款,您应该检查许可证并确保您符合要求。这也不是 Ghostscript 问题。
    • 对不起,我不明白为什么这需要遵守 AGPL 许可证?是因为我使用 ImageMagick 这是一个开源包还是任何其他原因?我对此知之甚少。
    • Ghostscript 在 AGPL (v3) 下获得许可,如果您使用 Ghostscript,则需要遵守 AGPL 的规定。 ImageMagick 使用自己的许可证,您也应该确保遵守该许可证的条款。如果您使用任何开源软件,则需要遵守所有条款。如果这是供个人使用,那么最简单的解决方案可能是开源您的代码,这几乎总是涵盖您,如果它以任何方式商业,那么您需要做一些工作并检查许可证。您可能需要律师的帮助。
    猜你喜欢
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    • 2020-10-09
    • 2011-09-10
    • 2021-03-04
    相关资源
    最近更新 更多