我的 lambda 使用请求。我有一个 package.zip 文件,当我使用 cdk 进行部署时,该文件可以正常工作。我尝试了多种方法来重现我拥有的 package.zip 。我尝试过的所有方法都失败了。一旦 lambda 与我重新创建 package.zip 的其他尝试一起部署,我就会收到错误
"errorMessage": "Unable to import module 'lambdaHanlder': No module named 'requests'"
我使用
pip install --target=package -r requirements.txt
创建包文件夹,然后将文件压缩到该文件夹中。
我的requirements.txt文件:
constructs>=10.0.0,<11.0.0
requests
创建 lambda 层和 lambda:
const lambdaLayer = new lambda.LayerVersion(this, 'layer', {
code: lambda.Code.fromAsset('package.zip'),
description: 'Libraries needed.'
});
const fn = new lambda.Function(this, 'function', {
runtime: lambda.Runtime.PYTHON_3_9,
code: lambda.Code.fromAsset('lib/lambda'),
handler: 'lambda.handler',
description: new Date().toString(),
layers: [lambdaLayer]
})
我正在为我的项目创建自述文件,并且希望能够重现有效的 pacakge.zip 文件。我有一个 package.zip 文件允许我的 lambda 使用请求,所以我知道这种方式可以完成并且有效。除了我一直在尝试的一些组合之外,我不知道如何创建 package.zip。
我使用 pyenv 使用了不同的 python 版本。 3.7、3.8、3.9、3.11 和 3.12。我也尝试过切换我的节点版本。
LayerVersion
构造不会捆绑您的依赖项。请改用 @aws-cdk/aws-lambda-python-alpha
包中的 PythonLayerVersion。
aws-cdk-lib/aws_lambda
包中的结构不会为您捆绑:Function
、LayerVersion
。@aws-cdk/aws-lambda-python-alpha
包中的构造具有捆绑选项:PythonFunction
、PythonLayerVersion
。CDK 还具有 Nodejs 和 Go lambda 函数的依赖友好结构。