我在python中有一个AWS Lamba函数,该函数使用shell脚本生成一个url。
shell脚本的输入参数由python代码提供。
Shell脚本使用perl来对所需的URL进行URL编码。
当我在本地运行时,此脚本运行良好;但是在AWS lamba上似乎未安装perl MURI
。如果有其他方法可以做到这一点,或者有其他建议可以解决。我正在通过以下命令进行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.
脚本中的代码为
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")
答案 0 :(得分:2)
但是在AWS lamba上似乎未安装perl MURI
您几乎是正确的。 -M
是一个命令行选项,告诉Perl加载模块。完整的模块名称是“ URI :: Escape”。
是的,该模块不是标准Perl安装的一部分,因此您将需要单独安装该模块,以作为用于设置运行lambda的环境的任何过程的一部分进行安装。最简单的方法是可能要运行:
cpan URI::Escape
但是我不确定这将如何转换为lambda环境。