无法在 AWS lambda 上的 @INC 中找到 URI/Escape.pm

Rin*_*ini 2 perl sh aws-lambda

我在 python 中有一个 AWS Lamba 函数,它使用 shell 脚本生成 url。shell脚本的输入参数由python代码提供。shell 脚本使用 perl 对所需的 URL 进行 URL 编码。MURI当我在本地运行时,该脚本运行良好;但是在 AWSamba 上看起来好像没有安装perl 。如果有其他方法可以做到这一点或有任何其他建议,我将不胜感激。我正在通过以下命令进行 URL 编码。我在 lambda 日志中看到的错误是:

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.
Run Code Online (Sandbox Code Playgroud)

脚本中的代码是

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")
Run Code Online (Sandbox Code Playgroud)

Dav*_*oss 6

但是在AWSamba上看起来perl MURI没有安装

你几乎是对的。这-M是一个命令行选项,告诉 Perl 加载模块。完整的模块名称是“URI::Escape”。

是的,该模块不是标准 Perl 安装的一部分,因此您需要单独安装它,作为您用来设置 lambda 运行环境的任何进程的一部分。最简单的方法可能是运行:

cpan URI::Escape
Run Code Online (Sandbox Code Playgroud)

但我不确定这将如何转化为 lambda 环境。