【问题标题】:How to use dependencies in sam local environment?如何在 sam 本地环境中使用依赖项?
【发布时间】:2021-09-13 06:43:26
【问题描述】:

我可以使用 sam local start-api 在本地运行 lambda 函数。这对我来说很好。现在我想使用 pandas 等库,但它给了我错误:

Invalid lambda response received: Invalid API Gateway Response Keys: {'errorMessage', 'stackTrace', 'errorType'} in {'errorMessage': 
"Unable to import module 'read_pharma': No module named 'pandas'", 'errorType': 'Runtime.ImportModuleError', 'stackTrace': []}       

下面是我的代码:

import boto3, json
import pandas as pd

def lambda_handler(event, context):
    return{
          'statusCode': 200, 
          'message': 'Hello World'
}

我已经尝试过创建虚拟环境,但没有成功。如何在这里使用依赖项?

这是我的目录:

Backend-Directory
    organisation_manag
        abc.py
        xyz.py
    user_manag
        pqr.py
        ust.py
    requirements.txt
    template.yaml

【问题讨论】:

  • 请给出重现错误的最少步骤。
  • 你的CodeUri 是什么?

标签: python pandas aws-lambda aws-sam


【解决方案1】:

如果您使用 sam init 创建了您的 sam 应用程序,则项目中应该有一个 requirements.txt 文件。一旦你把pandas放进去,你就可以运行了

sam build
# or sam build --use-container

sam local....

sam build 将处理依赖项的安装。

更新

由于您更新了问题描述,您的问题似乎是如何在两个函数之间共享requirements.txt

假设您的原始函数处理程序是 abc.handlerpqr.handler

你可以像这样制作你的模板:

FuncA:
  Properties:
    CodeUri: .
    Handler: organisation_manag.abc.handler

FuncB:
  Properties:
    CodeUri: .
    Handler: organisation_manag.pqr.handler

【讨论】:

  • 是的,它在默认目录中运行良好。但是我的目录不同,它会导致错误。我已经编辑了我的问题并包含了我的目录路径。
  • 您的目录有何不同?
  • 我已经放置了我的目录路径,当我运行 sam build 时,它会询问每个目录(organisation_manag、org_manag)中的 requirements.txt 文件。我怎样才能只保留一个 requirements.txt 文件并达到相同的效果?
  • 不确定这是什么意思,你能在你的问题描述中举个例子吗?
猜你喜欢
  • 2017-05-27
  • 2018-06-14
  • 2019-05-27
  • 2020-04-29
  • 2011-05-22
  • 2018-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多