【问题标题】:How to resolve internal imports in lambda function如何解决 lambda 函数中的内部导入
【发布时间】:2021-10-14 18:12:19
【问题描述】:

我有一个结构如下的项目:

.
├── README.md
└── src/
    ├── some_package_1/
    |   ├── setup.py
    |   └── some_module_1/
    |       ├── __init__.py
    |       ├── some_module_1.py
    ├── some_package_2/
    |   ├── setup.py
    |   └── some_module_2/
    |       ├── __init__.py
    |       ├── some_module_2.py
    ├── some_lambda/
    |   ├── lambda_function.py
    |   └── cfn-templates
    |       ├── my_template.yml

我的 lambda_function.py 看起来像这样:

from src.some_package_1.some_module_1 import some_module_1
from src.some_package_2.some_module_2 import some_module_2

def lambda_handler(event, context):
    # Ofc logic here is simplified
    some_module_1()
    some_module_2()

我的问题是:如何将位于父目录中的东西导入 lambda 函数?

我尝试了什么:按照 this 教程为我的依赖项制作 zip 存档,但是这个 lambda func 将使用 CloudFormation 模板部署,我不知道如何实现将我的包安装在一个目录中并压缩的步骤它,在 CloudFormation 模板中。

是否有任何标准可以使用 lambda 函数处理此类导入?

【问题讨论】:

  • 使用 SAM 怎么样?
  • @Marcin SAM 示例 github github.com/amazon-archives/serverless-app-examples 上的所有示例似乎都没有涵盖我的用例。我的存储库中有私有包,想知道如何在我的模板中解决它们。你能给我更多关于从哪里开始的信息吗?我应该补充一点,我通常是使用 AWS 的新手。我应该在 requirements.txt 中指定 some_module_1,还是 sam build 应该自己识别导入
  • 进展如何?包有用吗?
  • @Marcin 部分是的,我必须编写 shell 脚本来将我的其他模块安装到 some_lambda/ 目录,然后打包并部署。谢谢:)
  • 很高兴它成功了。如果是这样,我们将不胜感激。

标签: python python-3.x amazon-web-services aws-lambda amazon-cloudformation


【解决方案1】:

CloudFormation 确实支持为 lambda 自动创建 zip 包,如下所述:

为此,您必须使用aws cloudformation package 命令。

【讨论】:

  • 这看起来很有希望。非常感谢:)
  • @w8eight 没问题。请告诉我进展如何。
猜你喜欢
  • 1970-01-01
  • 2018-11-10
  • 1970-01-01
  • 2021-12-10
  • 1970-01-01
  • 1970-01-01
  • 2020-12-26
  • 2021-09-08
  • 1970-01-01
相关资源
最近更新 更多