【问题标题】:AWS CDK python bundle with dependencies in requirements.txtAWS CDK python 捆绑包在 requirements.txt 中具有依赖项
【发布时间】:2021-12-18 07:40:13
【问题描述】:

我一直在玩https://github.com/aws-samples/aws-cdk-examples/tree/master/python 中的简单示例,所有项目都以 lambda-* 开头

但是,我还没有看到 aws-lambda 处理程序导入库的示例。这些库定义在requirements.txt

  1. AWS lambda 如何导入自己的requirements.txt
  2. 如果无法导入依赖项。我将它们打包成 .zip 文件。

但是,现有方法不采用 .zip 。看这个提案https://github.com/aws/aws-cdk/issues/6294

项目结构是这样的:

project/

|
|-- lambda/
|-- lambda/handler.py
|-- lambda/module1.py
|-- lambda/module2.py
|-- lambda/requirements.txt
|
|-- stack/ias_stack.py # define the Infrastructure as code
|
|-- app.py # call "ias_stack" module
| 
|-- requirements.txt

我想在文件夹“lambda/”中部署代码+依赖项

如何使用 CDK 在 Python AWS-Lambda 中导入依赖项?

这一定是可能的。 我已经将 JVM 代码库打包到 .zip 中。 Terraform 将此 .zip 推送到 AWS lambda 中。

搜索

经过搜索,我不是唯一一个面临问题的人 How to install external modules in a Python Lambda Function created by AWS CDK?

我通过创建 Lambda 层解决了问题。我将发布一个包罗万象的解决方案。

【问题讨论】:

    标签: python python-3.x aws-cdk


    【解决方案1】:

    aws-cdk.aws-lambda-python L2 结构专门为此而存在。

    这是文档:

    https://docs.aws.amazon.com/cdk/api/latest/docs/aws-lambda-python-readme.html

    Typescript 示例来自上述文档:

    import * as lambda from "@aws-cdk/aws-lambda";
    import { PythonFunction } from "@aws-cdk/aws-lambda-python";
    
    new PythonFunction(this, 'MyFunction', {
      entry: '/path/to/my/function', // required
      index: 'my_index.py', // optional, defaults to 'index.py'
      handler: 'my_exported_func', // optional, defaults to 'handler'
      runtime: lambda.Runtime.PYTHON_3_6, // optional, defaults to lambda.Runtime.PYTHON_3_7
    });
    

    它将安装来自诗歌文件、pipfile 或 requiremenets.txt 的依赖项

    【讨论】:

    • 可能值得一提的是requirements.txt必须存在于入口路径
    • 谢谢。 lambda 代码和条目位于不同的文件夹中。是的,您可以将条目放在项目的根目录下。 requirements.txt 也必须位于入口路径的根目录。这不是我想要的
    • 为什么 CDK 应用和 lambda 的要求会一样?为什么你的 lambda 需要安装 CDK?
    • @RaymondChenon 你能解释一下为什么这个答案对你不起作用吗?
    • @gshpychka,感谢您的贡献。我通过导入一个 Lambda 层来运行我的 lambda。我必须创建自己的层,其中包含大量 Python 依赖项(许多未使用)。您的解决方案没有导入 requirements.txt 中的依赖项。我正在寻找更清洁、更简单的解决方案。或者我会发布我的 Lambda 层解决方案,它很长
    猜你喜欢
    • 2016-08-31
    • 1970-01-01
    • 2015-10-04
    • 2015-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多