AWS Lambda函数运行自定义可执行文件

时间:2018-04-04 13:08:17

标签: amazon-web-services aws-lambda executable

我需要运行自定义文件解析器来实时解析传入的文件以供进一步上游使用。解析器是一个可执行文件并带有一些参数。我写了以下lambda测试函数:

import subprocess, sys
import os

def lambda_handler(event, context):
    path = os.environ['LAMBDA_TASK_ROOT']
    subprocess.call([path+'/*exefile*',*args*])

但是我收到错误,这甚至没有任何输入,这意味着它与lambda环境中新文件的写入无关:

PermissionError errno13 Permission denied

在我看来,它根本不允许运行可执行文件。对于IAM角色,我已经给它完整的lambda访问权限。自定义exe文件不是为linux编译的,但如果出现问题,我不会再收到错误吗?

帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

根据这个AWS blog post,它需要为亚马逊的Linux编译:

  

如果您编译自己的二进制文件,请确保它们是   静态链接或构建用于匹配的Amazon Linux版本。   AWS Lambda中使用的当前版本的Amazon Linux可以   始终可以在Lambda文档的“支持的版本”页面上找到。