【问题标题】:Openssl on lambda with Nodejs10 in Amazon linux 2在 Amazon linux 2 中使用 Nodejs10 在 lambda 上的 Openssl
【发布时间】:2020-04-04 23:20:18
【问题描述】:

亚马逊 Linux 2 lambda

我无法在带有 node10.x 运行时的 lambda 中通过控制台调用执行 OpenSSL。 AWS 将保留对 node8.10 的支持,我有一个无服务器平台,它使用 OpenSSL 和 node8.10 的控制台调用

我的代码和下一个类似

var exec = require('child_process').exec;

exports.handler = async (event) => {
    // TODO implement
    var queryOpenssl = "echo gatos | openssl base64"
    exec(queryOpenssl, function (error, stdout, stderr) {
        var flgError = !!error
        var flgStdout = !!stdout
        var flgStderr = !!stderr
        console.log("flgError", flgError)
        console.log("flgStdout", flgStdout)
        console.log("flgStderr", flgStderr)
        console.log("stdout : ", stdout)
        console.log("error : ", error)
        console.log("stderr : ", stderr)
        const response = {
            statusCode: 200,
            body: JSON.stringify('Hello from Lambda!'),
        };
        return response;
    })
};

回复总是command not found: openssl

我做了接下来的测试

  1. 使用 which openssl 搜索 openssl,但未成功。
  2. 使用 find / openssl 搜索 openssl,但 Amazon Linux 2 没有此命令。
  3. 搜索 openssl 导航到一些目录没有成功。

【问题讨论】:

  • 我相信这个答案可能会对你有所帮助 Luis:stackoverflow.com/a/59166043/3968358。在那个答案中,cURL 给出了未找到的命令(在您的情况下与 openssl 相同)。因此,您有 2 个选择:1)在 AWS Lambda 中使用本机二进制包或 2)使用 nodejs 请求或 http 内置模块。 Lambda 在 VM 之上创建一个容器来运行您的代码,因此它不像在普通主机上运行应用程序代码。
  • 谢谢!我得到了带有 Amazon Linux 2 的 EC2 的二进制文件。在层中复制二进制文件并设置环境变量 PATH 它的工作

标签: amazon-web-services openssl amazon-linux-2


【解决方案1】:

我解决了这个问题。

我必须使用 Amazon Linux 2 从 EC2 获取二进制文件
1.唤醒EC2ami-00068cd7555f543d5 (64-bit x86) / ami-035240afa793cddbbTake this AMI
2.在EC2打开ssl连接,执行whereis openssl,你会得到这个result
3.你找到openssl的路径
4. 在你的机器上你应该执行下一个命令scp -i file.pem ec2-user@.......com:/usr/bin/openssl ./ 来获取 openssl 二进制文件
5. 您应该为您的 lambda 函数创建一个 layer 并使用此值设置 ENVIRONMENT VARIALE PATH /var/lang/bin:/usr/local/bin:/usr/bin/:/bin:/opt/bin:/opt/lib ,这样,您将覆盖 Amazon Linux 2 的 PATH 并且它将采用 /opt/lib 路径中的二进制文件是层的openssl。

【讨论】:

  • 不工作,二进制文件只是我创建的 zip 文件并上传到 AWS Lambda 层的一个文件。更新了 PATH 以使用 openssl 但 Lambda 函数仍然无法识别那些二进制文件......有什么帮助吗?
  • 当然,你的堆栈是什么?
猜你喜欢
  • 2022-08-10
  • 1970-01-01
  • 2018-11-11
  • 2020-11-14
  • 2021-02-24
  • 2021-09-03
  • 2022-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多