【发布时间】:2020-01-08 17:15:17
【问题描述】:
我正在尝试运行以下代码以使用 openssl 读取证书。该代码能够在 Node.js 8.10 的 Lambda 上运行。
const util = require('util');
const exec = util.promisify(require('child_process').exec);
var pemCert = "testCert.cer";
exports.handler = async (event) => {
return execute('Get Public Key Issuer', 'openssl x509 -in ' + pemCert + ' -noout -issuer -nameopt multiline | grep organizationName')
.then(result => {
return (result);
}).catch(error => {
console.log (error);
});
};
async function execute(purpose, command) {
try {
const {
stdout,
stderr
} = await exec(command);
console.log(purpose + " : " + command);
console.log('Execute stdout:', stdout);
return stdout;
} catch (error) {
console.log(purpose + " : " + command);
console.log("Error:" + error);
throw (purpose + " failed.");
}
}
但是,在将 Lambda 与 Node.js 12.x 一起使用时,我收到以下错误:
/bin/sh: openssl: command not found
AWS 在新 Node.js 的运行时似乎不支持 openssl 是否有任何替代方案可用于在节点 12 上的 Lambda 中执行 openssl 命令?
【问题讨论】:
-
将路径更改为:__dirname + '/openSSL/openssl x509 -in ' 似乎已经解决了这个问题。
标签: node.js amazon-web-services aws-lambda openssl