【问题标题】:AWS lambda function does not find the main app when running a local sam invoke command. How do I make sam invoke find the app.py application?运行本地 sam 调用命令时,AWS lambda 函数找不到主应用程序。如何让 sam invoke 找到 app.py 应用程序?
【发布时间】:2021-12-01 19:31:14
【问题描述】:

失败的命令是:

/usr/local/bin/sam local invoke HelloWorldFunction --template /home/peter/Dropbox2/Dropbox/clothes_recco/production/bodyestimate/.aws-sam/build/template.yaml --event "/tmp/[Local] BodyEstimate-event109.json" 

它会输出错误:

{"errorMessage": "Unable to import module 'app': No module named 'bodyestimate'", "errorType": "Runtime.ImportModuleError", "requestId": "3b3bb307-9647-4171-99a6-24dae52b3b55", "stackTrace": []}END 

我的 lambda 函数结构是:

bodyestimate/
   bodyestimate/
       template.yaml
       packaged.yaml
       app.py
       requirements.txt
       __init__.py
       Dockerfile
   test/
      unit/ 
         test_handler.py

当我运行导入 app.py 的 test_handler.py 时,pytests 通过。 在我看来,当项目作为程序运行时,sam invoke 没有找到主应用程序功能。

关于如何让 sam 本地调用来识别 app.py 中的应用有什么想法吗?

我的 template.yaml 文件如下:

【问题讨论】:

标签: python amazon-web-services aws-lambda yaml sam


【解决方案1】:

问题在于未将应用文件复制到容器中。

在 docker 文件中添加 '''COPY app.py ./''' 解决了这个问题!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    • 2020-01-26
    • 2021-06-16
    • 2023-04-05
    相关资源
    最近更新 更多