Я пытаюсь запустить следующий код, чтобы прочитать сертификат с помощью openssl. Код может работать на Lambda на Node.js 8.10.
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 не поддерживает openssl во время выполнения в новом Node.js, есть ли альтернативы, которые можно использовать для выполнения команд openssl в Lambda на узле 12?