代码之家  ›  专栏  ›  技术社区  ›  Edward Jill

在AWS Lambda部署带有Tensorflow的微服务

  •  1
  • Edward Jill  · 技术社区  · 7 年前

    我被困在这里太久了。我正在尝试部署一个使用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本身将从 要求。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 回复  |  直到 7 年前
        1
  •  1
  •   ScottMcC    7 年前

    正如您从收到的错误中提到的,您的压缩包看起来太大了。您收到了另一个错误,因为脚本中有使用tensorflow的模块要求。

    记住 AWS Lambda Limits 具有50MB部署包大小限制。这个 Tensorflow package 它本身的容量接近50MB,因此添加Numpy软件包将远远超过这个限制。

    看看这个博客,它对AWS Lambda中的包限制大小进行了一些调查

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