AWS Lambda openssl x509 ошибка с Node.js 12.x - PullRequest
0 голосов
/ 08 января 2020

Я пытаюсь запустить следующий код, чтобы прочитать сертификат с помощью 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?

1 Ответ

0 голосов
/ 08 января 2020

Цитирование из электронного письма, отправленного AWS

"Мы обновляем среду выполнения AWS Lambda и AWS Lambda@Edge для включения последних версий Amazon Linux и пакетов программного обеспечения.

Большинство функций получат преимущества от улучшений в этом обновлении, не требуя каких-либо действий. Однако в редких случаях обновления пакетов могут вызывать проблемы совместимости. Функции, которые содержат библиотеки или код приложения, скомпилированные по очень конкретным c базовых пакетов ОС, в частности пакеты для openssl , glib c или других системных библиотек, могут быть потенциально затронуты.

Начиная с 14 мая 2019 года, вы можете протестировать свои функции с помощью новая среда выполнения. С 21 мая 2019 года все новые функции или обновления существующих функций будут использовать новую среду выполнения. Ваши существующие функции автоматически перейдут на использование новой среды выполнения 11 июня 2019 года. "

Другой вариант будет использовать AWS Лямбда-слои (https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html)

Подробные шаги вы можете увидеть здесь - NPM пакет `pem` не работает в AWS lambda NodeJS 10.x (приводит к ошибке OpenSSL)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...