我从一个 cdk 项目(打字稿)开始,我想了解如何部署一个用 python 编写的依赖于外部库(请求)的 lambda 函数。另外,我想知道在相同或不同堆栈中使用多个 lambda 时推荐的做法/文件夹结构。
@aws-cdk/aws-lambda-python-alpha 模块的
PythonFunction
构造将打包 Lambda 的依赖项。该模块关于 packaging 的文档说:
如果入口路径中存在
、requirements.txt
或Pipfile
,则该构造将处理在 Lambda 兼容的 Docker 容器中安装所有必需的模块...仅当源目录中的文件存在时,才会重新创建和发布 Python 包已经改变了。poetry.lock
选择适合您的用例的文件结构。重要的是
PythonFunction
构造的 entry
属性必须指向您的 Lambda 代码:
new PythonFunction(this, 'MyFunction', {
entry: '/path/to/my/function', // required
runtime: Runtime.PYTHON_3_8, // required
index: 'my_index.py', // optional, defaults to 'index.py'
handler: 'my_exported_func', // optional, defaults to 'handler'
});