Perl-скрипт в лямбда-функциях Amazon Web Services - PullRequest
0 голосов
/ 17 мая 2018

Есть ли возможность запуска Perl-программы из лямбда-функций в Amazon Web Services ?

1 Ответ

0 голосов
/ 18 мая 2018

В Lambda вы можете запускать практически все, что угодно, если оно совместимо с двоичными данными со средой выполнения Lambda и может вписываться в пакет развертывания.Но вы должны обернуть его в функцию, написанную на одном из поддерживаемых языков.Это на удивление более эффективно и эффективно, чем вы могли бы ожидать, особенно если вы можете написать свой код на другом языке, чтобы он мог порождаться один раз для каждого контейнера и обмениваться сериализованными сообщениями с функцией Lambda.Или вы можете просто запустить внешнюю программу один раз за вызов.

В Lambda-консоли есть «план», называемый node-exec, который иллюстрирует простой пример.Его источник таков:

'use strict';

const exec = require('child_process').exec;

exports.handler = (event, context, callback) => {
    if (!event.cmd) {
        return callback('Please specify a command to run as event.cmd');
    }
    const child = exec(event.cmd, (error) => {
        // Resolve with result of process
        callback(error, 'Process complete!');
    });

    // Log process stdout and stderr
    child.stdout.on('data', console.log);
    child.stderr.on('data', console.error);
};

Этого достаточно, чтобы дать вам представление о том, как это можно сделать.

Системный Perl в среде выполнения Lambda / Node 6 - perl5 (редакция5 версия 16 subversion 3).

Там, где задачу можно одинаково эффективно выполнить с одним из поддерживаемых на родном языке языков, использование одного из поддерживаемых языков - это почти наверняка путь ... и если вы знаете Perlи, в частности, если вы также работали с асинхронными средами, такими как Mojolicious, вы, возможно, не так уж далеки от возможности продуктивно работать с Node за относительно короткое время.

Но один пример, когда запуск Perl в Lambda былподходящим выбором для меня было декодирование устаревших данных, сериализованных с Storable::freeze() и затем закодированных в base64.Storable - это формат сериализации, специфичный для Perl.Лямбда-функция My Node передает данные события в сценарий Perl (порожденный child_process.exec) как JSON на STDIN, который записывает декодированный результат (также в JSON) в STDOUT, где код Node захватывает его и вызывает обратный вызов.Скрипт Perl продолжает выполняться между вызовами.Время выполнения для всего вызова в нагретом контейнере составляет <4 мс. </p>

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