我被困在这里太久了。我正在尝试部署使用tensorflow的微服务。名称为handler.py
的文件只有一个,下面有简单的代码:
import json
import tensorflow as tf
import numpy as np
def main(event, context):
# a = np.arange(15).reshape(3, 5)
body = {
"message": "Go Serverless v1.0! Your function executed successfully!",
"input": event
}
response = {
"statusCode": 200,
"body": json.dumps(body)
}
return response
# Use this code if you don't use the http event with the LAMBDA-PROXY
# integration
"""
return {
"message": "Go Serverless v1.0! Your function executed successfully!",
"event": event
}
"""
为了让我的工作更轻松,我正在使用serverless to deploy a microservice,但它没有说,解压缩的大小太大了。以下是我的目录:
-- handler.py
-- serverless.yml
-- requirements.txt
requirements.txt
看起来像:
numpy
tensorflow
我还试图在没有安装上述模块的情况下上传,认为lambda本身会从requirements.txt
初始化,但会得到Unable to import module 'handler': No module named 'tensorflow'
的错误。我该怎么办?我花了很多时间在此,仍然不相信AWS Lambda不会允许我这样做。
如果您想查看serverless.yml
,请看如下:
service: numpy-new-test
provider:
name: aws
runtime: python3.6
profile: nsp
role: arn:aws:iam::xxxxxxxxxxx7:role/AdminRole
functions:
numpy:
handler: handler.main
events:
- http:
path: test
method: get
答案 0 :(得分:1)
正如您从错误中提到的那样,看起来您的压缩包太大了。您收到了其他错误,因为您的脚本中有模块要求使用张量流。
请记住AWS Lambda Limits部署包大小限制为50MB。 Tensorflow package本身接近50MB,因此添加Numpy包将使其超过限制。
查看此博客,该博客对AWS Lambda中的程序包限制大小进行了一些调查
https://hackernoon.com/exploring-the-aws-lambda-deployment-limits-9a8384b0bec3