我正在用Python开发lambda函数。函数使用pyodbc库访问RDS数据库。为了使用库,我使用图层。我的SAM模板看起来像这样,在部署到AWS时一切正常。在
Resources:
# ODBC Lambda Layer
PyODBCLayer:
Type: AWS::Serverless::LayerVersion
Properties:
ContentUri: pyodbc_layer.zip
# Lambda function
TaskIDFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: taskid/
Handler: app.lambda_handler
Layers:
- !Ref PyODBCLayer
Role: !GetAtt TaskIDFunctionIamRole.Arn
Runtime: python3.6
Environment:
Variables:
ODBCINI: /opt/bin/odbcinst.ini
ODBCSYSINI: /opt/bin
Events:
SendTaskID:
Type: Api
Properties:
Path: /task/{id}
Method: get
当我试图用sam build && sam local invoke -d 5890 TaskIDFunction --event myEvent.json
在本地运行此程序时,问题就开始了
我得到了错误消息Unable to import module 'app': No module named 'pyodbc'
,我理解,通常的解决方案是将pyodbc
添加到需求.txt用于本地调试的文件。在
但是,在我这样做之后,sam build
命令失败,并显示以下消息
我可以pip install pyodbc
没有问题,但是由于某种原因,sam build
失败了。在
我尝试了各种组合,从模板中删除层并手动安装PyODBC,以使其在本地运行,但没有成功。在
对于本地调试,需要提取zip文件的内容并引用层的文件路径。在
我创建了一个名为lambda layers的文件夹,并提取了该文件夹中的zip文件内容
提供文件夹路径模板.yaml文件
修改模板.yaml归档到
相关问题 更多 >
编程相关推荐