我尝试使用serverless
框架来创建和部署AWS Lambda函数。我在项目的根目录下创建了一个名为vendored
的文件夹,并安装了(使用pip install
)函数依赖项。但是,每当我尝试运行它时(使用serverless function run
),我得到一个错误:
Serverless: Running isNewUser...
Serverless: WARNING: This variable is not defined: region
Serverless: -----------------
Serverless: Failed - This Error Was Returned:
Serverless: {"exception": ["Traceback (most recent call last):\n", " File \"/home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler\", line 170, in \n handler = import_program_as_module(path)\n", " File \"/home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler\", line 149, in import_program_as_module\n module = make_module_from_file('lambda_handler', handler_file)\n", " File \"/home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler\", line 129, in make_module_from_file\n py_source_description\n", " File \"/home/fernando/workspace/os-cac/isNewUser/handler.py\", line 11, in \n from vtex.order import Order\n", "ImportError: No module named vtex.order\n"], "success": false} Serverless: Exception message from Python
Serverless: Traceback (most recent call last): , File "/home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler", line 170, in handler = import_program_as_module(path) , File "/home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler", line 149, in import_program_as_module module = make_module_from_file('lambda_handler', handler_file) , File "/home/fernando/.nvm/versions/node/v5.10.1/bin/serverless-run-python-handler", line 129, in make_module_from_file py_source_description , File "/home/fernando/workspace/os-cac/isNewUser/handler.py", line 11, in from vtex.order import Order ,ImportError: No module named vtex.order `
vtex.order
是在中导入的模块处理程序.py在
我的项目结构如下:
/root/
|
|--_meta/
|--vendored/
|--dependencies...
|--function-name/
|--handler.py
|--event.json
|--s-function.json
|--requirements.txt
|--admin.env
|--package.json
|--s-project.json
|--s-resources-cf.json
|--s-project.json
我做错什么了吗?我是否应该配置我的函数以包含vendorded的依赖项?在
我建议使用serverless-python-requirements插件来包含通过
pip
安装的包以下是一些可以使其发挥作用的步骤:
s-function.json
中的处理程序项在其路径中具有函数名:"handler": "function-name/handler.handler",
在
handler.py
中添加以下内容:就这样。告诉我是否有效。在
我按照以下步骤使用依赖项进行部署:
在项目根目录
mkdir .vendor
在中添加依赖项要求.txt{/手动使用
更新无服务器.yml文件
package: include: - .vendor/**
import sys sys.path.insert(0, './.vendor')
pip install -r requirements.txt -t .vendor
现在,
serverless deploy
将上载具有依赖关系的函数。在相关问题 更多 >
编程相关推荐