使用python3.6运行时在Lambda函数中运行Perl脚本

Ben

我正在尝试运行exiftool来读取python脚本中的图像元数据,作为AWS上lambda函数的一部分。

在运行python3.6运行时的amazon linux的ec2实例上,我可以下载该工具,将其解压缩然后轻松运行。但是,尝试从lambda函数中的python脚本执行此操作不起作用。

我的lambda函数如下:

import imageio
import subprocess
import utils
import os
import stat
import boto3

s3_client = boto3.client('s3')

# get exif tool
s3_client.download_file(
    'zipped.code',
    'Image-ExifTool-11.53.tar.gz', 
    '/tmp/Image-ExifTool-11.53.tar.gz')
p = subprocess.run('tar -zxvf Image-ExifTool-11.53.tar.gz', cwd='/tmp', shell=True)

def get_meta_data(im):
    p = subprocess.Popen(
        '/tmp/Image-ExifTool-11.53/exiftool -',
        stdout=subprocess.PIPE,
        stdin=subprocess.PIPE,
        stderr=subprocess.PIPE,
        shell=True)
    out, err = p.communicate(input=imageio.imwrite('<bytes>', im, format='jpg'))
    print(out) # b''
    print(err) # b'/bin/sh: /tmp/Image-ExifTool-11.53/exiftool: /usr/bin/perl: bad interpreter: No such file or directory\n'


def lambda_handler(event, context):
    src_key = event['src_key']
    image = utils.download_image_to_memory(src_key)
    print(get_meta_data(image))

我已经在本地运行了此代码,并且可以正常工作。如果我/usr/bin在lambda函数中打印内容,print(os.listdit('/usr/bin'))则其中没有perl可执行文件。但是,在/usr/bin具有Amazon Linux的ec2实例上目录中,perl可执行文件在那里。

我怀疑问题是我缺少perl(该工具是用perl编写的),但是考虑到lambda应该与Amazon linux映像一起运行,为什么没有perl解释器?

口渴

尝试将https://p3rl.org/AWS::Lambda中列出的ARN之一添加到“参考层”中(其中有说明)。

我自己还没有做过,但是从我看到的一切来看,它都应该起作用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

python3 导入错误:使用 sudo -u <user> python3 运行时

python3的codechef中的运行时错误(NZEC)

使用 Python 运行时在 Azure 函数中接收 TypeError

脚本可在终端中运行,但在使用ProcessBuilder运行时无法运行

在python脚本中运行powershell脚本,如何使python在运行时打印powershell输出

在Python中的运行时更改对函数的引用

如何在Python中运行时中断函数

使用 ./ 使用 python3 运行 python 脚本

Python脚本运行时间太长?

作为Cronjob运行时,Python3:configparser KeyError

Python3:从cli运行时找不到命令

当 webdriver 在使用 Angular 6 开发的站点上运行时,selenium 中的 isEnabled() 函数总是返回 true

使用python3运行脚本时出错

在python构造函数中是在编译时还是运行时运行?

当脚本在tmux中运行时使用python写入传感器读取

如何使用运行时生成的类型的已编译lambda函数进行分组

在运行时编辑shell脚本和python脚本

PHP脚本PDO在使用apache运行时不使用密码,但在另一个脚本中运行时使用

在python中运行时变量访问

在Jupyter Notebook中运行时,Python脚本中的Matplotlib图未显示在输出中

运行时在python中使用参数编译函数

Python代码中的运行时错误,用于使用函数求反

如何使用asyncio在python3中运行并行作业?

检测是否是使用python或python3运行的python程序

在嵌套函数运行时获取主函数名称-在python中

无法在azure函数运行时v1中创建python函数应用

Python3:使用 exec() 创建函数

python作为脚本运行时导入失败,但在iPython中却不行?

在Sublime Text中打开文件,然后等待直到Python脚本运行时将其关闭