首页 > 解决方案 > 如何在 sam 本地环境中使用依赖项?

问题描述

我可以使用 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

标签: pythonpandasaws-lambdaaws-sam

解决方案


如果您使用 创建 sam 应用程序sam init,则项目中应该有一个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


推荐阅读