【发布时间】: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
我做了接下来的测试
- 使用
which openssl搜索 openssl,但未成功。 - 使用
find / openssl搜索 openssl,但 Amazon Linux 2 没有此命令。 - 搜索 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