在将numpy安装到目录后,AWS Lambda中缺少必需的依赖项[' numpy'],如何修复?

时间:2018-05-22 14:57:30

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

我正在尝试将我的python代码上传到AWS Lambda。我一直在按照本指南创建部署包(https://docs.aws.amazon.com/lambda/latest/dg/lambda-python-how-to-create-deployment-package.html)。

我创建了一个文件夹' project-dir'在我的桌面上移动我的python文件' Twilio_Alerts_AWS.py'进入文件夹。我使用了命令:

'archive.zip'

将我的所有库安装到该文件夹​​中。接下来,我突出显示了所有内容并点击“压缩”#39;通过右键单击文件夹中突出显示的文件。这会生成一个名为' archive'

的压缩文件

我将Unable to import module 'Twilio_Alerts_AWS': Missing required dependencies ['numpy'] 放在AWS上的S3存储桶中并将其调用到AWS Lambda中。即使我已将numpy安装到文件夹中,我仍然收到错误from twilio.rest import Client import time import datetime import requests import pandas as pd from pandas.io.json import json_normalize def lambda_handler(event, context): # Your Account SID from twilio.com/console account_sid = "xxx" # Your Auth Token from twilio.com/console auth_token = "xxx" client = Client(account_sid, auth_token) current_datetime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') headers = { 'Accept': 'application/json', 'Content-Type': 'application/json', 'x-api-key': 'xxx', 'x-organization-id': 'xxx', 'x-facility-id': 'xxx', 'x-user-id': 'xxx', } orders_staging_api_call = requests.get('URL', headers=headers, verify=False) consumers_staging_api_call = requests.get('URL', headers=headers, verify=False) inventory_staging_api_call = requests.get('URL', headers=headers, verify=False) lst = ["+1234567890"] ##Consumers API Alert if consumers_staging_api_call.status_code !=200: for i in lst: message = client.messages.create( to=i, from_="+1234567890", body="API connection between A and B has failed for: Consumers.Datetime of check:{}".format(current_datetime)) time.sleep(5) print(message.sid) else: print('done')

不确定我做错了什么。

我正在尝试上传的代码:

    Sub Reset()
Static SchedSave
    If SchedSave <> 0 Then
    Application.OnTime SchedSave, "SaveWork", , False
    End If
    SchedSave = Now + TimeValue("00:10:00")     '<--- Ten minutes
    Application.OnTime SchedSave, "SaveWork", , True
End Sub

Sub SaveWork()
MsgBox "Run the close workbook macro here."
'ThisWorkbook.Save
'Application.Quit
'ThisWorkbook.Close
End Sub

编辑: 使用osx机器。

3 个答案:

答案 0 :(得分:2)

这里的回答帮助了我:Pandas in AWS lambda gives numpy error

TLDR:在mac上编译的libs不能在linux上工作,所以你需要确保以某种方式获得linux版本(例如Docker)。

答案 1 :(得分:1)

AWS文档的建议是将.whl文件用于某些依赖项。

您可以从python项目下载文件中解压缩numpy .whl文件,这里有更完整的答案

Pandas in AWS lambda gives numpy error

答案 2 :(得分:0)

这里是在AWS lambda中仅提供Numpy的一种简短方法:只需将Amazon公开提供的scipy-numpy层添加到您的lambda函数中(在AWS Lambda中:layers-> add layer-> numpy scipy层应得到建议)。

如果您需要编译几个软件包时遇到问题,我想向一个有用的docker容器添加一个提示,该容器可用于获取针对Linux编译的软件包: https://hub.docker.com/r/lambci/lambda/

还有其他解决方案,也可以解决编译问题,如果您在项目中使用无服务器,则其中之一是无服务器python要求npm-package。 但是我经历过,如果您在具有无服务器和无服务器python要求的自定义gitlab-runner中运行无服务器部署命令(出于ci / cd的目的),则此方法将不起作用。 在这种情况下,我目前正在使用AWS Lambda图层来提供所需的依赖关系。这是为熊猫创建图层的一个很好的解释:https://medium.com/@qtangs/creating-new-aws-lambda-layer-for-python-pandas-library-348b126e9f3e

我的回答可能已经走得太远了,但是上述选项可能对其他来这里的读者有用。