在AWS Lambda上部署具有Tensorflow的微服务

时间:2018-05-25 07:25:42

标签: python amazon-web-services tensorflow aws-lambda

我被困在这里太久了。我正在尝试部署使用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 

1 个答案:

答案 0 :(得分:1)

正如您从错误中提到的那样,看起来您的压缩包太大了。您收到了其他错误,因为您的脚本中有模块要求使用张量流。

请记住AWS Lambda Limits部署包大小限制为50MB。 Tensorflow package本身接近50MB,因此添加Numpy包将使其超过限制。

查看此博客,该博客对AWS Lambda中的程序包限制大小进行了一些调查

https://hackernoon.com/exploring-the-aws-lambda-deployment-limits-9a8384b0bec3