Не удается найти URI / Escape.pm в @INC на лямбда-AWS - PullRequest
0 голосов
/ 10 февраля 2019

У меня есть функция AWS Lamba в python, которая генерирует URL с помощью сценария оболочки.Входные параметры для сценария оболочки предоставляются кодом Python.Скрипт оболочки использует perl для URL, кодирует необходимый URL.Этот скрипт работает нормально, когда я запускаю локально, однако в AWS lamba выглядит так, как будто perl MURI не установлен.Был бы признателен, если есть альтернативный способ сделать это или любые другие предложения, чтобы пойти по этому поводу. Я делаю URL-кодирования с помощью следующих команд.Ошибка, которую я вижу в лямбда-логах:

Can't locate URI/Escape.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .).
BEGIN failed--compilation aborted.

Код в скрипте:

cred=$(perl -MURI::Escape -e 'print uri_escape($ARGV[0]);' "$PARM1/$DATE/$PUBLIC_REGION/$SERVICE_NAME/request")
FULLDT=$(perl -MURI::Escape -e 'print uri_escape($ARGV[0]);' "$FULLDT")
SESSION_TOKEN=$(perl -MURI::Escape -e 'print uri_escape($ARGV[0]);' "$SESSION_TOKEN")

1 Ответ

0 голосов
/ 10 февраля 2019

однако на AWS lamba похоже, что perl MURI не установлен

Вы почти правы.-M - это опция командной строки, сообщающая Perl о загрузке модуля.Полное имя модуля - «URI :: Escape».

И, да, этот модуль не является частью стандартной установки Perl, поэтому вам необходимо установить его отдельно, как часть любого используемого вами процесса.настроить среду, в которой работает ваша лямбда. Вероятно, самый простой подход - это запустить:

cpan URI::Escape

Но я не уверен, как это отразится на среде лямбда.

...