我使用以下命令创建了一个AWS Lambda层:
aws lambda publish-layer-version --layer-name TensorflowLambdaLayer --compatible-runtimes go1.x --zip-file fileb://tensorflowLayer.zip
这是生成的ARN:`arn:aws:lambda:us-east-1:757767972066:layer:TensorflowLambdaLayer:1
当我尝试通过AWS SAM运行使用 Tesnroflow 库的Lambda函数时,它陷入了“安装”步骤:
2019-07-18 15:51:29 Mounting /tmp/tmpgz8cb80s as /var/task:ro,delegated inside runtime container
一旦我用Ctrl + C
终止它,我将收到以下消息:
^C/var/task/bin/inference: error while loading shared libraries: libtensorflow.so: cannot open shared object file: No such file or directory
Makefile:82: recipe for target 'run-inference' failed
这是我 template.yml 的关键部分:
Parameters:
LambdaTensorflowLayerArn:
Type: String
Default: 'arn:aws:lambda:us-east-1:757767972066:layer:TensorflowLambdaLayer:1'
LambdaFFMPEGLayerArn:
Type: String
Default: 'arn:aws:lambda:us-east-1:757767972066:layer:ffmpeg:1'
Inference:
Type: 'AWS::Serverless::Function'
Properties:
Handler: bin/inference
Runtime: go1.x
Timeout: 300
CodeUri: ./bin/inference.zip
Layers:
- Ref: LambdaFFMPEGLayerArn
- Ref: LambdaTensorflowLayerArn
我不确定是什么原因造成的
答案 0 :(得分:0)
我在邮件中遇到了相同的问题
加载共享库时出错:libtensorflow.so.1:无法打开共享库文件:没有这样的文件或目录
在我的情况下,它正在尝试将TensorFlow与go一起使用。问题在于,如果将软件包保留在/ usr / local(推荐)或其他路径中,则libtensorflow.so的official installation(和libtensorflow_framework.so)似乎不起作用。按照/ usr / local的建议使用ldconfig也没有帮助。 另外,在设置LD_LIBRARY_PATH之前,gcc的基本示例不起作用(即使使用-L也是如此)。
$ gcc -I/usr/local/include -L/usr/local/lib hello_tf.c -ltensorflow -o hello_tf
$ ./hello_tf
./hello_tf: error while loading shared libraries: libtensorflow.so.1: cannot open shared object file: No such file or directory
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
$ ./hello_tf
Hello from TensorFlow C library version 1.14.0
$ unset LD_LIBRARY_PATH
$ ./hello_tf
./hello_tf: error while loading shared libraries: libtensorflow.so.1: cannot open shared object file: No such file or directory
在我的情况下,这是/ usr / local的内容
$ ll /usr/local/lib
total 245424
lrwxrwxrwx. 1 root root 28 dic 31 1999 libtensorflow_framework.so -> libtensorflow_framework.so.1
lrwxrwxrwx. 1 root root 33 dic 31 1999 libtensorflow_framework.so.1 -> libtensorflow_framework.so.1.14.0
-r-xr-xr-x. 1 root root 34748520 dic 31 1999 libtensorflow_framework.so.1.14.0
lrwxrwxrwx. 1 root root 18 dic 31 1999 libtensorflow.so -> libtensorflow.so.1
lrwxrwxrwx. 1 root root 23 dic 31 1999 libtensorflow.so.1 -> libtensorflow.so.1.14.0
-r-xr-xr-x. 1 root root 216546752 dic 31 1999 libtensorflow.so.1.14.0
另一种解决方案是手动创建到/ usr / lib的符号链接。 我不知道如何在无服务器配置中执行此操作。 打算在评论中写这个,但是仍然没有足够的代表。