amazon-web-services - 在 Amazon linux 2 中使用 Nodejs10 在 lambda 上的 Openssl
问题描述
亚马逊 Linux 2 拉姆达
我无法在带有 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
我做了接下来的测试
- 搜索 openssl ,
which openssl
但没有成功。 - 搜索 openssl ,
find / openssl
但 Amazon Linux 2 没有此命令。 - 搜索 openssl 导航了一些目录但没有成功。
解决方案
我解决了这个问题。
我必须使用 Amazon Linux 2 从 EC2 获取二进制文件
1. 唤醒 EC2使用ami-00068cd7555f543d5 (64-bit x86) / ami-035240afa793cddbb
这个 AMI
2. 在 EC2 上打开 ssl 连接并执行whereis openssl
,你会得到这个结果
3. 你找到 openssl 的路径
4. 在你的机器上你应该执行下一个命令scp -i file.pem ec2-user@.......com:/usr/bin/openssl ./
用于获取 openssl 二进制文件
5。您应该为您的 lambda 函数创建一个层ENVIRONMENT VARIALE
并使用此值设置 PATH ,/var/lang/bin:/usr/local/bin:/usr/bin/:/bin:/opt/bin:/opt/lib
这样,您将覆盖 Amazon Linux 2 的 PATH 它将采用 /opt/lib 路径中的二进制文件openssl 层。
推荐阅读
- c# - 小数之和得到错误答案 RDLC 报告
- xpath - XPath 按名称获取具有最高数值的元素
- python - 如何从 Spotify 获取艺术家的 URI,而无需从 Spotify 手动复制艺术家的 URI
- wordpress - 页面速度即使在 Page Speed Insight 上得分 90+ 后也不会通过
- reactjs - 切换路线时反应快速浏览旧页面
- kubernetes - 关于enterprise_gateway读取数据创建的内核的问题
- string - 通过提取字符串变量的内容来创建变量,其中值变量为 lengh
- database - Firebase - 使用集合、子集合或数组?
- android - React Native WebView 在某些设备上不起作用
- html - 将媒体查询规则直接添加到 SVG 路径、多边形或矩形