问题描述: 当使用AWS Chalice创建Restful API时,在本地运行时路由正常工作,但是一旦部署到远程AWS Lambda,路由就无法正常工作。
解决步骤: 出现这种情况,应首先检查以下几个方面:
检查Python版本是否是AWS Lambda支持的版本,AWS Lambda现在支持Python 3.6、3.7和3.8。如果你的Python版本不符合要求,需要更改Python版本。
检查你的AWS权限是否正确设置,确保你有足够的权限部署和运行Lambda函数。
检查AWS Lambda和Chalice依赖库的版本是否一致,尤其是安装的AWS SDK的版本是否与AWS Lambda一样,否则可能会导致错误。
尝试在AWS CLI控制台中手动测试部署的Lambda函数,以确定问题是否源自代码本身。
以下是一个例子,可能会在部署时遇到路由无法正常工作的问题:
from chalice import Chalice
app = Chalice(app_name='myapp')
@app.route('/api/{name}', methods=['GET'])
def api_get(name):
return {'hello': name}
在部署到AWS Lambda时,路由可能会因为缺少部分依赖库而无法正常工作。因此,需要在Chalice目录下添加一个requirements.txt文件,并将安装AWS SDK添加到其中,如下所示:
aws-sdk
然后运行以下命令来安装依赖:
pip install -r requirements.txt -t ./
安装后,重新部署应用程序:
chalice deploy
这样,在部署后,该路由就能够正常工作了。