首页 > 解决方案 > AWS CDK python 捆绑包,在 requirements.txt 中具有依赖项

问题描述

我一直在玩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 中。

搜索

搜索后,我不是唯一一个面临这个问题的人 如何在 AWS CDK 创建的 Python Lambda 函数中安装外部模块?

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

标签: pythonpython-3.xaws-cdk

解决方案


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

这是文档:

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

打字稿示例形成上述文档:

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 的依赖项


推荐阅读