我有一个带有无服务器框架的"hello-world“python项目。我正在尝试部署一个需要numpy的简单lambda函数。但是目前,当我运行sls deploy并尝试调用lambda函数时,我会得到一个internal server error。
以下是我的项目结构:
test_api/
serverless.yml
test_api.py
Pipfile在test.py中,我有:
import numpy as np
def handler(event, context):
return {
"statusCode": 200,
"body": f"numpy version = {np.__version__}"
}在我的serverless.yml里
service: test_api
frameworkVersion: "3"
provider:
name: aws
runtime: python3.8
region: eu-west-3
stage: dev
functions:
test:
handler: tes_api.handler
events:
- http:
path: test_api
method: get
cors: true
plugins:
- serverless-python-requirements在Pipfile中:
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true
[dev-packages]
[packages]
numpy = "*"
[requires]
python_version = "3.8"当我部署时,我没有错误,但是当我调用端点时,我得到:

当我在AWS上测试它时:

如果我从Pipfile和lambda中删除numpy (我只是在lambda中返回"hello“),那么一切都很好。
为什么要得到这个错误,以及如何修复它?
发布于 2022-06-16 19:08:11
这是您的serverless.yml文件中的错误吗?
你有
handler: tes_api.handler 我想应该是test_api.handler
发布于 2022-11-03 16:20:16
从项目的结构来看,您似乎错过了文献资料中提到的一个重要步骤--不使用package.json。您需要在项目目录中运行以下命令:
$ sls plugin install -n serverless-python-requirements这将自动将插件添加到您的项目的
package.json和插件部分的serverless.yml。
如果希望从头开始,那么在项目目录的active venv中运行以下命令:
$ npm init然后
$ npm install --save serverless-python-requirements我将在您的serverless.yml中添加以下内容
# serverless.yml
plugins:
- serverless-python-requirements
custom:
pythonRequirements:
dockerizePip: non-linux然后在您的venv处于活动状态时进行部署。请注意,serverless-python-requirements需要码头才能工作。
https://stackoverflow.com/questions/72645324
复制相似问题