无法重现python cdk层zip

问题描述 投票:0回答:1

我的 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。我也尝试过切换我的节点版本。

python amazon-web-services lambda aws-cdk aws-lambda-layers
1个回答
0
投票

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 函数的依赖友好结构。

© www.soinside.com 2019 - 2024. All rights reserved.