【发布时间】:2021-08-05 23:19:29
【问题描述】:
我正在尝试在本地运行一个非常简单的 python lambda 函数,以了解 AWS SAM 本地调用如何工作并测试我的代码。
我有一个非常简单的文件结构,或多或少看起来像这样:
|- env/
|- lambda_function.py
|- pyproject.toml
|- setup.cfg
|- template.yaml
|- test_data.json
我的 lambda_function.py 看起来像这样:
import pandas as pd
def lambda_handler(event, context):
print(event)
print(pd.DataFrame({'c1': [1, 2, 3]}))
return {}
我的template.yaml 如下所示:
AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Resources:
MyFunction:
Type: 'AWS::Serverless::Function'
Properties:
Handler: lambda_function.lambda_handler
Runtime: python3.8
我的 setup.cfg 定义了我的 lambda 的依赖项,目前它只是 pandas。我的虚拟环境中安装了 pandas,它位于 env/lib/site-packages/...
但是,每当我运行以下命令时:
sam local invoke -e ./test_data.json
我收到以下错误:
Invoking lambda_function.lambda_handler (python3.8)
Skip pulling image and use local one: amazon/aws-sam-cli-emulation-image-python3.8:rapid-1.27.2.
Mounting /Users/XXXXXXXX/XXXXXX/XXXXXXX/[current folder] as /var/task:ro,delegated inside runtime container
START RequestId: 10680278-8001-4a51-87a5-d5fa8a2ab2c6 Version: $LATEST
Traceback (most recent call last): Unable to import module 'lambda_function': No module named 'pandas'
END RequestId: 10680278-8001-4a51-87a5-d5fa8a2ab2c6
REPORT RequestId: 10680278-8001-4a51-87a5-d5fa8a2ab2c6 Init Duration: 0.18 ms Duration: 130.39 ms Billed Duration: 200 ms Memory Size: 128 MB Max Memory Used: 128 MB
{"errorMessage": "Unable to import module 'lambda_function': No module named 'pandas'", "errorType": "Runtime.ImportModuleError", "stackTrace": []}%
(我已经删除了一些个人信息)如何让 SAM CLI 识别虚拟环境中的依赖项?
【问题讨论】:
标签: python aws-lambda aws-sam aws-sam-cli